You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2001/07/09 17:20:17 UTC

cvs commit: xml-xerces/perl/t DOMException.t IDOMParser.t IDOM_DOMException.t SAXException.t

jasons      01/07/09 08:20:17

  Added:       perl/Xerces_headers/dom DOM_DOMException.hpp
                        DOM_RangeException.hpp
               perl/Xerces_headers/idom IDOM.hpp IDOM_Attr.hpp
                        IDOM_CDATASection.hpp IDOM_CharacterData.hpp
                        IDOM_Comment.hpp IDOM_DOMException.hpp
                        IDOM_DOMImplementation.hpp IDOM_Document.hpp
                        IDOM_DocumentFragment.hpp IDOM_DocumentType.hpp
                        IDOM_Element.hpp IDOM_Entity.hpp
                        IDOM_EntityReference.hpp IDOM_NamedNodeMap.hpp
                        IDOM_Node.hpp IDOM_NodeFilter.hpp
                        IDOM_NodeIterator.hpp IDOM_NodeList.hpp
                        IDOM_Notation.hpp IDOM_ProcessingInstruction.hpp
                        IDOM_Range.hpp IDOM_RangeException.hpp
                        IDOM_Text.hpp IDOM_TreeWalker.hpp
               perl/Xerces_headers/parsers IDOMParser.hpp
               perl/t   DOMException.t IDOMParser.t IDOM_DOMException.t
                        SAXException.t
  Log:
  New headers/tests for IDOM support and Exception handling
  
  Revision  Changes    Path
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_DOMException.hpp
  
  Index: DOM_DOMException.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_DOMException.hpp,v $
   * Revision 1.1  2001/07/09 15:20:04  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.7  2000/03/02 19:53:54  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.6  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.5  2000/02/10 19:52:08  abagchi
   * Added docs for enum
   *
   * Revision 1.4  2000/02/06 07:47:28  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.3  2000/02/04 05:46:31  andyh
   * Change offsets and lengths form signed to unsigned
   *
   * Revision 1.2  2000/01/05 01:16:06  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:53  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:44:14  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  // #ifndef DOMException_HEADER_GUARD_
  // #define DOMException_HEADER_GUARD_
  
  // #include <util/XercesDefs.hpp>
  // #include <dom/DOMString.hpp>
  
  /**
    * Encapsulate a general DOM error or warning.
    *
    * <p> The DOM will create and throw an instance of DOMException
    * when an error condition is detected.  Exceptions can occur
    * when an application directly manipulates the DOM document
    * tree that is produced by the parser, or when a document tree
    * is created from scratch using the DOM API.  DOM exceptions will
    * not be generated by the parser while constructing a document
    * tree from an XML source document.
    *
    * <p>Unlike the other classes in the C++ DOM API, DOM_DOMException
    * is NOT a reference to an underlying implementation class, and
    * does not provide automatic memory management.  Code that catches
    * a DOM exception is responsible for deleting it, or otherwise
    * arranging for its disposal.
    *
    */
  class /*CDOM_EXPORT*/ DOM_DOMException  {
  public:
      /** @name Enumerators for DOM Exceptions */
      //@{
          enum ExceptionCode {
                  INDEX_SIZE_ERR       = 1,
                  DOMSTRING_SIZE_ERR   = 2,
                  HIERARCHY_REQUEST_ERR = 3,
                  WRONG_DOCUMENT_ERR   = 4,
                  INVALID_CHARACTER_ERR = 5,
                  NO_DATA_ALLOWED_ERR  = 6,
                  NO_MODIFICATION_ALLOWED_ERR = 7,
                  NOT_FOUND_ERR        = 8,
                  NOT_SUPPORTED_ERR    = 9,
                  INUSE_ATTRIBUTE_ERR  = 10,
                  INVALID_STATE_ERR    = 11,
  	       	SYNTAX_ERR	     = 12,
          	INVALID_MODIFICATION_ERR    = 13,
          	NAMESPACE_ERR	     = 14,
          	INVALID_ACCESS_ERR   = 15
           };
      //@}
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_DOMException.
        *
        */
      DOM_DOMException();
  
      /**
        * Constructor which takes an error code and a message.
        *
        * @param code The error code which indicates the exception
        * @param message The string containing the error message
        */
  //    DOM_DOMException(short code, const DOMString &message);
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
  //    DOM_DOMException(const DOM_DOMException &other);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_DOMException.  Applications are responsible
        * for deleting DOM_Exception objects that they catch after they
        * have completed their exception processing.
  	  *
  	  */
  //    virtual ~DOM_DOMException();
      //@}
  
      /** @name Public variables. */
       //@{
  	 /**
  	  * A code value, from the set defined by the ExceptionCode enum,
        * indicating the type of error that occured.
  	  */
     int   code;
  
  	 /**
  	  * A string value.  Applications may use this field to hold an error
        *  message.  The field value is not set by the DOM implementation,
        *  meaning that the string will be empty when an exception is first
        *  thrown.
  	  */
      DOMString msg;
      //@}
  
  };
  
  //#endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_RangeException.hpp
  
  Index: DOM_RangeException.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_RangeException.hpp,v $
   * Revision 1.1  2001/07/09 15:20:04  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.1  2000/07/28 01:33:31  aruna1
   * DOM Level 2 Range feature introduced
   *
   */
  
  #ifndef DOM_RangeException_HEADER_GUARD_
  #define DOM_RangeException_HEADER_GUARD_
  
  // #include <dom/DOM_DOMException.hpp>
  
  /**
    * Encapsulate range related DOM error or warning. DOM level 2 implementation. 
    *
    * <p> The DOM will create and throw an instance of DOM_RangeException
    * when an error condition in range is detected.  Exceptions can occur
    * when an application directly manipulates the range elements in DOM document
    * tree that is produced by the parser. 
    *
    * <p>Unlike the other classes in the C++ DOM API, DOM_RangeException
    * is NOT a reference to an underlying implementation class, and
    * does not provide automatic memory management.  Code that catches
    * a DOM Range exception is responsible for deleting it, or otherwise
    * arranging for its disposal.
    *
    */
  class /*CDOM_EXPORT*/ DOM_RangeException  : public DOM_DOMException {
  public:
      /** @name Enumerators for DOM Range Exceptions */
      //@{
          enum RangeExceptionCode {
                  BAD_BOUNDARYPOINTS_ERR  = 1,
                  INVALID_NODE_TYPE_ERR   = 2
          };
      //@}
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_RangeException.
        *
        */
      DOM_RangeException();
  
      /**
        * Constructor which takes an error code and a message.
        *
        * @param code The error code which indicates the exception
        * @param message The string containing the error message
        */
  //     DOM_RangeException(RangeExceptionCode code, const DOMString &message);
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
  //    DOM_RangeException(const DOM_RangeException &other);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_RangeException.  Applications are responsible
        * for deleting DOM_RangeException objects that they catch after they
        * have completed their exception processing.
  	  *
  	  */
  //    virtual ~DOM_RangeException();
      //@}
  
      /** @name Public variables. */
       //@{
  	 /**
  	  * A code value, from the set defined by the RangeExceptionCode enum,
        * indicating the type of error that occured.
  	  */
     int   code;
  
      //@}
  
  };
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM.hpp
  
  Index: IDOM.hpp
  ===================================================================
  #ifndef IDOM_HEADER_GUARD_HPP
  #define IDOM_HEADER_GUARD_HPP
  
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM.hpp,v $
   * Revision 1.1  2001/07/09 15:20:07  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.4  2001/06/08 21:23:02  tng
   * IDOM: Remove the non-standard extension where XML Decl as a node
   *
   * Revision 1.3  2001/06/04 20:11:53  tng
   * IDOM: Complete IDNodeIterator, IDTreeWalker, IDNodeFilter.
   *
   * Revision 1.2  2001/05/11 13:25:48  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:26  andyh
   * IDOM
   *
   */
  
  //
  //  This is the primary header file for inclusion in application
  //  programs using the C++ XML Document Object Model API.
  //
  
  #include <idom/IDOM_Attr.hpp>
  #include <idom/IDOM_CDATASection.hpp>
  #include <idom/IDOM_CharacterData.hpp>
  #include <idom/IDOM_Comment.hpp>
  #include <idom/IDOM_Document.hpp>
  #include <idom/IDOM_DocumentFragment.hpp>
  #include <idom/IDOM_DocumentType.hpp>
  #include <idom/IDOM_DOMException.hpp>
  #include <idom/IDOM_DOMImplementation.hpp>
  #include <idom/IDOM_Element.hpp>
  #include <idom/IDOM_Entity.hpp>
  #include <idom/IDOM_EntityReference.hpp>
  #include <idom/IDOM_NamedNodeMap.hpp>
  #include <idom/IDOM_Node.hpp>
  #include <idom/IDOM_NodeFilter.hpp>
  #include <idom/IDOM_NodeIterator.hpp>
  #include <idom/IDOM_NodeList.hpp>
  #include <idom/IDOM_Notation.hpp>
  #include <idom/IDOM_ProcessingInstruction.hpp>
  #include <idom/IDOM_Range.hpp>
  #include <idom/IDOM_RangeException.hpp>
  #include <idom/IDOM_Text.hpp>
  #include <idom/IDOM_TreeWalker.hpp>
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Attr.hpp
  
  Index: IDOM_Attr.hpp
  ===================================================================
  #ifndef IDOM_Attr_HEADER_GUARD_
  #define IDOM_Attr_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_Attr.hpp,v $
   * Revision 1.1  2001/07/09 15:20:07  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:48  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:27  andyh
   * IDOM
   *
   */
  
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  
  class IDOM_Element;
  
  
  /**
  * The <code>IDOM_Attr</code> class refers to an attribute of an XML element.
  *
  * Typically the allowable values for the
  * attribute are defined in a documenttype definition.
  * <p><code>IDOM_Attr</code> objects inherit the <code>DOM_Node</code>  interface, but
  * since attributes are not actually child nodes of the elements they are associated with, the
  * DOM does not consider them part of the document  tree.  Thus, the
  * <code>DOM_Node</code> attributes <code>parentNode</code>,
  * <code>previousSibling</code>, and <code>nextSibling</code> have a  null
  * value for <code>IDOM_Attr</code> objects. The DOM takes the  view that
  * attributes are properties of elements rather than having a  separate
  * identity from the elements they are associated with;  this should make it
  * more efficient to implement such features as default attributes associated
  * with all elements of a  given type.  Furthermore, attribute nodes
  * may not be immediate children of a <code>DocumentFragment</code>. However,
  * they can be associated with <code>Element</code> nodes contained within a
  * <code>DocumentFragment</code>. In short, users of the DOM
  * need to be aware that  <code>Attr</code> nodes have some things in  common
  * with other objects inheriting the <code>Node</code> interface, but they
  * also are quite distinct.
  *
  */
  class /*CDOM_EXPORT*/ IDOM_Attr: public IDOM_Node {
  
  // protected:
  //     IDOM_Attr() {};
  //     IDOM_Attr(const IDOM_Attr &other) {};
  //     IDOM_Attr & operator = (const IDOM_Attr &other) {return *this;};
  
  
  public:
    /** @name Destructor */
    //@{
  	
    /**
      * Destructor.  The object being destroyed is a reference to the Attribute
      * "node", not the underlying attribute itself.
      *
      */
  //    virtual ~IDOM_Attr() {};
  	//@}
  
    /** @name Getter functions */
    //@{
      /**
      * Returns the name of this attribute.
      */
      virtual const XMLCh *       getName() const/* = 0*/;
  
      /**
      *
      * Returns true if the attribute received its value explicitly in the
      * XML document, or if a value was assigned programatically with
      * the setValue function.  Returns false if the attribute value
      * came from the default value declared in the document's DTD.
      */
      virtual bool            getSpecified() const/* = 0*/;
  
      /**
  	* Returns the value of the attribute.
  	*
      * The value of the attribute is returned as a string.
      * Character and general entity references are replaced with their values.
      */
      virtual const XMLCh *       getValue() const/* = 0*/;
  
  	//@}
    /** @name Setter functions */
    //@{
      /**
  	* Sets the value of the attribute.  A text node with the unparsed contents
      * of the string will be created.
  	*
      * @param value The value of the DOM attribute to be set
      */
      virtual void            setValue(const XMLCh *value)/* = 0*/;
  	//@}
  
      /** @name Functions introduced in DOM Level 2. */
      //@{
      /**
       * The <code>DOM_Element</code> node this attribute is attached to or
       * <code>null</code> if this attribute is not in use.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      virtual IDOM_Element     *getOwnerElement() const/* = 0*/;
      //@}
  
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_CDATASection.hpp
  
  Index: IDOM_CDATASection.hpp
  ===================================================================
  #ifndef IDOM_CDataSection_HEADER_GUARD_
  #define IDOM_CDataSection_HEADER_GUARD_
  
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_CDATASection.hpp,v $
   * Revision 1.1  2001/07/09 15:20:07  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:49  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:27  andyh
   * IDOM
   *
   */
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Text.hpp"
  
  
  /**
   * <code>DOM_CDataSection</code> objects refer to the data from an
   * XML CDATA section.  These are used to escape blocks of text containing  characters
   * that would otherwise be regarded as markup.
   *
   * <p>Note that the string data associated with the CDATA section may
   * contain characters that need to be escaped when appearing in an
   * XML document outside of a CDATA section.
   * <p> The <code>IDOM_CDATASection</code> class inherits from the
   * <code>DOM_CharacterData</code> class through the <code>Text</code>
   * interface. Adjacent CDATASection nodes are not merged by use
   * of the Element.normalize() method.
   */
  class /*CDOM_EXPORT*/ IDOM_CDATASection: public IDOM_Text {
  // protected:
  //     IDOM_CDATASection() {};
  //     IDOM_CDATASection(const IDOM_CDATASection &other) {};
  //     IDOM_CDATASection & operator = (const IDOM_CDATASection &other) {return *this;};
  
  
  public:
  
  //    virtual ~IDOM_CDATASection() {};
  
  };
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_CharacterData.hpp
  
  Index: IDOM_CharacterData.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_CharacterData.hpp,v $
   * Revision 1.1  2001/07/09 15:20:07  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.3  2001/06/04 20:44:14  tng
   * IDOM: Comment should say XMLCh instead of DOMString
   *
   * Revision 1.2  2001/05/11 13:25:49  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:27  andyh
   * IDOM
   *
   */
  
  #ifndef IDOM_CharacterData_HEADER_GUARD_
  #define IDOM_CharacterData_HEADER_GUARD_
  
  // #include <util/XercesDefs.hpp>
  // #include <idom/IDOM_Node.hpp>
  
  
  /**
   * The <code>IDOM_CharacterData</code> interface extends Node with a set  of
   * methods for accessing character data in the DOM.
   *
   * For clarity this set is defined here rather than on each class that uses
   * these methods. No DOM objects correspond directly to
   * <code>CharacterData</code>, though <code>Text</code> and others do inherit
   * the interface from it. All <code>offset</code>s in this interface start
   * from 0, and index in terms of Unicode 16 bit storage units.
   */
  class /*CDOM_EXPORT*/ IDOM_CharacterData: public IDOM_Node {
  
  // protected:
  //     IDOM_CharacterData() {};
  //     IDOM_CharacterData(const IDOM_CharacterData &other) {};
  //     IDOM_CharacterData & operator = (const IDOM_CharacterData &other) {return *this;};
  
  public:
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for IDOM_CharacterData.  The object being destroyed
        * is the reference to the Character Data node, not the character
        * data itself.
  	  */
  //    virtual ~IDOM_CharacterData() {};
  
  
      //@}
  
      /** @name Getter functions. */
      //@{
    /**
     * Returns the character data of the node that implements this interface.
     *
     * The DOM implementation may not put arbitrary limits on the amount of data that
     * may be stored in a  <code>CharacterData</code> node. However,
     * implementation limits may  mean that the entirety of a node's data may
     * not fit into a single <code>XMLCh* String</code>. In such cases, the user
     * may call <code>substringData</code> to retrieve the data in
     * appropriately sized pieces.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
     */
    virtual const XMLCh *     getData() const/* = 0*/;
    /**
     * Returns the number of characters that are available through <code>data</code> and
     * the <code>substringData</code> method below.
     *
     * This may have the value
     * zero, i.e., <code>CharacterData</code> nodes may be empty.
     */
    virtual unsigned int       getLength() const/* = 0*/;
    /**
     * Extracts a range of data from the node.
     *
     * @param offset Start offset of substring to extract.
     * @param count The number of characters to extract.
     * @return The specified substring. If the sum of <code>offset</code> and
     *   <code>count</code> exceeds the <code>length</code>, then all
     *   characters to the end of the data are returned.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
     *   than the number of characters in <code>data</code>, or if the
     *   specified <code>count</code> is negative.
     */
    virtual const XMLCh *     substringData(unsigned int offset,
                                     unsigned int count) const/* = 0*/;
      //@}
      /** @name Functions that set or change data. */
      //@{
    /**
     * Append the string to the end of the character data of the node.
     *
     * Upon success, <code>data</code> provides access to the concatenation of
     * <code>data</code> and the <code>XMLCh* String</code> specified.
     * @param arg The <code>XMLCh* String</code> to append.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    virtual void               appendData(const XMLCh *arg)/* = 0*/;
    /**
     * Insert a string at the specified character offset.
     *
     * @param offset The character offset at which to insert.
     * @param arg The <code>XMLCh* String</code> to insert.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
     *   than the number of characters in <code>data</code>.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    virtual void               insertData(unsigned int offset, const  XMLCh *arg)/* = 0*/;
    /**
     * Remove a range of characters from the node.
     *
     * Upon success,
     * <code>data</code> and <code>length</code> reflect the change.
     * @param offset The offset from which to remove characters.
     * @param count The number of characters to delete. If the sum of
     *   <code>offset</code> and <code>count</code> exceeds <code>length</code>
     *   then all characters from <code>offset</code> to the end of the data
     *   are deleted.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
     *   than the number of characters in <code>data</code>, or if the
     *   specified <code>count</code> is negative.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    virtual void               deleteData(unsigned int offset,
                                  unsigned int count)/* = 0*/;
    /**
     * Replace the characters starting at the specified character offset with
     * the specified string.
     *
     * @param offset The offset from which to start replacing.
     * @param count The number of characters to replace. If the sum of
     *   <code>offset</code> and <code>count</code> exceeds <code>length</code>
     *   , then all characters to the end of the data are replaced (i.e., the
     *   effect is the same as a <code>remove</code> method call with the same
     *   range, followed by an <code>append</code> method invocation).
     * @param arg The <code>XMLCh* String</code> with which the range must be
     *   replaced.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
     *   than the number of characters in <code>data</code>, or if the
     *   specified <code>count</code> is negative.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    virtual void               replaceData(unsigned int offset,
                                   unsigned int count,
                                   const XMLCh *arg)/* = 0*/;
  
    /**
     * Sets the character data of the node that implements this interface.
     *
     * @param data The <code>XMLCh* String</code> to set.
     */
    virtual void               setData(const XMLCh *data)/* = 0*/;
    //@}
  
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Comment.hpp
  
  Index: IDOM_Comment.hpp
  ===================================================================
  #ifndef IDOM_Comment_HEADER_GUARD_
  #define IDOM_Comment_HEADER_GUARD_
  
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_Comment.hpp,v $
   * Revision 1.1  2001/07/09 15:20:08  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:49  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:27  andyh
   * IDOM
   *
   */
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_CharacterData.hpp"
  
  
  /**
   * Class to refer to XML comment nodes in the DOM.
   *
   * <P>The string value contains all of the characters between
   * the starting '<code>&lt;!--</code>' and ending '<code>--&gt;</code>'.
   */
  class /*CDOM_EXPORT*/ IDOM_Comment: public IDOM_CharacterData {
  
  // protected:
  //     IDOM_Comment() {};
  //     IDOM_Comment(const IDOM_Comment &other) {};
  //     IDOM_Comment & operator = (const IDOM_Comment &other) {return *this;};
  
  public:
  //    virtual ~IDOM_Comment() {};
  
  };
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_DOMException.hpp
  
  Index: IDOM_DOMException.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_DOMException.hpp,v $
   * Revision 1.1  2001/07/09 15:20:08  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:50  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:29  andyh
   * IDOM
   *
   */
  
  #ifndef IDOMException_HEADER_GUARD_
  #define IDOMException_HEADER_GUARD_
  
  // #include <util/XercesDefs.hpp>
  
  /**
    * Encapsulate a general DOM error or warning.
    *
    * <p> The DOM will create and throw an instance of DOMException
    * when an error condition is detected.  Exceptions can occur
    * when an application directly manipulates the DOM document
    * tree that is produced by the parser, or when a document tree
    * is created from scratch using the DOM API.  DOM exceptions will
    * not be generated by the parser while constructing a document
    * tree from an XML source document.
    *
    * <p>Unlike the other classes in the C++ DOM API, DOM_DOMException
    * is NOT a reference to an underlying implementation class, and
    * does not provide automatic memory management.  Code that catches
    * a DOM exception is responsible for deleting it, or otherwise
    * arranging for its disposal.
    *
    */
  class /*CDOM_EXPORT*/ IDOM_DOMException  {
  public:
      /** @name Enumerators for DOM Exceptions */
      //@{
          enum ExceptionCode {
                  INDEX_SIZE_ERR       = 1,
                  DOMSTRING_SIZE_ERR   = 2,
                  HIERARCHY_REQUEST_ERR = 3,
                  WRONG_DOCUMENT_ERR   = 4,
                  INVALID_CHARACTER_ERR = 5,
                  NO_DATA_ALLOWED_ERR  = 6,
                  NO_MODIFICATION_ALLOWED_ERR = 7,
                  NOT_FOUND_ERR        = 8,
                  NOT_SUPPORTED_ERR    = 9,
                  INUSE_ATTRIBUTE_ERR  = 10,
                  INVALID_STATE_ERR    = 11,
  	       	SYNTAX_ERR	     = 12,
          	INVALID_MODIFICATION_ERR    = 13,
          	NAMESPACE_ERR	     = 14,
          	INVALID_ACCESS_ERR   = 15
          };
      //@}
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for IDOM_DOMException.
        *
        */
  //     IDOM_DOMException();
  
      /**
        * Constructor which takes an error code and a message.
        *
        * @param code The error code which indicates the exception
        * @param message The string containing the error message
        */
  //    IDOM_DOMException(short code, const XMLCh *message);
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
  //     IDOM_DOMException(const IDOM_DOMException &other);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for IDOM_DOMException.  Applications are responsible
        * for deleting DOM_Exception objects that they catch after they
        * have completed their exception processing.
  	  *
  	  */
  //     virtual ~IDOM_DOMException();
      //@}
  
      /** @name Public variables. */
       //@{
  	 /**
  	  * A code value, from the set defined by the ExceptionCode enum,
        * indicating the type of error that occured.
  	  */
     int   code;
  
  	 /**
  	  * A string value.  Applications may use this field to hold an error
        *  message.  The field value is not set by the DOM implementation,
        *  meaning that the string will be empty when an exception is first
        *  thrown.
  	  */
      const XMLCh *msg;
      //@}
  
  };
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_DOMImplementation.hpp
  
  Index: IDOM_DOMImplementation.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_DOMImplementation.hpp,v $
   * Revision 1.1  2001/07/09 15:20:08  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:50  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:29  andyh
   * IDOM
   *
   */
  
  #ifndef IDOM_DOMImplementation_HEADER_GUARD_
  #define IDOM_DOMImplementation_HEADER_GUARD_
  
  // #include <util/XercesDefs.hpp>
  
  // class IDOM_Document;
  // class IDOM_DocumentType;
  
  /**
   *   This class provides a way to query the capabilities of an implementation
   *   of the DOM
   */
  
  
  class /*CDOM_EXPORT*/ IDOM_DOMImplementation {
  //  protected:
  //      IDOM_DOMImplementation() {};                                      // no plain constructor
  //      IDOM_DOMImplementation(const IDOM_DOMImplementation &other) {};   // no copy construtor.
  //      IDOM_DOMImplementation & operator = (const IDOM_DOMImplementation &other) {return *this;};  // No Assignment
  
  
   public:
  
       //  Factory method for getting a DOMImplementation object.
       //     The DOM implementation retains ownership of the returned object.
       //     Application code should NOT delete it.
       //
   static IDOM_DOMImplementation *getImplementation();
  
  
  
  // virtual ~IDOM_DOMImplementation() {};
  
  virtual bool  hasFeature(const XMLCh *feature,  const XMLCh *version)/* = 0*/;
  
  
  
  //  Create a new DocumentType.
  //     Initially the application owns the returned DocumentType object and is responsible
  //        for deleting it.  If the DocumentType is subsequently associated with a Document,
  //        that document becomes the owner of the storage and will delete the document type
  //        when the document is deleted.
  virtual  IDOM_DocumentType *createDocumentType(const XMLCh *qualifiedName,
                                                 const XMLCh *publicId, const XMLCh *systemId)/* = 0*/;
  
  
  virtual IDOM_Document *createDocument(const XMLCh *namespaceURI,
                                const XMLCh *qualifiedName, IDOM_DocumentType *doctype)/* = 0*/;
  
  // Non-standard extension.  Create a completely empty document that has neither a root
  //          element or a doctype node.
  //
  virtual IDOM_Document *createDocument()/* = 0*/;
  };
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Document.hpp
  
  Index: IDOM_Document.hpp
  ===================================================================
  #ifndef IDOM_Document_HEADER_GUARD_
  #define IDOM_Document_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: IDOM_Document.hpp,v 1.1 2001/07/09 15:20:08 jasons Exp $
  */
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  // 
  // class IDNodeIteratorImpl;
  // 
  // class IDOM_DocumentType;
  // class IDOM_Element;
  // class IDOM_DocumentFragment;
  // class IDOM_Comment;
  // class IDOM_CDATASection;
  // class IDOM_ProcessingInstruction;
  // class IDOM_Attr;
  // class IDOM_Entity;
  // class IDOM_EntityReference;
  // class IDOM_DOMImplementation;
  // class IDOM_NodeFilter;
  // class IDOM_NodeList;
  // class IDOM_Notation;
  // class IDOM_Text;
  // class IDOM_Node;
  // class IDOM_NodeIterator;
  // class IDOM_TreeWalker;
  // class IDOM_Range;
  
  
  /**
  * Class to refer to XML Document nodes in the IDOM.
  *
  * Conceptually, a IDOM document node is the root of the document tree, and provides
  * the  primary access to the document's data.
  * <p>Since elements, text nodes, comments, processing instructions, etc.
  * cannot exist outside the context of a <code>Document</code>, the
  * <code>Document</code> interface also contains the factory methods needed
  * to create these objects.  The <code>Node</code> objects created have a
  * <code>ownerDocument</code> attribute which associates them with the
  * <code>Document</code> within whose  context they were created.
  */
  class /*CDOM_EXPORT*/ IDOM_Document: public IDOM_Node {
  
  protected:
      /** @name Constructors and assignment operators */
      //@{
      /**
       * The default constructor for IDOM_Document creates a null
       * IDOM_Document object that refers to no document.  It may subsequently be
       * assigned to refer to an actual Document node.
       *
       * To create a new document, use the DOMImplementation
       *   <code> IDOM_DOMImplementation::createDocument(). </code>
       *
       */
  //    IDOM_Document() {};
  
      /**
        * Copy constructor.  Creates a new <code>IDOM_Document</code> that refers to the
        * same underlying actual document as the original.
        *
        * @param other The object to be copied
        */
  //    IDOM_Document(const IDOM_Document &other) {};
      /**
        * Assignment operator
        *
        * @param other The object to be copied
        */
  //    IDOM_Document & operator = (const IDOM_Document &other) {return *this;};
  
  
  	//@}
  
  public:
    /** @name Destructor */
    //@{
  	
  //    virtual ~IDOM_Document() {};
  
    //@}
    /** @name Factory methods to create new nodes for the Document */
    //@{
  
      /**
      *  Create a new entity.
      *
      *  Non-standard extension.
      * @param name The name of the entity to instantiate
      *
      */
      virtual IDOM_Entity     *createEntity(const XMLCh *name)/* = 0*/;
  
      /**
      * Creates an element of the type specified.
      *
      * Note that the instance returned
      * implements the Element interface, so attributes can be specified
      * directly  on the returned object.
      * @param tagName The name of the element type to instantiate.
      * @return A <code>IDOM_Element</code> that reference the new element.
      * @exception IDOMException
      *   INVALID_CHARACTER_ERR: Raised if the specified name contains an
      *   illegal character.
      */
      virtual IDOM_Element     *createElement(const XMLCh *tagName)/* = 0*/;
  
  
  
      /**
      * Creates an empty DocumentFragment object.
      *
      * @return A <code>IDOM_DocumentFragment</code> that references the newly
      * created document fragment.
      */
      virtual IDOM_DocumentFragment   *createDocumentFragment()/* = 0*/;
  
      /**
      * Creates a Text node given the specified string.
      *
      * @param data The data for the node.
      * @return A <code>IDOM_Text</code> object that references the newly
      *  created text node.
      */
      virtual IDOM_Text         *createTextNode(const XMLCh *data)/* = 0*/;
  
      /**
      * Creates a Comment node given the specified string.
      *
      * @param data The data for the comment.
      * @return A <code>IDOM_Comment</code> that references the newly
      *  created comment node.
      */
      virtual IDOM_Comment      *createComment(const XMLCh *data)/* = 0*/;
  
      /**
      * Creates a CDATASection node whose value  is the specified
      * string.
      *
      * @param data The data for the <code>IDOM_CDATASection</code> contents.
      * @return A <code>IDOM_CDATASection</code> object.
      * @exception IDOMException
      *   NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
      */
      virtual IDOM_CDATASection   *createCDATASection(const XMLCh *data)/* = 0*/;
  
      /**
      *  Create a DocumentType node.  Non-standard extension.
      *
      * @return A <code>IDOM_DocumentType</code> that references the newly
      *  created DocumentType node.
      *
      */
      virtual IDOM_DocumentType *createDocumentType(const XMLCh *name)/* = 0*/;
  
  
      /**
      *  Create a Notation.
      *
      *  Non-standard extension.
      *
      *  @param name The name of the notation to instantiate
      * @return A <code>IDOM_Notation</code> that references the newly
      *  created Notation node.
      */
      virtual IDOM_Notation *createNotation(const XMLCh *name)/* = 0*/;
  
  
      /**
      * Creates a ProcessingInstruction node given the specified
      * name and data strings.
      *
      * @param target The target part of the processing instruction.
      * @param data The data for the node.
      * @return A <code>IDOM_ProcessingInstruction</code> that references the newly
      *  created PI node.
      * @exception IDOMException
      *   INVALID_CHARACTER_ERR: Raised if an illegal character is specified.
      */
      virtual IDOM_ProcessingInstruction *createProcessingInstruction(const XMLCh *target,
          const XMLCh *data)/* = 0*/;
  
  
      /**
       * Creates an Attr of the given name.
       *
       * Note that the
       * <code>Attr</code> instance can then be attached to an Element
       * using the <code>IDOMElement::setAttribute()</code> method.
       * @param name The name of the attribute.
       * @return A new <CODE>IDOM_Attr</CODE>
       *       object with the <CODE>nodeName</CODE> attribute set to
       *       <CODE>name</CODE>, and <CODE>localName</CODE>, <CODE>prefix</CODE>,
       *       and <CODE>namespaceURI</CODE> set to
       *       <CODE>null</CODE>.
       * @exception IDOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified name contains an
       *   illegal character.
       */
      virtual IDOM_Attr     *createAttribute(const XMLCh *name)/* = 0*/;
  
  
      /**
       * Creates an EntityReference object.
       *
       * @param name The name of the entity to reference.
       * @return A <code>IDOM_EntityReference</code> that references the newly
       *  created EntityReference node.
       * @exception IDOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified name contains an
       *   illegal character.
       */
      virtual IDOM_EntityReference    *createEntityReference(const XMLCh *name)/* = 0*/;
  
  
      /**
       * Creates a NodeIterator object.   (IDOM2)
       *
       * NodeIterators are used to step through a set of nodes, e.g. the set of nodes in a NodeList, the
       * document subtree governed by a particular node, the results of a query, or any other set of nodes.
       * The set of nodes to be iterated is determined by the implementation of the NodeIterator. IDOM Level 2
       * specifies a single NodeIterator implementation for document-order traversal of a document subtree.
       * Instances of these iterators are created by calling <code>DocumentTraversal.createNodeIterator()</code>.
       *
       * To produce a view of the document that has entity references expanded and does not
       * expose the entity reference node itself, use the <code>whatToShow</code> flags to hide the entity
       * reference node and set expandEntityReferences to true when creating the iterator. To
       * produce a view of the document that has entity reference nodes but no entity expansion,
       * use the <code>whatToShow</code> flags to show the entity reference node and set
       * expandEntityReferences to false.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param root The root node of the IDOM tree
       * @param whatToShow This attribute determines which node types are presented via the iterator.
       * @param filter The filter used to screen nodes
       * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are
       *                   visible to the iterator. If false, they will be skipped over.
       */
  
      virtual IDOM_NodeIterator *createNodeIterator(IDOM_Node         *root,
                                                     unsigned long    whatToShow,
                                                     IDOM_NodeFilter* filter,
                                                     bool             entityReferenceExpansion)/* = 0*/;
       /**
       * Creates a TreeWalker object.   (IDOM2)
       *
       * TreeWalker objects are used to navigate a document tree or subtree using the view of the document defined
       * by its whatToShow flags and any filters that are defined for the TreeWalker. Any function which performs
       * navigation using a TreeWalker will automatically support any view defined by a TreeWalker.
       *
       * Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from
       * the same subtree in the complete, unfiltered document. Nodes that are siblings in the TreeWalker view may
       * be children of different, widely separated nodes in the original view. For instance, consider a Filter that skips
       * all nodes except for Text nodes and the root node of a document. In the logical view that results, all text
       * nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the
       * structure of the original document.
       *
       * To produce a view of the document that has entity references expanded
       * and does not expose the entity reference node itself, use the whatToShow
       * flags to hide the entity reference node and set <code>expandEntityReferences</code> to
       * true when creating the TreeWalker. To produce a view of the document
       * that has entity reference nodes but no entity expansion, use the
       * <code>whatToShow</code> flags to show the entity reference node and set
       * <code>expandEntityReferences</code> to false
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param root The root node of the IDOM tree
       * @param whatToShow This attribute determines which node types are presented via the tree-walker.
       * @param filter The filter used to screen nodes
       * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are
       *                   visible to the tree-walker. If false, they will be skipped over.
       */
  
      virtual IDOM_TreeWalker  *createTreeWalker(IDOM_Node        *root,
                                                 unsigned long     whatToShow,
                                                 IDOM_NodeFilter  *filter,
                                                 bool              entityReferenceExpansion)/* = 0*/;
  
      /**
  	  * To create the range  consisting of boundary-points and offset of the
        * selected contents
        *
        * @return The initial state of the Range such that both the boundary-points
        * are positioned at the beginning of the corresponding IDOM_DOcument, before
        * any content. The range returned can only be used to select content
        * associated with this document, or with documentFragments and Attrs for
        * which this document is the ownerdocument
  	  */
      virtual IDOM_Range    *createRange()/* = 0*/;
  
      //@}
      /** @name Getter functions */
      //@{
      /**
       * Get Document Type Declaration (see <code>IDOM_DocumentType</code>) associated
       * with  this document.
       *
       * For documents without
       * a document type declaration this returns <code>null</code> reference object. The IDOM Level
       *  1 does not support editing the Document Type Declaration, therefore
       * <code>docType</code> cannot be altered in any way.
       */
      virtual IDOM_DocumentType       *getDoctype() const/* = 0*/;
  
  
  
      /**
       * Return the <code>IDOMImplementation</code> object that handles this document.
       */
      virtual IDOM_DOMImplementation  *getImplementation() const/* = 0*/;
  
  
      /**
       * Return a reference to the root element of the document.
       */
      virtual IDOM_Element     *getDocumentElement() const/* = 0*/;
  
      /**
       * Returns a <code>IDOM_NodeList</code> of all the elements with a
       * given tag name.  The returned node list is "live", in that changes
       * to the document tree made after a nodelist was initially
       * returned will be immediately reflected in the node list.
       *
       * The elements in the node list are ordered in the same order in which they
       * would be encountered in a
       * preorder traversal of the <code>Document</code> tree.
       * @param tagname The name of the tag to match on. The special value "*"
       *   matches all tags.
       * @return A reference to a NodeList containing all the matched
       *   <code>Element</code>s.
       */
      virtual IDOM_NodeList      *getElementsByTagName(const XMLCh *tagname) const/* = 0*/;
  
      //@}
      /** @name Functions introduced in IDOM Level 2. */
      //@{
  
      /**
       * Imports a node from another document to this document.
       * The returned node has no parent (<CODE>parentNode</CODE> is
       * <CODE>null</CODE>). The source node is not altered or removed from the
       * original document; this method creates a new copy of the source
       * node.<BR>For all nodes, importing a node creates a node object owned by
       * the importing document, with attribute values identical to the source
       * node's <CODE>nodeName</CODE> and <CODE>nodeType</CODE>, plus the
       * attributes related to namespaces (prefix and namespaces URI).
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param importedNode The node to import.
       * @param deep If <CODE>true</CODE>, recursively import the subtree under the
       *      specified node; if <CODE>false</CODE>, import only the node itself,
       *      as explained above. This does not apply to <CODE>IDOM_Attr</CODE>,
       *      <CODE>IDOM_EntityReference</CODE>, and <CODE>IDOM_Notation</CODE> nodes.
       * @return The imported node that belongs to this <CODE>IDOM_Document</CODE>.
       * @exception IDOMException
       *   NOT_SUPPORTED_ERR: Raised if the type of node being imported is
       *                      not supported.
       */
      virtual IDOM_Node        *importNode(IDOM_Node *importedNode, bool deep)/* = 0*/;
  
      /**
       * Creates an element of the given qualified name and
       * namespace URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *   the element to create.
       * @param qualifiedName The <em>qualified name</em>
       *   of the element type to instantiate.
       * @return A new <code>IDOM_Element</code> object.
       * @exception IDOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified qualified name contains
       *                          an illegal character.
       * <br>
       *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is
       *      malformed, if the <CODE>qualifiedName</CODE> has a prefix and the
       *      <CODE>namespaceURI</CODE> is <CODE>null</CODE> or an empty string,
       *      or if the <CODE>qualifiedName</CODE> has a prefix that is "xml" and
       *      the <CODE>namespaceURI</CODE> is different from
       *      "http://www.w3.org/XML/1998/namespace".
       */
      virtual IDOM_Element         *createElementNS(const XMLCh *namespaceURI,
  	                                              const XMLCh *qualifiedName)/* = 0*/;
  
      /**
       * Creates an attribute of the given qualified name and namespace
       * URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *   the attribute to create.
       * @param qualifiedName The <em>qualified name</em>
       *   of the attribute to instantiate.
       * @return A new <code>IDOM_Attr</code> object.
       * @exception IDOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified qualified name contains
       *                          an illegal character.
       * <br>
       *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is
       *      malformed, if the <CODE>qualifiedName</CODE> has a prefix and the
       *      <CODE>namespaceURI</CODE> is <CODE>null</CODE> or an empty string,
       *      if the <CODE>qualifiedName</CODE> has a prefix that is "xml" and the
       *      <CODE>namespaceURI</CODE> is different from
       *      "http://www.w3.org/XML/1998/namespace", if the
       *      <CODE>qualifiedName</CODE> has a prefix that is "xmlns" and the
       *      <CODE>namespaceURI</CODE> is different from
       *      "http://www.w3.org/2000/xmlns/", or if the
       *      <CODE>qualifiedName</CODE> is "xmlns" and the
       *      <CODE>namespaceURI</CODE> is different from
       *      "http://www.w3.org/2000/xmlns/".
       */
      virtual IDOM_Attr        *createAttributeNS(const XMLCh *namespaceURI,
  	                                            const XMLCh *qualifiedName)/* = 0*/;
  
      /**
       * Returns a <code>IDOM_NodeList</code> of all the <code>IDOM_Element</code>s
       * with a given <em>local name</em> and
       * namespace URI in the order in which they would be encountered in a
       * preorder traversal of the <code>IDOM_Document</code> tree.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *   the elements to match on. The special value "*" matches all
       *   namespaces.
       * @param localName The <em>local name</em> of the
       *   elements to match on. The special value "*" matches all local names.
       * @return A new <code>IDOM_NodeList</code> object containing all the matched
       *  <code>IDOM_Element</code>s.
       */
      virtual IDOM_NodeList        *getElementsByTagNameNS(const XMLCh *namespaceURI,
  	                                                     const XMLCh *localName) const/* = 0*/;
  
      /**
       * Returns the <code>IDOM_Element</code> whose ID is given by <code>elementId</code>.
       * If no such element exists, returns <code>null</code>.
       * Behavior is not defined if more than one element has this <code>ID</code>.
       * <P><B>Note:</B> The IDOM implementation must have information that says
       * which attributes are of type ID. Attributes with the name "ID" are not of
       * type ID unless so defined. Implementations that do not know whether
       * attributes are of type ID or not are expected to return
       * <CODE>null</CODE>.</P>
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param elementId The unique <code>id</code> value for an element.
       * @return The matching element.
       */
      virtual  IDOM_Element        * getElementById(const XMLCh *elementId) const/* = 0*/;
  
      //@}
  
  // protected:
  //     friend class IDOM_Node;
  //     friend class DocumentImpl;
  //     friend class NodeIteratorImpl;
  //     friend class IDOM_IDOMImplementation;
  
  };
  
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_DocumentFragment.hpp
  
  Index: IDOM_DocumentFragment.hpp
  ===================================================================
  #ifndef IDOM_DocumentFragment_HEADER_GUARD_
  #define IDOM_DocumentFragment_HEADER_GUARD_
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: IDOM_DocumentFragment.hpp,v 1.1 2001/07/09 15:20:09 jasons Exp $
   */
  
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  
  
  /**
   * <code>DocumentFragment</code> is a "lightweight" or "minimal"
   * <code>Document</code> object.
   *
   * It is very common to want to be able to
   * extract a portion of a document's tree or to create a new fragment of a
   * document. Imagine implementing a user command like cut or rearranging a
   * document by moving fragments around. It is desirable to have an object
   * which can hold such fragments and it is quite natural to use a Node for
   * this purpose. While it is true that a <code>Document</code> object could
   * fulfil this role,  a <code>Document</code> object can potentially be a
   * heavyweight  object, depending on the underlying implementation. What is
   * really needed for this is a very lightweight object.
   * <code>DocumentFragment</code> is such an object.
   * <p>Furthermore, various operations -- such as inserting nodes as children
   * of another <code>Node</code> -- may take <code>DocumentFragment</code>
   * objects as arguments;  this results in all the child nodes of the
   * <code>DocumentFragment</code>  being moved to the child list of this node.
   * <p>The children of a <code>DocumentFragment</code> node are zero or more
   * nodes representing the tops of any sub-trees defining the structure of the
   * document. <code>DocumentFragment</code> nodes do not need to be
   * well-formed XML documents (although they do need to follow the rules
   * imposed upon well-formed XML parsed entities, which can have multiple top
   * nodes).  For example, a <code>DocumentFragment</code> might have only one
   * child and that child node could be a <code>Text</code> node. Such a
   * structure model  represents neither an HTML document nor a well-formed XML
   * document.
   * <p>When a <code>DocumentFragment</code> is inserted into a
   * <code>Document</code> (or indeed any other <code>Node</code> that may take
   * children) the children of the <code>DocumentFragment</code> and not the
   * <code>DocumentFragment</code>  itself are inserted into the
   * <code>Node</code>. This makes the <code>DocumentFragment</code> very
   * useful when the user wishes to create nodes that are siblings; the
   * <code>DocumentFragment</code> acts as the parent of these nodes so that the
   *  user can use the standard methods from the <code>Node</code>  interface,
   * such as <code>insertBefore()</code> and  <code>appendChild()</code>.
   */
  
  class /*CDOM_EXPORT*/ IDOM_DocumentFragment: public IDOM_Node {
  
  // protected:
  //     IDOM_DocumentFragment() {};
  //     IDOM_DocumentFragment(const IDOM_DocumentFragment &other) {};
  //     IDOM_DocumentFragment & operator = (const IDOM_DocumentFragment &other) {return *this;};
  	//@}
      /** @name Destructor */
      //@{
  	
  public:
  //    virtual ~IDOM_DocumentFragment() {};
  
  	//@}
  
  };
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_DocumentType.hpp
  
  Index: IDOM_DocumentType.hpp
  ===================================================================
  #ifndef IDOM_DocumentType_HEADER_GUARD_
  #define IDOM_DocumentType_HEADER_GUARD_
  
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_DocumentType.hpp,v $
   * Revision 1.1  2001/07/09 15:20:09  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:51  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:28  andyh
   * IDOM
   *
   */
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  
  // class IDOM_NamedNodeMap;
  
  /**
   * Each <code>Document</code> has a <code>doctype</code> whose value
   * is either <code>null</code> or a <code>DocumentType</code> object.
   *
   * The <code>IDOM_DocumentType</code> class provides access
   *  to the list of entities and notations that are defined for the document.
   * <p>The DOM Level 1 doesn't support editing <code>DocumentType</code> nodes.
   */
  class /*CDOM_EXPORT*/ IDOM_DocumentType: public IDOM_Node {
  // protected:
  //     IDOM_DocumentType() {};
  //     IDOM_DocumentType(const IDOM_DocumentType &other) {};
  //     IDOM_DocumentType & operator = (const IDOM_DocumentType &other) {return *this;};
  
  public:
  
  //    virtual ~IDOM_DocumentType() {};
  
  
  
      /** @name Getter functions. */
      //@{
    /**
     * The name of DTD; i.e., the name immediately following the
     * <code>DOCTYPE</code> keyword in an XML source document.
     */
    virtual const XMLCh *       getName() const/* = 0*/;
  
    /**
     * This function returns a  <code>NamedNodeMap</code> containing the general entities, both
     * external and internal, declared in the DTD. Parameter entities are not contained.
     * Duplicates are discarded.
     * <p>
     * Note: this functionality is not implemented in the initial release
     * of the parser, and the returned NamedNodeMap will be empty.
     */
    virtual IDOM_NamedNodeMap *getEntities() const/* = 0*/;
  
  
    /**
     * This function returns a named node map containing an entry for
     * each notation declared in a document's DTD.  Duplicates are discarded.
     *
     * <p>
     * Note: this functionality is not implemented in the initial release
     * of the parser, and the returned NamedNodeMap will be empty.
     */
    virtual IDOM_NamedNodeMap *getNotations() const/* = 0*/;
    //@}
  
      /** @name Functions introduced in DOM Level 2. */
      //@{
      /**
       * Get the public identifier of the external subset.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @return The public identifier of the external subset.
       */
      virtual const XMLCh *     getPublicId() const/* = 0*/;
  
      /**
       * Get the system identifier of the external subset.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @return The system identifier of the external subset.
       */
      virtual const XMLCh *     getSystemId() const/* = 0*/;
  
      /**
       * Get the internal subset as a string.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @return The internal subset as a string.
       */
      virtual const XMLCh *     getInternalSubset() const/* = 0*/;
      //@}
  
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Element.hpp
  
  Index: IDOM_Element.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_Element.hpp,v $
   * Revision 1.1  2001/07/09 15:20:09  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:52  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:29  andyh
   * IDOM
   *
   */
  
  #ifndef IDOM_Element_HEADER_GUARD_
  #define IDOM_Element_HEADER_GUARD_
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  // 
  // class IDOM_Attr;
  // class IDOM_NodeList;
  
  
  /**
   * By far the vast majority of objects (apart from text) that authors
   * encounter when traversing a document are <code>IDOM_Element</code> nodes.
   *
   * Assume the following XML document:&lt;elementExample id="demo"&gt;
   * &lt;subelement1/&gt;
   * &lt;subelement2&gt;&lt;subsubelement/&gt;&lt;/subelement2&gt;
   * &lt;/elementExample&gt;
   * <p>When represented using DOM, the top node is an <code>IDOM_Element</code> node
   * for "elementExample", which contains two child <code>IDOM_Element</code> nodes,
   * one for "subelement1" and one for "subelement2". "subelement1" contains no
   * child nodes.
   * <p>Elements may have attributes associated with them; since the
   * <code>IDOM_Element</code> interface inherits from <code>IDOM_Node</code>, the generic
   *  <code>IDOM_Node</code> interface method <code>getAttributes</code> may be used
   * to retrieve the set of all attributes for an element.  There are methods on
   *  the <code>IDOM_Element</code> interface to retrieve either an <code>IDOM_Attr</code>
   *  object by name or an attribute value by name. In XML, where an attribute
   * value may contain entity references, an <code>IDOM_Attr</code> object should be
   * retrieved to examine the possibly fairly complex sub-tree representing the
   * attribute value. On the other hand, in HTML, where all attributes have
   * simple string values, methods to directly access an attribute value can
   * safely be used as a convenience.
   */
  
  class /*CDOM_EXPORT*/ IDOM_Element: public IDOM_Node {
  // protected:
  //     IDOM_Element() {};
  //     IDOM_Element(const IDOM_Element &other) {};
  //     IDOM_Element & operator = (const IDOM_Element &other) {return *this;};
  
  public:
      /** @name Constructors and assignment operator */
      //@{
  
  
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
        * Destructor.  The object being destroyed is the reference
        * object, not the underlying Element itself.
  	  *
  	  */
  //    virtual ~IDOM_Element() {};
      //@}
      /** @name Getter functions. */
      //@{
  
    /**
     * The name of the element.
     *
     * For example, in: &lt;elementExample
     * id="demo"&gt;  ... &lt;/elementExample&gt; , <code>tagName</code> has
     * the value <code>"elementExample"</code>. Note that this is
     * case-preserving in XML, as are all of the operations of the DOM.
     */
    virtual const XMLCh *         getTagName() const/* = 0*/;
  
    /**
     * Retrieves an attribute value by name.
     *
     * @param name The name of the attribute to retrieve.
     * @return The <code>IDOM_Attr</code> value as a string, or the empty  string if
     *   that attribute does not have a specified or default value.
     */
    virtual const XMLCh *         getAttribute(const XMLCh *name) const/* = 0*/;
  
    /**
     * Retrieves an <code>IDOM_Attr</code> node by name.
     *
     * @param name The name (<CODE>nodeName</CODE>) of the attribute to retrieve.
     * @return The <code>IDOM_Attr</code> node with the specified name (<CODE>nodeName</CODE>) or
     *   <code>null</code> if there is no such attribute.
     */
    virtual IDOM_Attr       * getAttributeNode(const XMLCh *name) const/* = 0*/;
  
    /**
     * Returns a <code>NodeList</code> of all descendant elements with a given
     * tag name, in the order in which they would be encountered in a preorder
     * traversal of the <code>IDOM_Element</code> tree.
     *
     * @param name The name of the tag to match on. The special value "*"
     *   matches all tags.
     * @return A list of matching <code>IDOM_Element</code> nodes.
     */
    virtual IDOM_NodeList   * getElementsByTagName(const XMLCh *name) const/* = 0*/;
  
    //@}
    /** @name Set functions. */
    //@{
  
    /**
     * Adds a new attribute.
     *
     * If an attribute with that name is already present
     * in the element, its value is changed to be that of the value parameter.
     * This value is a simple string, it is not parsed as it is being set. So
     * any markup (such as syntax to be recognized as an entity reference) is
     * treated as literal text, and needs to be appropriately escaped by the
     * implementation when it is written out. In order to assign an attribute
     * value that contains entity references, the user must create an
     * <code>IDOM_Attr</code> node plus any <code>Text</code> and
     * <code>EntityReference</code> nodes, build the appropriate subtree, and
     * use <code>setAttributeNode</code> to assign it as the value of an
     * attribute.
     * @param name The name of the attribute to create or alter.
     * @param value Value to set in string form.
     * @exception DOMException
     *   INVALID_CHARACTER_ERR: Raised if the specified name contains an
     *   illegal character.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
     virtual void             setAttribute(const XMLCh *name,
                                   const XMLCh *value)/* = 0*/;
     /**
      * Adds a new attribute.
      *
      * If an attribute with that name (<CODE>nodeName</CODE>) is already present
      * in the element, it is replaced by the new one.
      * @param newAttr The <code>IDOM_Attr</code> node to add to the attribute list.
      * @return If the <code>newAttr</code> attribute replaces an existing
      *   attribute, the replaced
      *   <code>IDOM_Attr</code> node is returned, otherwise <code>null</code> is
      *   returned.
      * @exception DOMException
      *   WRONG_DOCUMENT_ERR: Raised if <code>newAttr</code> was created from a
      *   different document than the one that created the element.
      *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
      *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>newAttr</code> is already an
      *   attribute of another <code>IDOM_Element</code> object. The DOM user must
      *   explicitly clone <code>IDOM_Attr</code> nodes to re-use them in other
      *   elements.
      */
     virtual IDOM_Attr       * setAttributeNode(IDOM_Attr *newAttr)/* = 0*/;
  
     //@}
     /** @name Functions which modify the Element. */
     //@{
    /**
     * Removes the specified attribute node.
     * If the removed <CODE>IDOM_Attr</CODE>
     *   has a default value it is immediately replaced. The replacing attribute
     *   has the same namespace URI and local name, as well as the original prefix,
     *   when applicable.
     *
     * @param oldAttr The <code>IDOM_Attr</code> node to remove from the attribute
     *   list.
     * @return The <code>IDOM_Attr</code> node that was removed.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     *   <br>NOT_FOUND_ERR: Raised if <code>oldAttr</code> is not an attribute
     *   of the element.
     */
    virtual IDOM_Attr       * removeAttributeNode(IDOM_Attr *oldAttr)/* = 0*/;
  
    /**
     * Removes an attribute by name.
     *
     * If the removed attribute
     *   is known to have a default value, an attribute immediately appears
     *   containing the default value as well as the corresponding namespace URI,
     *   local name, and prefix when applicable.<BR>To remove an attribute by local
     *   name and namespace URI, use the <CODE>removeAttributeNS</CODE> method.
     * @param name The name of the attribute to remove.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    virtual void              removeAttribute(const XMLCh *name)/* = 0*/;
  
    //@}
    /** @name Functions introduced in DOM Level 2. */
    //@{
  
    /**
     * Retrieves an attribute value by local name and namespace URI.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to retrieve.
     * @param localName The <em>local name</em> of the
     *    attribute to retrieve.
     * @return The <code>IDOM_Attr</code> value as a string, or an <CODE>null</CODE> if
     *    that attribute does not have a specified or default value.
     */
    virtual const XMLCh *         getAttributeNS(const XMLCh *namespaceURI,
  	const XMLCh *localName) const/* = 0*/;
  
    /**
     * Adds a new attribute. If an attribute with the same
     * local name and namespace URI is already present on the element, its prefix
     * is changed to be the prefix part of the <CODE>qualifiedName</CODE>, and
     * its value is changed to be the <CODE>value</CODE> parameter. This value is
     * a simple string, it is not parsed as it is being set. So any markup (such
     * as syntax to be recognized as an entity reference) is treated as literal
     * text, and needs to be appropriately escaped by the implementation when it
     * is written out. In order to assign an attribute value that contains entity
     * references, the user must create an <CODE>IDOM_Attr</CODE>
     * node plus any <CODE>IDOM_Text</CODE> and <CODE>IDOM_EntityReference</CODE>
     * nodes, build the appropriate subtree, and use
     * <CODE>setAttributeNodeNS</CODE> or <CODE>setAttributeNode</CODE> to assign
     * it as the value of an attribute.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to create or alter.
     * @param qualifiedName The <em>qualified name</em> of the
     *    attribute to create or alter.
     * @param value The value to set in string form.
     * @exception DOMException
     *   INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an
     *   illegal character.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     * <br>
     *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is
     *        malformed, if the <CODE>qualifiedName</CODE> has a prefix and the
     *        <CODE>namespaceURI</CODE> is <CODE>null</CODE> or an empty string,
     *        if the <CODE>qualifiedName</CODE> has a prefix that is "xml" and the
     *        <CODE>namespaceURI</CODE> is different from
     *        "http://www.w3.org/XML/1998/namespace", if the
     *        <CODE>qualifiedName</CODE> has a prefix that is "xmlns" and the
     *        <CODE>namespaceURI</CODE> is different from
     *        "http://www.w3.org/2000/xmlns/", or if the
     *        <CODE>qualifiedName</CODE> is "xmlns" and the
     *        <CODE>namespaceURI</CODE> is different from
     *        "http://www.w3.org/2000/xmlns/".
     */
     virtual void             setAttributeNS(const XMLCh *namespaceURI,
  	const XMLCh *qualifiedName, const XMLCh *value)/* = 0*/;
  
    /**
     * Removes an attribute by local name and namespace URI. If the
     * removed attribute has a default value it is immediately replaced.
     * The replacing attribute has the same namespace URI and local name, as well as
     * the original prefix.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to remove.
     * @param localName The <em>local name</em> of the
     *    attribute to remove.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    virtual void              removeAttributeNS(const XMLCh *namespaceURI,
  	const XMLCh *localName)/* = 0*/;
  
    /**
     * Retrieves an <code>IDOM_Attr</code> node by local name and namespace URI.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to retrieve.
     * @param localName The <em>local name</em> of the
     *    attribute to retrieve.
     * @return The <code>IDOM_Attr</code> node with the specified attribute local
     *    name and namespace URI or <code>null</code> if there is no such attribute.
     */
    virtual IDOM_Attr      *  getAttributeNodeNS(const XMLCh *namespaceURI,
  	const XMLCh *localName) const/* = 0*/;
  
     /**
      * Adds a new attribute.
      *
      * If an attribute with that local name and namespace URI is already present
      * in the element, it is replaced by the new one.
      *
      * <p><b>"Experimental - subject to change"</b></p>
      *
      * @param newAttr The <code>IDOM_Attr</code> node to add to the attribute list.
      * @return If the <code>newAttr</code> attribute replaces an existing
      *    attribute with the same <em>local name</em> and <em>namespace URI</em>,
      *    the replaced <code>IDOM_Attr</code> node is
      *    returned, otherwise <code>null</code> is returned.
      * @exception DOMException
      *   WRONG_DOCUMENT_ERR: Raised if <code>newAttr</code> was created from a
      *   different document than the one that created the element.
      *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
      *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>newAttr</code> is already an
      *   attribute of another <code>IDOM_Element</code> object. The DOM user must
      *   explicitly clone <code>IDOM_Attr</code> nodes to re-use them in other
      *   elements.
      */
     virtual IDOM_Attr      *  setAttributeNodeNS(IDOM_Attr *newAttr)/* = 0*/;
  
    /**
     * Returns a <code>IDOM_NodeList</code> of all the <code>IDOM_Element</code>s
     * with a given local name and namespace URI in the order in which they
     * would be encountered in a preorder traversal of the
     * <code>IDOM_Document</code> tree, starting from this node.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the elements to match on. The special value "*" matches all
     *    namespaces.
     * @param localName The <em>local name</em> of the
     *    elements to match on. The special value "*" matches all local names.
     * @return A new <code>IDOM_NodeList</code> object containing all the matched
     *    <code>IDOM_Element</code>s.
     */
    virtual IDOM_NodeList   * getElementsByTagNameNS(const XMLCh *namespaceURI,
  	const XMLCh *localName) const/* = 0*/;
  
    //@}
  
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Entity.hpp
  
  Index: IDOM_Entity.hpp
  ===================================================================
  #ifndef IDOM_Entity_HEADER_GUARD_
  #define IDOM_Entity_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_Entity.hpp,v $
   * Revision 1.1  2001/07/09 15:20:09  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:52  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:30  andyh
   * IDOM
   *
   */
  
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  
  
  /**
   * This interface represents an entity, either parsed or unparsed, in an XML
   * document.
   *
   * Note that this models the entity itself not the entity
   * declaration. <code>Entity</code> declaration modeling has been left for a
   * later Level of the DOM specification.
   * <p>The <code>nodeName</code> attribute that is inherited from
   * <code>Node</code> contains the name of the entity.
   * <p>An XML processor may choose to completely expand entities before  the
   * structure model is passed to the DOM; in this case there will be no
   * <code>EntityReference</code> nodes in the document tree.
   *
   * <p>Note: the first release of this parser does not create entity
   *    nodes when reading an XML document.  Entities may be
   *    programatically created using DOM_Document::createEntity().
   */
  class /*CDOM_EXPORT*/ IDOM_Entity: public IDOM_Node {
  // protected:
  //     IDOM_Entity() {};
  //     IDOM_Entity(const IDOM_Entity &other) {};
  //     IDOM_Entity & operator = (const IDOM_Entity &other) {return *this;};
  
  public:
  //    virtual ~IDOM_Entity() {};
  
      /** @name Get functions. */
      //@{
    /**
     * The public identifier associated with the entity, if specified.
     *
     * If the public identifier was not specified, this is <code>null</code>.
     */
    virtual const XMLCh *        getPublicId() const/* = 0*/;
  
    /**
     * The system identifier associated with the entity, if specified.
     *
     * If the system identifier was not specified, this is <code>null</code>.
     */
    virtual const XMLCh *        getSystemId() const/* = 0*/;
  
    /**
     * For unparsed entities, the name of the notation for the entity.
     *
     * For parsed entities, this is <code>null</code>.
     */
    virtual const XMLCh *        getNotationName() const/* = 0*/;
  
    //@}
  
  };
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_EntityReference.hpp
  
  Index: IDOM_EntityReference.hpp
  ===================================================================
  #ifndef IDOM_EntityReference_HEADER_GUARD_
  #define IDOM_EntityReference_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_EntityReference.hpp,v $
   * Revision 1.1  2001/07/09 15:20:10  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:52  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:30  andyh
   * IDOM
   *
   */
  
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  
  
  /**
   * <code>EntityReference</code> nodes will appear in the structure
   * model when an entity reference is in the source document, or when the user
   * wishes to insert an entity reference.
   *
   * The expansion of the entity will appear as child nodes of the entity
   * reference node.  The expansion may be just simple text, or it may
   * be more complex, containing additional entity refs.
   *
  */
  
  class /*CDOM_EXPORT*/ IDOM_EntityReference: public IDOM_Node {
  // protected:
  //     /** @name Constructors and assignment operator */
  //     //@{
  //     IDOM_EntityReference() {};
  // 
  //     IDOM_EntityReference(const IDOM_EntityReference &other) {};
  // 
  //     IDOM_EntityReference & operator = (const IDOM_EntityReference &other) {return *this;};
  
  public:
  //    virtual ~IDOM_EntityReference() {};
      //@}
  
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_NamedNodeMap.hpp
  
  Index: IDOM_NamedNodeMap.hpp
  ===================================================================
  #ifndef IDOM_NamedNodeMap_HEADER_GUARD_
  #define IDOM_NamedNodeMap_HEADER_GUARD_
  
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_NamedNodeMap.hpp,v $
   * Revision 1.1  2001/07/09 15:20:10  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:53  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:30  andyh
   * IDOM
   *
   */
  
  // #include <util/XercesDefs.hpp>
  // 
  // class IDOM_Node;
  
  /**
  *  <code>NamedNodeMap</code>s  are used to
  * represent collections of nodes that can be accessed by name.
  *
  * Note that <code>NamedNodeMap</code> does not inherit from <code>NodeList</code>;
  * <code>NamedNodeMap</code>s are not maintained in any particular order.
  * Nodes contained in a <code>NamedNodeMap</code> may
  * also be accessed by an ordinal index, but this is simply to allow
  * convenient enumeration of the contents, and
  * does not imply that the DOM specifies an order to these Nodes.
  */
  class /*CDOM_EXPORT*/ IDOM_NamedNodeMap {
  // protected:
  //     IDOM_NamedNodeMap() {};
  //     IDOM_NamedNodeMap(const IDOM_NamedNodeMap &other) {};
  //     IDOM_NamedNodeMap & operator = (const IDOM_NamedNodeMap &other) {return *this;};
  
  
  
  public:
      /** @name Destructor. */
      //@{
  //    virtual ~IDOM_NamedNodeMap() {};
  
      //@}
  
      /** @name Set functions. */
      //@{
  
      /**
      * Adds a node using its <code>nodeName</code> attribute.
      *
      * <br>As the <code>nodeName</code> attribute is used to derive the name
      * which the node must be stored under, multiple nodes of certain types
      * (those that have a "special" string value) cannot be stored as the names
      * would clash. This is seen as preferable to allowing nodes to be aliased.
      * @param arg A node to store in a named node map. The node will later be
      *   accessible using the value of the <code>nodeName</code> attribute of
      *   the node. If a node with that name is already present in the map, it
      *   is replaced by the new one.
      * @return If the new <code>Node</code> replaces an existing node the
      *   replaced <code>Node</code> is returned,
      *   otherwise <code>null</code> is returned.
      * @exception DOMException
      *   WRONG_DOCUMENT_ERR: Raised if <code>arg</code> was created from a
      *   different document than the one that created the
      *   <code>NamedNodeMap</code>.
      *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this
      *   <code>NamedNodeMap</code> is readonly.
      *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>arg</code> is an
      *   <code>Attr</code> that is already an attribute of another
      *   <code>Element</code> object. The DOM user must explicitly clone
      *   <code>Attr</code> nodes to re-use them in other elements.
      */
      virtual IDOM_Node   *setNamedItem(IDOM_Node *arg)/* = 0*/;
  
      //@}
      /** @name Get functions. */
      //@{
  
      /**
      * Returns the <code>index</code>th item in the map.
      *
      * If <code>index</code>
      * is greater than or equal to the number of nodes in the map, this returns
      * <code>null</code>.
      * @param index Index into the map.
      * @return The node at the <code>index</code>th position in the
      *   <code>NamedNodeMap</code>, or <code>null</code> if that is not a valid
      *   index.
      */
      virtual IDOM_Node     *item(unsigned int index) const/* = 0*/;
  
      /**
      * Retrieves a node specified by name.
      *
      * @param name The <code>nodeName</code> of a node to retrieve.
      * @return A <code>IDOM_Node</code> (of any type) with the specified <code>nodeName</code>, or
      *   <code>null</code> if it does not identify any node in
      *   the map.
      */
      virtual IDOM_Node   *getNamedItem(const XMLCh *name) const/* = 0*/;
  
      /**
      * The number of nodes in the map.
      *
      * The range of valid child node indices is
      * 0 to <code>length-1</code> inclusive.
      */
      virtual unsigned int   getLength() const/* = 0*/;
  
      //@}
      /** @name Functions to change the node collection. */
      //@{
  
      /**
      * Removes a node specified by name.
      *
      * If the removed node is an
      * <code>Attr</code> with a default value it is immediately replaced.
      * @param name The <code>nodeName</code> of a node to remove.
      * @return The node removed from the map or <code>null</code> if no node
      *   with such a name exists.
      * @exception DOMException
      *   NOT_FOUND_ERR: Raised if there is no node named <code>name</code> in
      *   the map.
      * <br>
      *   NO_MODIFICATION_ALLOWED_ERR: Raised if this <code>NamedNodeMap</code>
      *   is readonly.
      */
      virtual IDOM_Node    *removeNamedItem(const XMLCh *name)/* = 0*/;
  
      //@}
      /** @name Functions introduced in DOM Level 2. */
      //@{
  
      /**
       * Retrieves a node specified by local name and namespace URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *    the node to retrieve.
       * @param localName The <em>local name</em> of the node to retrieve.
       * @return A <code>IDOM_Node</code> (of any type) with the specified
       *    local name and namespace URI, or <code>null</code> if they do not
       *    identify any node in the map.
       */
      virtual IDOM_Node   *getNamedItemNS(const XMLCh *namespaceURI,
  	                                        const XMLCh *localName) const/* = 0*/;
  
      /**
       * Adds a node using its <CODE>namespaceURI</CODE> and <CODE>localName</CODE>.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param arg A node to store in a named node map. The node will later be
       *       accessible using the value of the <CODE>namespaceURI</CODE> and
       *       <CODE>localName</CODE> attribute of the node. If a node with those
       *       namespace URI and local name is already present in the map, it is
       *       replaced by the new one.
       * @return If the new <code>IDOM_Node</code> replaces an existing node the
       *   replaced <code>IDOM_Node</code> is returned,
       *   otherwise <code>null</code> is returned.
       * @exception DOMException
       *   WRONG_DOCUMENT_ERR: Raised if <code>arg</code> was created from a
       *   different document than the one that created the
       *   <code>IDOM_NamedNodeMap</code>.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this
       *   <code>vNamedNodeMap</code> is readonly.
       *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>arg</code> is an
       *   <code>DOM_Attr</code> that is already an attribute of another
       *   <code>DOM_Element</code> object. The DOM user must explicitly clone
       *   <code>DOM_Attr</code> nodes to re-use them in other elements.
       */
      virtual IDOM_Node   *setNamedItemNS(IDOM_Node *arg)/* = 0*/;
  
      /**
       * Removes a node specified by local name and namespace URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *    the node to remove.
       * @param localName The <em>local name</em> of the
       *    node to remove. When this <code>IDOM_NamedNodeMap</code> contains the
       *    attributes attached to an element, as returned by the attributes
       *    attribute of the <code>IDOM_Node</code> interface, if the removed
       *    attribute is known to have a default value, an attribute
       *    immediately appears containing the default value
       *    as well as the corresponding namespace URI, local name, and prefix.
       * @return The node removed from the map if a node with such a local name
       *    and namespace URI exists.
       * @exception DOMException
       *   NOT_FOUND_ERR: Raised if there is no node named <code>name</code> in
       *   the map.
       * <br>
       *   NO_MODIFICATION_ALLOWED_ERR: Raised if this <code>IDOM_NamedNodeMap</code>
       *   is readonly.
       */
      virtual IDOM_Node     *removeNamedItemNS(const XMLCh *namespaceURI,
  	                                          const XMLCh *localName)/* = 0*/;
  
      //@}
  
  };
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Node.hpp
  
  Index: IDOM_Node.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: IDOM_Node.hpp,v 1.1 2001/07/09 15:20:10 jasons Exp $
   */
  
  #ifndef IDOM_Node_HEADER_GUARD_
  #define IDOM_Node_HEADER_GUARD_
  
  // #include <util/XercesDefs.hpp>
  // 
  // 
  // class IDOM_Document;
  // class IDOM_NamedNodeMap;
  // class IDOM_NodeList;
  
  /**
   * The <code>Node</code> interface is the primary datatype for the entire
   * Document Object Model.
   *
   * It represents a single node in the document tree.
   * While all objects implementing the <code>Node</code> interface expose
   * methods for dealing with children, not all objects implementing the
   * <code>Node</code> interface may have children. For example,
   * <code>Text</code> nodes may not have children, and adding children to such
   * nodes results in a <code>DOMException</code> being raised.
   * <p>The attributes <code>nodeName</code>, <code>nodeValue</code>  and
   * <code>attributes</code> are  included as a mechanism to get at node
   * information without  casting down to the specific derived interface. In
   * cases where  there is no obvious mapping of these attributes for a specific
   *  <code>nodeType</code> (e.g., <code>nodeValue</code> for an Element  or
   * <code>attributes</code>  for a Comment), this returns <code>null</code>.
   * Note that the  specialized interfaces may contain additional and more
   * convenient mechanisms to get and set the relevant information.
   */
  class  /*CDOM_EXPORT*/ IDOM_Node {
  
  //     protected:
  //     /** @name Constructors and assignment operators */
  //     //@{
  //     /**
  //       * Default constructor for IDOM_Node.  Protected, because
  //       * IDOM_Node is an abstract base class.
  //       *
  //       */
  //         IDOM_Node() {};
  // 
  //     /**
  //       * Copy constructor.
  //       *
  //       * @param other The object to be copied.
  //       */
  //         IDOM_Node(const IDOM_Node &other) {};
  // 
  //     /**
  //       * Assignment operator.
  //       *
  //       * @param other The source to be assigned.
  //       */
  //         IDOM_Node & operator = (const IDOM_Node &other) {return *this;};
  
      public:
  
     //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for IDOM_Node.
  	  *
  	  */
  //        virtual ~IDOM_Node() {};
  
      //@}
  
  
      enum NodeType {
          ELEMENT_NODE                = 1,
          ATTRIBUTE_NODE              = 2,
          TEXT_NODE                   = 3,
          CDATA_SECTION_NODE          = 4,
          ENTITY_REFERENCE_NODE       = 5,
          ENTITY_NODE                 = 6,
          PROCESSING_INSTRUCTION_NODE = 7,
          COMMENT_NODE                = 8,
          DOCUMENT_NODE               = 9,
          DOCUMENT_TYPE_NODE          = 10,
          DOCUMENT_FRAGMENT_NODE      = 11,
          NOTATION_NODE               = 12,
          XML_DECL_NODE               = 13
      };
  
      /** @name Get functions. */
      //@{
  
      /**
       * The name of this node, depending on its type; see the table above.
       */
      virtual const XMLCh *   getNodeName() const/* = 0*/;
  
      /**
       * Gets the value of this node, depending on its type.
       *
       * @exception DOMException
       *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
       */
      virtual const XMLCh *       getNodeValue() const/* = 0*/;
  
      /**
       * An enum value representing the type of the underlying object.
       */
      virtual short           getNodeType() const/* = 0*/;
  
      /**
       * Gets the parent of this node.
       *
       * All nodes, except <code>Document</code>,
       * <code>DocumentFragment</code>, and <code>Attr</code> may have a parent.
       * However, if a node has just been created and not yet added to the tree,
       * or if it has been removed from the tree, a <code>null</code> IDOM_Node
       * is returned.
       */
      virtual IDOM_Node        *getParentNode() const/* = 0*/;
  
      /**
       * Gets a <code>NodeList</code> that contains all children of this node.
       *
       * If there
       * are no children, this is a <code>NodeList</code> containing no nodes.
       * The content of the returned <code>NodeList</code> is "live" in the sense
       * that, for instance, changes to the children of the node object that
       * it was created from are immediately reflected in the nodes returned by
       * the <code>NodeList</code> accessors; it is not a static snapshot of the
       * content of the node. This is true for every <code>NodeList</code>,
       * including the ones returned by the <code>getElementsByTagName</code>
       * method.
       */
      virtual IDOM_NodeList    *getChildNodes() const/* = 0*/;
      /**
       * Gets the first child of this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      virtual IDOM_Node        *getFirstChild() const/* = 0*/;
  
      /**
       * Gets the last child of this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      virtual IDOM_Node        *getLastChild() const/* = 0*/;
  
      /**
       * Gets the node immediately preceding this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      virtual IDOM_Node        *getPreviousSibling() const/* = 0*/;
  
      /**
       * Gets the node immediately following this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      virtual IDOM_Node        *getNextSibling() const/* = 0*/;
  
      /**
       * Gets a <code>NamedNodeMap</code> containing the attributes of this node (if it
       * is an <code>Element</code>) or <code>null</code> otherwise.
       */
      virtual IDOM_NamedNodeMap  *getAttributes() const/* = 0*/;
  
      /**
       * Gets the <code>IDOM_Document</code> object associated with this node.
       *
       * This is also
       * the <code>IDOM_Document</code> object used to create new nodes. When this
       * node is a <code>IDOM_Document</code> or a <code>IDOM_DocumentType</code>
       * which is not used with any <code>IDOM_Document</code> yet, this is
       * <code>null</code>.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      virtual IDOM_Document      *getOwnerDocument() const/* = 0*/;
  
  
      //@}
      /** @name Cloning function. */
      //@{
  
      /**
       * Returns a duplicate of this node.
       *
       * This function serves as a generic copy constructor for nodes.
       *
       * The duplicate node has no parent (
       * <code>parentNode</code> returns <code>null</code>.).
       * <br>Cloning an <code>Element</code> copies all attributes and their
       * values, including those generated by the  XML processor to represent
       * defaulted attributes, but this method does not copy any text it contains
       * unless it is a deep clone, since the text is contained in a child
       * <code>Text</code> node. Cloning any other type of node simply returns a
       * copy of this node.
       * @param deep If <code>true</code>, recursively clone the subtree under the
       *   specified node; if <code>false</code>, clone only the node itself (and
       *   its attributes, if it is an <code>Element</code>).
       * @return The duplicate node.
       */
      virtual IDOM_Node        * cloneNode(bool deep) const/* = 0*/;
  
      //@}
      /** @name Functions to modify the DOM Node. */
      //@{
  
      /**
       * Inserts the node <code>newChild</code> before the existing child node
       * <code>refChild</code>.
       *
       * If <code>refChild</code> is <code>null</code>,
       * insert <code>newChild</code> at the end of the list of children.
       * <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
       * all of its children are inserted, in the same order, before
       * <code>refChild</code>. If the <code>newChild</code> is already in the
       * tree, it is first removed.  Note that a <code>IDOM_Node</code> that
       * has never been assigned to refer to an actual node is == null.
       * @param newChild The node to insert.
       * @param refChild The reference node, i.e., the node before which the new
       *   node must be inserted.
       * @return The node being inserted.
       * @exception DOMException
       *   HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
       *   allow children of the type of the <code>newChild</code> node, or if
       *   the node to insert is one of this node's ancestors.
       *   <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
       *   from a different document than the one that created this node.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being
       *   inserted is readonly.
       *   <br>NOT_FOUND_ERR: Raised if <code>refChild</code> is not a child of
       *   this node.
       */
      virtual IDOM_Node       *insertBefore(IDOM_Node *newChild,
                                            IDOM_Node *refChild)/* = 0*/;
  
  
      /**
       * Replaces the child node <code>oldChild</code> with <code>newChild</code>
       * in the list of children, and returns the <code>oldChild</code> node.
       *
       * If <CODE>newChild</CODE> is a <CODE>IDOM_DocumentFragment</CODE> object,
       * <CODE>oldChild</CODE> is replaced by all of the <CODE>IDOM_DocumentFragment</CODE>
       * children, which are inserted in the same order.
       *
       * If the <code>newChild</code> is already in the tree, it is first removed.
       * @param newChild The new node to put in the child list.
       * @param oldChild The node being replaced in the list.
       * @return The node replaced.
       * @exception DOMException
       *   HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
       *   allow children of the type of the <code>newChild</code> node, or it
       *   the node to put in is one of this node's ancestors.
       *   <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
       *   from a different document than the one that created this node.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly.
       *   <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
       *   this node.
       */
      virtual IDOM_Node  *replaceChild(IDOM_Node *newChild,
                                       IDOM_Node *oldChild)/* = 0*/;
      /**
       * Removes the child node indicated by <code>oldChild</code> from the list
       * of children, and returns it.
       *
       * @param oldChild The node being removed.
       * @return The node removed.
       * @exception DOMException
       *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
       *   <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
       *   this node.
       */
      virtual IDOM_Node        *removeChild(IDOM_Node *oldChild)/* = 0*/;
  
      /**
       * Adds the node <code>newChild</code> to the end of the list of children of
       * this node.
       *
       * If the <code>newChild</code> is already in the tree, it is
       * first removed.
       * @param newChild The node to add.If it is a  <code>DocumentFragment</code>
       *   object, the entire contents of the document fragment are moved into
       *   the child list of this node
       * @return The node added.
       * @exception DOMException
       *   HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
       *   allow children of the type of the <code>newChild</code> node, or if
       *   the node to append is one of this node's ancestors.
       *   <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
       *   from a different document than the one that created this node.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being
       *   appended is readonly.
       */
      virtual IDOM_Node        *appendChild(IDOM_Node *newChild)/* = 0*/;
  
      //@}
      /** @name Query functions. */
      //@{
  
      /**
       *  This is a convenience method to allow easy determination of whether a
       * node has any children.
       *
       * @return  <code>true</code> if the node has any children,
       *   <code>false</code> if the node has no children.
       */
      virtual bool             hasChildNodes() const/* = 0*/;
  
  
  
      //@}
      /** @name Set functions. */
      //@{
  
  
      /**
      * Sets the value of the node.
      *
      * Any node which can have a nodeValue (@see getNodeValue) will
      * also accept requests to set it to a string. The exact response to
      * this varies from node to node -- Attribute, for example, stores
      * its values in its children and has to replace them with a new Text
      * holding the replacement value.
      *
      * For most types of Node, value is null and attempting to set it
      * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will
      * also be thrown if the node is read-only.
      */
      virtual void              setNodeValue(const XMLCh  *nodeValue)/* = 0*/;
  
      //@}
      /** @name Functions introduced in DOM Level 2. */
      //@{
  
      /**
       * Puts all <CODE>IDOM_Text</CODE>
       * nodes in the full depth of the sub-tree underneath this <CODE>IDOM_Node</CODE>,
       * including attribute nodes, into a "normal" form where only markup (e.g.,
       * tags, comments, processing instructions, CDATA sections, and entity
       * references) separates <CODE>IDOM_Text</CODE>
       * nodes, i.e., there are neither adjacent <CODE>IDOM_Text</CODE>
       * nodes nor empty <CODE>IDOM_Text</CODE>
       * nodes. This can be used to ensure that the DOM view of a document is the
       * same as if it were saved and re-loaded, and is useful when operations
       * (such as XPointer lookups) that depend on a particular document tree
       * structure are to be used.
       * <P><B>Note:</B> In cases where the document contains <CODE>IDOM_CDATASections</CODE>,
       * the normalize operation alone may not be sufficient, since XPointers do
       * not differentiate between <CODE>IDOM_Text</CODE>
       * nodes and <CODE>IDOM_CDATASection</CODE>
       * nodes.</P>
       *
       *
       */
      virtual void              normalize()/* = 0*/;
  
      /**
       * Tests whether the DOM implementation implements a specific
       * feature and that feature is supported by this node.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param feature The string of the feature to test. This is the same
       * name as what can be passed to the method <code>hasFeature</code> on
       * <code>IDOM_DOMImplementation</code>.
       * @param version This is the version number of the feature to test. In
       * Level 2, version 1, this is the string "2.0". If the version is not
       * specified, supporting any version of the feature will cause the
       * method to return <code>true</code>.
       * @return Returns <code>true</code> if the specified feature is supported
       * on this node, <code>false</code> otherwise.
       */
      virtual bool      supports(const XMLCh *feature,
  	                           const XMLCh *version) const/* = 0*/;
  
      /**
       * Get the <em>namespace URI</em> of
       * this node, or <code>null</code> if it is unspecified.
       * <p>
       * This is not a computed value that is the result of a namespace lookup
       * based on an examination of the namespace declarations in scope. It is
       * merely the namespace URI given at creation time.
       * <p>
       * For nodes of any type other than <CODE>ELEMENT_NODE</CODE> and
       * <CODE>ATTRIBUTE_NODE</CODE> and nodes created with a DOM Level 1 method,
       * such as <CODE>createElement</CODE> from the <CODE>IDOM_Document</CODE>
       * interface, this is always <CODE>null</CODE>.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      virtual const XMLCh *         getNamespaceURI() const/* = 0*/;
  
      /**
       * Get the <em>namespace prefix</em>
       * of this node, or <code>null</code> if it is unspecified.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      virtual const XMLCh *          getPrefix() const/* = 0*/;
  
      /**
       * Returns the local part of the <em>qualified name</em> of this node.
       * <p>
       * For nodes created with a DOM Level 1 method, such as
       * <code>createElement</code> from the <code>IDOM_Document</code> interface,
       * it is null.
       *
       *
       */
      virtual const XMLCh *          getLocalName() const/* = 0*/;
  
      /**
       * Set the <em>namespace prefix</em> of this node.
       * <p>
       * Note that setting this attribute, when permitted, changes
       * the <CODE>nodeName</CODE> attribute, which holds the <EM>qualified
       * name</EM>, as well as the <CODE>tagName</CODE> and <CODE>name</CODE>
       * attributes of the <CODE>IDOM_Element</CODE> and <CODE>IDOM_Attr</CODE>
       * interfaces, when applicable.
       * <p>
       * Note also that changing the prefix of an
       * attribute, that is known to have a default value, does not make a new
       * attribute with the default value and the original prefix appear, since the
       * <CODE>namespaceURI</CODE> and <CODE>localName</CODE> do not change.
       *
       *
       * @param prefix The prefix of this node.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified prefix contains
       *                          an illegal character.
       * <br>
       *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
       * <br>
       *   NAMESPACE_ERR: Raised if the specified <CODE>prefix</CODE> is
       *      malformed, if the <CODE>namespaceURI</CODE> of this node is
       *      <CODE>null</CODE>, if the specified prefix is "xml" and the
       *      <CODE>namespaceURI</CODE> of this node is different from
       *      "http://www.w3.org/XML/1998/namespace", if this node is an attribute
       *      and the specified prefix is "xmlns" and the
       *      <CODE>namespaceURI</CODE> of this node is different from
       *      "http://www.w3.org/2000/xmlns/", or if this node is an attribute and
       *      the <CODE>qualifiedName</CODE> of this node is "xmlns".
       */
      virtual void              setPrefix(const XMLCh * prefix)/* = 0*/;
  
      //@}
  
  
  };
  
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_NodeFilter.hpp
  
  Index: IDOM_NodeFilter.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_NodeFilter.hpp,v $
   * Revision 1.1  2001/07/09 15:20:10  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.3  2001/06/04 20:11:53  tng
   * IDOM: Complete IDNodeIterator, IDTreeWalker, IDNodeFilter.
   *
   * Revision 1.2  2001/05/11 13:25:53  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:31  andyh
   * IDOM
   *
   */
  
  // IDOM_NodeFilter.h: interface for the IDOM_NodeFilter class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #ifndef IDOM_NodeFilter_HEADER_GUARD_
  #define IDOM_NodeFilter_HEADER_GUARD_
  
  // #include "IDOM_Node.hpp"
  // 
  // class IDNodeFilterImpl;
  
  
  /**
   * Filters are objects that know how to "filter out" nodes. If a
   * <code>IDOM_NodeIterator</code> or <code>IDOM_TreeWalker</code> is given a
   * filter, it applies the filter before it returns the next node.
   *
   * If the filter says to accept the node, the iterator returns it; otherwise, the
   * iterator looks for the next node and pretends that the node that was rejected
   * was not there.
   *
   *  The DOM does not provide any filters. Filter is just an interface that users can
   *  implement to provide their own filters.
   *
   *  Filters do not need to know how to iterate, nor do they need to know anything
   *  about the data structure that is being iterated. This makes it very easy to write
   *  filters, since the only thing they have to know how to do is evaluate a single node.
   *  One filter may be used with a number of different kinds of iterators, encouraging
   *  code reuse.
   *
   * <p><b>"Experimental - subject to change"</b></p>
   *
   */
  class /*CDOM_EXPORT*/ IDOM_NodeFilter
  {
  //     protected:
  //         IDOM_NodeFilter() {};
  //         IDOM_NodeFilter(const IDOM_NodeFilter &other) {};
  //         IDOM_NodeFilter & operator = (const IDOM_NodeFilter &other) {return *this;};
  
      public:
          /** @name Enumerators for Node Filter */
          //@{
          /*
           *    <table><tr><td>FILTER_ACCEPT</td>
           *               <td>Accept the node. Navigation methods defined for
           *               NodeIterator or TreeWalker will return this node.</td>
           *           </tr>
           *           <tr>
           *               <td>FILTER_REJECT</td>
           *               <td>Reject the node. Navigation methods defined for
           *               NodeIterator or TreeWalker will not return this
           *               node. For TreeWalker, the children of this node will
           *               also be rejected. Iterators treat this as a synonym
           *               for FILTER_SKIP.</td>
           *           </tr>
           *           <tr><td>FILTER_SKIP</td>
           *               <td>Reject the node. Navigation methods defined for
           *               NodeIterator or TreeWalker will not return this
           *               node. For both NodeIterator and Treewalker, the
           *               children of this node will still be considered.</td>
           *           </tr>
           *    </table>
           *
           */
          enum FilterAction {FILTER_ACCEPT = 1,
                             FILTER_REJECT = 2,
                             FILTER_SKIP   = 3};
  
          enum ShowType {
              SHOW_ALL                       = 0x0000FFFF,
              SHOW_ELEMENT                   = 0x00000001,
              SHOW_ATTRIBUTE                 = 0x00000002,
              SHOW_TEXT                      = 0x00000004,
              SHOW_CDATA_SECTION             = 0x00000008,
              SHOW_ENTITY_REFERENCE          = 0x00000010,
              SHOW_ENTITY                    = 0x00000020,
              SHOW_PROCESSING_INSTRUCTION    = 0x00000040,
              SHOW_COMMENT                   = 0x00000080,
              SHOW_DOCUMENT                  = 0x00000100,
              SHOW_DOCUMENT_TYPE             = 0x00000200,
              SHOW_DOCUMENT_FRAGMENT         = 0x00000400,
              SHOW_NOTATION                  = 0x00000800
          };
          //@}
  
          /** @name Test function. */
          //@{
          /**
           * Test whether a specified node is visible in the logical view of a IDOM_TreeWalker
           * or IDOM_NodeIterator. This function will be called by the implementation of
           * IDOM_TreeWalker and IDOM_NodeIterator; it is not intended to be called directly from user
           * code.
           *
           * <p><b>"Experimental - subject to change"</b></p>
           *
           * @param node The node to check to see if it passes the filter or not.
           * @return A constant to determine whether the node is accepted, rejected, or skipped.
           */
      virtual short acceptNode (const IDOM_Node* node) const/* =0*/;
          //@}
  
  };
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_NodeIterator.hpp
  
  Index: IDOM_NodeIterator.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_NodeIterator.hpp,v $
   * Revision 1.1  2001/07/09 15:20:11  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.3  2001/06/04 20:11:53  tng
   * IDOM: Complete IDNodeIterator, IDTreeWalker, IDNodeFilter.
   *
   * Revision 1.2  2001/05/11 13:25:53  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:31  andyh
   * IDOM
   *
   */
  
  #ifndef IDOM_NodeIterator_HEADER_GUARD_
  #define IDOM_NodeIterator_HEADER_GUARD_
  
  // #include "IDOM_NodeFilter.hpp"
  // #include "IDOM_Node.hpp"
  // 
  // class IDNodeIteratorImpl;
  
  /**
   * NodeIterators are used to step through a set of nodes
   * e.g. the set of nodes in a NodeList, the document subtree governed by
   * a particular node, the results of a query, or any other set of nodes.
   * The set of nodes to be iterated is determined by the implementation
   * of the NodeIterator. DOM Level 2 specifies a single NodeIterator
   * implementation for document-order traversal of a document
   * subtree. Instances of these iterators are created by calling
   * <code>DocumentTraversal.createNodeIterator()</code>.
   *
   * <p><b>"Experimental - subject to change"</b></p>
   *
   */
  class /*CDOM_EXPORT*/ IDOM_NodeIterator
  {
  //     protected:
  //         IDOM_NodeIterator() {};
  //         IDOM_NodeIterator(const IDOM_NodeIterator &other) {};
  //         IDOM_NodeIterator & operator = (const IDOM_NodeIterator &other) {return *this;};
  
      public:
          /** @name Get functions. */
          //@{
          /**
            * Return which node types are presented via the iterator.
            * The available set of constants is defined in the IDOM_NodeFilter interface.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual unsigned long       getWhatToShow()/* = 0*/;
  
          /**
            * Return The filter used to screen nodes.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_NodeFilter*     getFilter()/* = 0*/;
  
          /**
            * Return the expandEntityReferences flag.
            * The value of this flag determines whether the children of entity reference
            * nodes are visible to the IDOM_NodeFilter. If false, they will be skipped over.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual bool getExpandEntityReferences()/* = 0*/;
  
          /**
            * Returns the next node in the set and advances the position of the iterator
            * in the set. After a IDOM_NodeIterator is created, the first call to nextNode()
            * returns the first node in the set.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            * @exception DOMException
            *   INVALID_STATE_ERR: Raised if this method is called after the
            *   <code>detach</code> method was invoked.
            */
          virtual IDOM_Node*           nextNode()/* = 0*/;
  
          /**
            * Returns the previous node in the set and moves the position of the iterator
            * backwards in the set.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            * @exception DOMException
            *   INVALID_STATE_ERR: Raised if this method is called after the
            *   <code>detach</code> method was invoked.
            */
          virtual IDOM_Node*           previousNode()/* = 0*/;
          //@}
  
          /** @name Detaching functions. */
          //@{
          /**
            * Detaches the iterator from the set which it iterated over, releasing any
            * computational resources and placing the iterator in the INVALID state. After
            * <code>detach</code> has been invoked, calls to <code>nextNode</code> or
            * <code>previousNode</code> will raise the exception INVALID_STATE_ERR.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual void                 detach()/* = 0*/;
          //@}
  };
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_NodeList.hpp
  
  Index: IDOM_NodeList.hpp
  ===================================================================
  #ifndef IDOM_NodeList_HEADER_GUARD_
  #define IDOM_NodeList_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_NodeList.hpp,v $
   * Revision 1.1  2001/07/09 15:20:11  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.3  2001/06/04 14:55:35  tng
   * IDOM: Add IRange and IDeepNodeList Support.
   *
   * Revision 1.2  2001/05/11 13:25:54  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:31  andyh
   * IDOM
   *
   */
  
  // #include <util/XercesDefs.hpp>
  // 
  // class IDOM_Node;
  
  
  /**
   * The <code>NodeList</code> interface provides the abstraction of an ordered
   * collection of nodes.  NodeLists are created by DOM_Document::getElementsByTagName(),
   * DOM_Node::getChildNodes(),
   *
   * <p>The items in the <code>NodeList</code> are accessible via an integral
   * index, starting from 0.
   *
   * NodeLists are "live", in that any changes to the document tree are immediately
   * reflected in any NodeLists that may have been created for that tree.
   */
  
  class  /*CDOM_EXPORT*/ IDOM_NodeList {
  // protected:
  //     IDOM_NodeList() {};
  //     IDOM_NodeList(const IDOM_NodeList &other) {};
  //     IDOM_NodeList & operator = (const IDOM_NodeList &other) {return *this;};
  
  public:
      /** @name Destructor. */
      //@{
  //    virtual ~IDOM_NodeList()  {};
      //@}
  
  
  
      /** @name Get functions. */
      //@{
      /**
       * Returns the <code>index</code>th item in the collection.
       *
       * If <code>index</code> is greater than or equal to the number of nodes in
       * the list, this returns <code>null</code>.
       *
       * @param index Index into the collection.
       * @return The node at the <code>index</code>th position in the
       *   <code>NodeList</code>, or <code>null</code> if that is not a valid
       *   index.
       */
      virtual IDOM_Node  *item(unsigned int index)/* = 0*/;
  
      /**
       * Returns the number of nodes in the list.
       *
       * The range of valid child node indices is 0 to <code>length-1</code> inclusive.
       */
      virtual unsigned int getLength()/* = 0*/;
      //@}
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Notation.hpp
  
  Index: IDOM_Notation.hpp
  ===================================================================
  #ifndef IDOM_Notation_HEADER_GUARD_
  #define IDOM_Notation_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_Notation.hpp,v $
   * Revision 1.1  2001/07/09 15:20:11  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:54  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:32  andyh
   * IDOM
   *
   */
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  
  
  /**
   * This interface represents a notation declared in the DTD. A notation either
   * declares, by name, the format of an unparsed entity (see section 4.7 of
   * the XML 1.0 specification), or is used for formal declaration of
   * Processing Instruction targets (see section 2.6 of the XML 1.0
   * specification). The <code>nodeName</code> attribute inherited from
   * <code>Node</code> is set to the declared name of the notation.
   * <p>The DOM Level 1 does not support editing <code>Notation</code> nodes;
   * they are therefore readonly.
   * <p>A <code>Notation</code> node does not have any parent.
   */
  class /*CDOM_EXPORT*/ IDOM_Notation: public IDOM_Node {
  // protected:
  //     IDOM_Notation() {};
  //     IDOM_Notation(const IDOM_Notation &other) {};
  //     IDOM_Notation & operator = (const IDOM_Notation &other) {return *this;};
  
  public:
  //    virtual ~IDOM_Notation() {};
  
      /** @name Get functions. */
      //@{
  
      /**
       * Get the public identifier of this notation.
       *
       * If the  public identifier was not
       * specified, this is <code>null</code>.
       * @return Returns the public identifier of the notation
       */
      virtual const XMLCh *getPublicId() const/* = 0*/;
      /**
       * Get the system identifier of this notation.
       *
       * If the  system identifier was not
       * specified, this is <code>null</code>.
       * @return Returns the system identifier of the notation
       */
      virtual const XMLCh *getSystemId() const/* = 0*/;
  
  
      //@}
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_ProcessingInstruction.hpp
  
  Index: IDOM_ProcessingInstruction.hpp
  ===================================================================
  #ifndef IDOM_ProcessingInstruction_HEADER_GUARD_
  #define IDOM_ProcessingInstruction_HEADER_GUARD_
  
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_ProcessingInstruction.hpp,v $
   * Revision 1.1  2001/07/09 15:20:11  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:54  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:32  andyh
   * IDOM
   *
   */
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_Node.hpp"
  
  
  /**
   * The <code>ProcessingInstruction</code> interface represents a  "processing
   * instruction", used in XML as a way to keep processor-specific information
   * in the text of the document.
   */
  class  /*CDOM_EXPORT*/ IDOM_ProcessingInstruction: public IDOM_Node {
  // protected:
  //     IDOM_ProcessingInstruction() {};
  // 
  //     IDOM_ProcessingInstruction(const IDOM_ProcessingInstruction &other) {};
  //     IDOM_ProcessingInstruction & operator = (const IDOM_ProcessingInstruction &other) {return *this;};
  
  public:
  //    virtual ~IDOM_ProcessingInstruction() {};
  
      //@}
      /** @name Get functions. */
      //@{
      /**
       * The target of this processing instruction.
       *
       * XML defines this as being the
       * first token following the markup that begins the processing instruction.
       */
      virtual const XMLCh *        getTarget() const/* = 0*/;
  
      /**
       * The content of this processing instruction.
       *
       * This is from the first non
       * white space character after the target to the character immediately
       * preceding the <code>?&gt;</code>.
       * @exception DOMException
       *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
       */
      virtual const XMLCh *        getData() const/* = 0*/;
  
      //@}
      /** @name Set functions. */
      //@{
      /**
      * Sets the content of this processing instruction.
      *
      * This is from the first non
      * white space character after the target to the character immediately
      * preceding the <code>?&gt;</code>.
      * @param data The string containing the processing instruction
      */
      virtual void             setData(const XMLCh * data)/* = 0*/;
      //@}
  
  };
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Range.hpp
  
  Index: IDOM_Range.hpp
  ===================================================================
  #ifndef IDOM_Range_HEADER_GUARD_
  #define IDOM_Range_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: IDOM_Range.hpp,v 1.1 2001/07/09 15:20:12 jasons Exp $
   */
  
  // #include <util/XercesDefs.hpp>
  // 
  // class IDOM_Node;
  // class IDOM_DocumentFragment;
  // 
  class /*CDOM_EXPORT*/ IDOM_Range {
  // protected:
  //     IDOM_Range() {};
  //     IDOM_Range(const IDOM_Range &other) {};
  //     IDOM_Range & operator = (const IDOM_Range &other) {return *this;};
  
  public:
  
      enum CompareHow {
          START_TO_START  = 0,
          START_TO_END    = 1,
          END_TO_END      = 2,
          END_TO_START    = 3
      };
  
  //    virtual ~IDOM_Range() {};
  
      //getter functions
      virtual IDOM_Node* getStartContainer() const/* = 0*/;
      virtual unsigned int getStartOffset() const/* = 0*/;
      virtual IDOM_Node* getEndContainer() const/* = 0*/;
      virtual unsigned int getEndOffset() const/* = 0*/;
      virtual bool getCollapsed() const/* = 0*/;
      virtual const IDOM_Node* getCommonAncestorContainer() const/* = 0*/;
  
      //setter functions
      virtual void setStart(const IDOM_Node *parent, unsigned int offset)/* = 0*/;
      virtual void setEnd(const IDOM_Node *parent, unsigned int offset)/* = 0*/;
  
      virtual void setStartBefore(const IDOM_Node *refNode)/* = 0*/;
      virtual void setStartAfter(const IDOM_Node *refNode)/* = 0*/;
      virtual void setEndBefore(const IDOM_Node *refNode)/* = 0*/;
      virtual void setEndAfter(const IDOM_Node *refNode)/* = 0*/;
  
      //misc functions
      virtual void collapse(bool toStart)/* = 0*/;
      virtual void selectNode(const IDOM_Node *node)/* = 0*/;
      virtual void selectNodeContents(const IDOM_Node *node)/* = 0*/;
  
      //Functions related to comparing range Boundrary-Points
      virtual short compareBoundaryPoints(CompareHow how, const IDOM_Range* range) const/* = 0*/;
      virtual void deleteContents()/* = 0*/;
      virtual IDOM_DocumentFragment* extractContents()/* = 0*/;
      virtual IDOM_DocumentFragment* cloneContents() const/* = 0*/;
      virtual void insertNode(IDOM_Node *node)/* = 0*/;
      //Misc functions
      virtual void surroundContents(IDOM_Node *node)/* = 0*/;
      virtual IDOM_Range* cloneRange() const/* = 0*/;
      virtual const XMLCh* toString() const/* = 0*/;
      virtual void detach()/* = 0*/;
  
  };
  
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_RangeException.hpp
  
  Index: IDOM_RangeException.hpp
  ===================================================================
  #ifndef IDOM_RangeException_HEADER_GUARD_
  #define IDOM_RangeException_HEADER_GUARD_
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_RangeException.hpp,v $
   * Revision 1.1  2001/07/09 15:20:12  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.3  2001/06/04 14:55:36  tng
   * IDOM: Add IRange and IDeepNodeList Support.
   *
   * Revision 1.2  2001/05/11 13:25:55  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:32  andyh
   * IDOM
   *
   */
  
  // #include <idom/IDOM_DOMException.hpp>
  
  /**
    * Encapsulate range related DOM error or warning. DOM level 2 implementation.
    *
    * <p> The DOM will create and throw an instance of IDOM_RangeException
    * when an error condition in range is detected.  Exceptions can occur
    * when an application directly manipulates the range elements in DOM document
    * tree that is produced by the parser.
    *
    * <p>Unlike the other classes in the C++ DOM API, IDOM_RangeException
    * is NOT a reference to an underlying implementation class, and
    * does not provide automatic memory management.  Code that catches
    * a DOM Range exception is responsible for deleting it, or otherwise
    * arranging for its disposal.
    *
    */
  class /*CDOM_EXPORT*/ IDOM_RangeException  : public IDOM_DOMException {
  public:
      /** @name Enumerators for DOM Range Exceptions */
      //@{
          enum RangeExceptionCode {
                  BAD_BOUNDARYPOINTS_ERR  = 1,
                  INVALID_NODE_TYPE_ERR   = 2
          };
      //@}
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for IDOM_RangeException.
        *
        */
      IDOM_RangeException();
  
      /**
        * Constructor which takes an error code and a message.
        *
        * @param code The error code which indicates the exception
        * @param message The string containing the error message
        */
      IDOM_RangeException(RangeExceptionCode code, const XMLCh* message);
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
      IDOM_RangeException(const IDOM_RangeException &other);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for IDOM_RangeException.  Applications are responsible
        * for deleting IDOM_RangeException objects that they catch after they
        * have completed their exception processing.
  	  *
  	  */
  //    virtual ~IDOM_RangeException();
      //@}
  
      /** @name Public variables. */
       //@{
  	 /**
  	  * A code value, from the set defined by the RangeExceptionCode enum,
        * indicating the type of error that occured.
  	  */
     IDOM_RangeException::RangeExceptionCode   code;
  
      //@}
  
  };
  
  #endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_Text.hpp
  
  Index: IDOM_Text.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_Text.hpp,v $
   * Revision 1.1  2001/07/09 15:20:12  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.2  2001/05/11 13:25:55  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:32  andyh
   * IDOM
   *
   */
  
  #ifndef IDOM_Text_HEADER_GUARD_
  #define IDOM_Text_HEADER_GUARD_
  
  // #include <util/XercesDefs.hpp>
  // #include "IDOM_CharacterData.hpp"
  
  
  
  /**
   * The <code>Text</code> interface represents the textual content (termed
   * character  data in XML) of an <code>Element</code> or <code>Attr</code>.
   * If there is no markup inside an element's content, the text is contained
   * in a single object implementing the <code>Text</code> interface that is
   * the only child of the element. If there is markup, it is parsed into a
   * list of elements and <code>Text</code> nodes that form the list of
   * children of the element.
   * <p>When a document is first made available via the DOM, there is  only one
   * <code>Text</code> node for each block of text. Users may create  adjacent
   * <code>Text</code> nodes that represent the  contents of a given element
   * without any intervening markup, but should be aware that there is no way
   * to represent the separations between these nodes in XML, so they
   * will not (in general) persist between DOM editing sessions. The
   * <code>normalize()</code> method on <code>Element</code> merges any such
   * adjacent <code>Text</code> objects into a single node for each block of
   * text; this is  recommended before employing operations that depend on a
   * particular document structure, such as navigation with
   * <code>XPointers.</code>
   */
  class /*CDOM_EXPORT*/ IDOM_Text: public IDOM_CharacterData {
  
  //     protected:
  //     /** @name Constructors and assignment operator */
  //     //@{
  //         IDOM_Text() {};
  // 
  //         IDOM_Text(const IDOM_Text &other) {};
  // 
  //         IDOM_Text & operator = (const IDOM_Text &other) {return *this;};
  
  
      //@}
      public:
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for IDOM_Text. The object being destroyed is the reference
        * object, not the underlying Comment node itself.
  	  *
  	  */
  //        virtual ~IDOM_Text() {};
  
      //@}
      /** @name Functions to modify the Text node. */
      //@{
  
      /**
       * Breaks this node into two nodes at the specified
       * offset, keeping both in the tree as siblings.
       *
       * This node then only
       * contains all the content up to the <code>offset</code> point. And a new
       * node of the same nodeType, which is inserted as the next sibling of this
       * node, contains all the content at and after the <code>offset</code>
       * point. When the <code>offset</code> is equal to the lenght of this node,
       * the new node has no data.
       * @param offset The offset at which to split, starting from 0.
       * @return The new <code>Text</code> node.
       * @exception DOMException
       *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
       *   than the number of characters in <code>data</code>.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
       */
      virtual IDOM_Text *splitText(unsigned int offset)/* = 0*/;
  
      //@}
      /** @name Non-standard (not defined by the DOM specification) functions. */
      //@{
  
      /**
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * Return true if this node contains ignorable whitespaces only.
       * @return True if this node contains ignorable whitespaces only.
       */
      virtual bool isIgnorableWhitespace() const/* = 0*/;
  
      //@}
  
  };
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/idom/IDOM_TreeWalker.hpp
  
  Index: IDOM_TreeWalker.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: IDOM_TreeWalker.hpp,v $
   * Revision 1.1  2001/07/09 15:20:12  jasons
   * New headers/tests for IDOM support and Exception handling
   *
   * Revision 1.3  2001/06/04 20:11:53  tng
   * IDOM: Complete IDNodeIterator, IDTreeWalker, IDNodeFilter.
   *
   * Revision 1.2  2001/05/11 13:25:56  tng
   * Copyright update.
   *
   * Revision 1.1.1.1  2001/04/03 00:14:33  andyh
   * IDOM
   *
   */
  
  #ifndef IDOM_TreeWalker_HEADER_GUARD_
  #define IDOM_TreeWalker_HEADER_GUARD_
  
  // #include "IDOM_Node.hpp"
  // #include "IDOM_NodeFilter.hpp"
  
  
  /**
   * <code>IDOM_TreeWalker</code> objects are used to navigate a document tree or
   * subtree using the view of the document defined by its <code>whatToShow</code>
   * flags and any filters that are defined for the <code>IDOM_TreeWalker</code>. Any
   * function which performs navigation using a <code>IDOM_TreeWalker</code> will
   * automatically support any view defined by a <code>IDOM_TreeWalker</code>.
   *
   * Omitting nodes from the logical view of a subtree can result in a structure that is
   * substantially different from the same subtree in the complete, unfiltered document. Nodes
   * that are siblings in the IDOM_TreeWalker view may be children of different, widely separated
   * nodes in the original view. For instance, consider a Filter that skips all nodes except for
   * Text nodes and the root node of a document. In the logical view that results, all text
   * nodes will be siblings and appear as direct children of the root node, no matter how
   * deeply nested the structure of the original document.
   *
   * <p><b>"Experimental - subject to change"</b></p>
   *
   */
  class /*CDOM_EXPORT*/ IDOM_TreeWalker {
  //     protected:
  //         IDOM_TreeWalker() {};
  //         IDOM_TreeWalker(const IDOM_TreeWalker &other) {};
  //         IDOM_TreeWalker & operator = (const IDOM_TreeWalker &other) {return *this;};
  
      public:
          /** @name Get functions. */
          //@{
          /**
            * Return which node types are presented via the IDOM_TreeWalker.
            * These constants are defined in the IDOM_NodeFilter interface.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual unsigned long   	getWhatToShow()/* = 0*/;
  
          /**
            * Return The filter used to screen nodes.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_NodeFilter*		getFilter()/* = 0*/;
  
          /**
            * Return the expandEntityReferences flag.
            * The value of this flag determines whether the children of entity reference
            * nodes are visible to the IDOM_TreeWalker. If false, they will be skipped over.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual bool getExpandEntityReferences()/* = 0*/;
  
          /**
            * Return the node at which the IDOM_TreeWalker is currently positioned.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		getCurrentNode()/* = 0*/;
  
          /**
            * Moves to and returns the closest visible ancestor node of the current node.
            * If the search for parentNode attempts to step upward from the IDOM_TreeWalker's root
            * node, or if it fails to find a visible ancestor node, this method retains the
            * current position and returns null.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		parentNode()/* = 0*/;
  
          /**
            * Moves the <code>IDOM_TreeWalker</code> to the first child of the current node,
            * and returns the new node. If the current node has no children, returns
            * <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		firstChild()/* = 0*/;
  
          /**
            * Moves the <code>IDOM_TreeWalker</code> to the last child of the current node, and
            * returns the new node. If the current node has no children, returns
            * <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		lastChild()/* = 0*/;
  
          /**
            * Moves the <code>IDOM_TreeWalker</code> to the previous sibling of the current
            * node, and returns the new node. If the current node has no previous sibling,
            * returns <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		previousSibling()/* = 0*/;
  
          /**
            * Moves the <code>IDOM_TreeWalker</code> to the next sibling of the current node,
            * and returns the new node. If the current node has no next sibling, returns
            * <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		nextSibling()/* = 0*/;
  
          /**
            * Moves the <code>IDOM_TreeWalker</code> to the previous visible node in document
            * order relative to the current node, and returns the new node. If the current
            * node has no previous node,
            * or if the search for previousNode attempts to step upward from the IDOM_TreeWalker's
            * root node, returns <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		previousNode()/* = 0*/;
  
          /**
            * Moves the <code>IDOM_TreeWalker</code> to the next visible node in document order
            * relative to the current node, and returns the new node. If the current node has
            * no next node,
            * or if the search for nextNode attempts to step upward from the IDOM_TreeWalker's
            * root node, returns <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual IDOM_Node*		nextNode()/* = 0*/;
          //@}
  
          /** @name Set functions. */
          //@{
          /**
            * Set the node at which the IDOM_TreeWalker is currently positioned.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          virtual void			setCurrentNode(IDOM_Node* currentNode)/* = 0*/;
          //@}
  };
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/parsers/IDOMParser.hpp
  
  Index: IDOMParser.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: IDOMParser.hpp,v 1.1 2001/07/09 15:20:15 jasons Exp $
   *
   */
  
  #if !defined(IDOMPARSER_HPP)
  #define IDOMPARSER_HPP
  
  
  // #include <idom/IDOM_Document.hpp>
  #include <framework/XMLDocumentHandler.hpp>
  #include <framework/XMLErrorReporter.hpp>
  #include <framework/XMLEntityHandler.hpp>
  // #include <util/ValueStackOf.hpp>
  // 
  // #include <validators/DTD/DocTypeHandler.hpp>
  // #include <idom/IDOM_DocumentType.hpp>
  // #include <validators/DTD/DTDElementDecl.hpp>
  // 
  // class EntityResolver;
  // class ErrorHandler;
  // class XMLPScanToken;
  // class XMLScanner;
  // class XMLValidator;
  // class IDDocumentImpl;
  // class IDDocumentTypeImpl;
  
  
  /**
    * This class implements the Document Object Model (DOM) interface.
    * It should be used by applications which choose to parse and
    * process the XML document using the DOM api's. This implementation
    * also allows the applications to install an error and an entitty
    * handler (useful extensions to the DOM specification).
    *
    * <p>It can be used to instantiate a validating or non-validating
    * parser, by setting a member flag.</p>
    */
  class /*PARSERS_EXPORT*/ IDOMParser :    public XMLDocumentHandler    , public XMLErrorReporter    , public XMLEntityHandler    , public DocTypeHandler {
  public :
      // -----------------------------------------------------------------------
      //  Class types
      // -----------------------------------------------------------------------
      enum ValSchemes
      {
          Val_Never
          , Val_Always
          , Val_Auto
      };
  
  
      // -----------------------------------------------------------------------
      //  Constructors and Detructor
      // -----------------------------------------------------------------------
  
      /** @name Constructors and Destructor */
      //@{
      /** Construct a IDOMParser, with an optional validator
        *
        * Constructor with an instance of validator class to use for
        * validation. If you don't provide a validator, a default one will
        * be created for you in the scanner.
        *
        * @param valToAdopt Pointer to the validator instance to use. The
        *                   parser is responsible for freeing the memory.
        */
      IDOMParser(/*XMLValidator* const valToAdopt = 0*/);
  
      /**
        * Destructor
        */
  //    ~IDOMParser();
  
      //@}
  
      /** Reset the parser
        *
        * This method resets the state of the IDOM driver and makes
        * it ready for a fresh parse run.
        */
      void reset();
  
  
      // -----------------------------------------------------------------------
      //  Getter methods
      // -----------------------------------------------------------------------
  
      /** @name Getter methods */
      //@{
  
      /** Get the IDOM document
        *
        * This method returns the IDOM_Document object representing the
        * root of the document tree. This object provides the primary
        * access to the document's data.
        *
        * @return The IDOM_Document object which represents the entire
        *         XML document.
        */
      IDOM_Document* getDocument();
  
      /** Get a pointer to the error handler
        *
        * This method returns the installed error handler. If no handler
        * has been installed, then it will be a zero pointer.
        *
        * @return The pointer to the installed error handler object.
        */
      ErrorHandler* getErrorHandler();
  
      /** Get a const pointer to the error handler
        *
        * This method returns the installed error handler.  If no handler
        * has been installed, then it will be a zero pointer.
        *
        * @return A const pointer to the installed error handler object.
        */
      const ErrorHandler* getErrorHandler() const;
  
      /** Get a pointer to the entity resolver
        *
        * This method returns the installed entity resolver.  If no resolver
        * has been installed, then it will be a zero pointer.
        *
        * @return The pointer to the installed entity resolver object.
        */
      EntityResolver* getEntityResolver();
  
      /** Get a const pointer to the entity resolver
        *
        * This method returns the installed entity resolver. If no resolver
        * has been installed, then it will be a zero pointer.
        *
        * @return A const pointer to the installed entity resolver object.
        */
      const EntityResolver* getEntityResolver() const;
  
      /** Get a const reference to the underlying scanner
        *
        * This method returns a reference to the underlying scanner object.
        * It allows read only access to data maintained in the scanner.
        *
        * @return A const reference to the underlying scanner object.
        */
      const XMLScanner& getScanner() const;
  
      /** Get a const reference to the validator
        *
        * This method returns a reference to the parser's installed
        * validator.
        *
        * @return A const reference to the installed validator object.
        */
      const XMLValidator& getValidator() const;
  
      /**
        * This method returns an enumerated value that indicates the current
        * validation scheme set on this parser.
        *
        * @return The ValSchemes value current set on this parser.
        * @see #setValidationScheme
        */
      ValSchemes getValidationScheme() const;
  
      /** Get the 'do schema' flag
        *
        * This method returns the state of the parser's schema processing
        * flag.
        *
        * @return true, if the parser is currently configured to
        *         understand schema, false otherwise.
        *
        * @see #setDoSchema
        */
      bool getDoSchema() const;
  
      /** Get error count from the last parse operation.
        *
        * This method returns the error count from the last parse
        * operation. Note that this count is actually stored in the
        * scanner, so this method simply returns what the
        * scanner reports.
        *
        * @return number of errors encountered during the latest
        *			parse operation.
        *
        */
      int getErrorCount() const;
  
      /** Get the 'do namespaces' flag
        *
        * This method returns the state of the parser's namespace processing
        * flag.
        *
        * @return true, if the parser is currently configured to
        *         understand namespaces, false otherwise.
        *
        * @see #setDoNamespaces
        */
      bool getDoNamespaces() const;
  
      /** Get the 'exit on first error' flag
        *
        * This method returns the state of the parser's
        * exit-on-First-Fatal-Error flag. If this flag is true, then the
        * parse will exit the first time it sees any non-wellformed XML or
        * any validity error. The default state is true.
        *
        * @return true, if the parser is currently configured to
        *         exit on the first fatal error, false otherwise.
        *
        * @see #setExitOnFirstFatalError
        */
      bool getExitOnFirstFatalError() const;
  
      /**
        * This method returns the state of the parser's
        * validation-constraint-fatal flag.
        *
        * @return true, if the parser is currently configured to
        *         set validation constraint errors as fatal, false
        *         otherwise.
        *
        * @see #setValidationContraintFatal
        */
      bool getValidationConstraintFatal() const;
  
      /** Get the 'expand entity references' flag.
        * DEPRECATED Use getCreateEntityReferenceNodes() instead.
        *
        * This method returns the state of the parser's expand entity
        * references flag.
        *
        * @return 'true' if the expand entity reference flag is set on
        *         the parser, 'false' otherwise.
        *
        * @see #setExpandEntityReferences
        */
      bool getExpandEntityReferences() const;
  
      /** Get the 'include entity references' flag
        *
        * This flag  specifies whether the parser is
        * creating entity reference nodes in the DOM tree being produced.
        * When the 'create' flag is
        * true, the DOM tree will contain entity reference nodes.
        * When the 'create' flag is false, no entity reference nodes
        * are included in the DOM tree.
        * <p>The replacement text
        * of the entity is included in either case, either as a
        * child of the Entity Reference node or in place at the location
        * of the reference.
        *
        * @return  The state of the create entity reference node
        *               flag.
        * @see #setCreateEntityReferenceNodes
        */
      bool  getCreateEntityReferenceNodes()const;
  
     /** Get the 'include ignorable whitespace' flag.
        *
        * This method returns the state of the parser's include ignorable
        * whitespace flag.
        *
        * @return 'true' if the include ignorable whitespace flag is set on
        *         the parser, 'false' otherwise.
        *
        * @see #setIncludeIgnorableWhitespace
        */
      bool getIncludeIgnorableWhitespace() const;
  
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Setter methods
      // -----------------------------------------------------------------------
  
      /** @name Setter methods */
      //@{
  
      /** Set the error handler
        *
        * This method allows applications to install their own error handler
        * to trap error and warning messages.
        *
        * <i>Any previously set handler is merely dropped, since the parser
        * does not own them.</i>
        *
        * @param handler  A const pointer to the user supplied error
        *                 handler.
        *
        * @see #getErrorHandler
        */
      void setErrorHandler(ErrorHandler* /*const*/ handler);
  
      /** Set the entity resolver
        *
        * This method allows applications to install their own entity
        * resolver. By installing an entity resolver, the applications
        * can trap and potentially redirect references to external
        * entities.
        *
        * <i>Any previously set resolver is merely dropped, since the parser
        * does not own them.</i>
        *
        * @param handler  A const pointer to the user supplied entity
        *                 resolver.
        *
        * @see #getEntityResolver
        */
      void setEntityResolver(EntityResolver* /*const*/ handler);
  
      /** Set the 'do namespaces' flag
        *
        * This method allows users to enable or disable the parser's
        * namespace processing. When set to true, parser starts enforcing
        * all the constraints and rules specified by the NameSpace
        * specification.
        *
        * The parser's default state is: false.
        *
        * This flag is ignored by the underlying scanner if the installed
        * validator indicates that namespace constraints should be
        * enforced.
        *
        * @param newState The value specifying whether NameSpace rules should
        *                 be enforced or not.
        *
        * @see #getDoNamespaces
        */
      void setDoNamespaces(const bool newState);
  
      /** Set the 'exit on first error' flag
        *
        * This method allows users to set the parser's behaviour when it
        * encounters the first fatal error. If set to true, the parser
        * will exit at the first fatal error. If false, then it will
        * report the error and continue processing.
        *
        * The default value is 'true' and the parser exits on the
        * first fatal error.
        *
        * @param newState The value specifying whether the parser should
        *                 continue or exit when it encounters the first
        *                 fatal error.
        *
        * @see #getExitOnFirstFatalError
        */
      void setExitOnFirstFatalError(const bool newState);
  
      /**
        * This method allows users to set the parser's behaviour when it
        * encounters a validtion constraint error. If set to true, and the
        * the parser is set to exit when it encounter the first fatal error,
        * the parser will exit at the first encounter. If false, then it will
        * report the error and continue processing.
        *
        * <p>The default value is 'false'.</p>
        *
        * @param newState The value specifying whether the parser should
        *                 continue or exit when it encounters a validation
        *                 constraint error.
        *
        * @see #getValidationConstraintFatal
        */
      void setValidationConstraintFatal(const bool newState);
  
      /** Set the 'expand entity references' flag
        *
        * DEPRECATED.  USE setCreateEntityReferenceNodes instead.
        * This method allows the user to specify whether the parser should
        * expand all entity reference nodes. When the 'do expansion' flag is
        * true, the DOM tree does not have any entity reference nodes. It is
        * replaced by the sub-tree representing the replacement text of the
        * entity. When the 'do expansion' flag is false, the DOM tree
        * contains an extra entity reference node, whose children is the
        * sub tree of the replacement text.
        *
        * @param expand The new state of the expand entity reference
        *               flag.
        */
      void setExpandEntityReferences(const bool expand);
  
       /** Set the 'include entity references' flag
        *
        * This method allows the user to specify whether the parser should
        * create entity reference nodes in the DOM tree being produced.
        * When the 'create' flag is
        * true, the DOM tree constains entity reference nodes.
        * When the 'create' flag is false, no entity reference nodes
        * are included in the DOM tree.
        * <p>The replacement text
        * of the entity is included in either case, either as a
        * child of the Entity Reference node or in place at the location
        * of the reference.
        *
        * @param create The new state of the create entity reference nodes
        *               flag.
        */
      void setCreateEntityReferenceNodes(const bool create);
  
     /** Set the 'include ignorable whitespace' flag
        *
        * This method allows the user to specify whether a validating parser
        * should include ignorable whitespaces as text nodes.  It has no effect
        * on non-validating parsers which always include non-markup text.
        * <p>When set to true (also the default), ignorable whitespaces will be
        * added to the DOM tree as text nodes.  The method
        * IDOM_Text::isIgnorableWhitespace() will return true for those text
        * nodes only.
        * <p>When set to false, all ignorable whitespace will be discarded and
        * no text node is added to the DOM tree.  Note: applications intended
        * to process the "xml:space" attribute should not set this flag to false.
        * And this flag also overrides any schema datateye whitespace facets,
        * that is, all ignorable whitespace will be discarded even though
        * 'preserve' is set in schema datatype whitespace facets.
        *
        * @param include The new state of the include ignorable whitespace
        *                flag.
        *
        * @see #getIncludeIgnorableWhitespace
        */
      void setIncludeIgnorableWhitespace(const bool include);
  
      /**
        * This method allows users to set the validation scheme to be used
        * by this parser. The value is one of the ValSchemes enumerated values
        * defined by this class:
        *
        * <br>  Val_Never  - turn off validation
        * <br>  Val_Always - turn on validation
        * <br>  Val_Auto   - turn on validation if any internal/external
        *                  DTD subset have been seen
        *
        * <p>The parser's default state is: Val_Auto.</p>
        *
        * @param newScheme The new validation scheme to use.
        *
        * @see #getValidationScheme
        */
      void setValidationScheme(const ValSchemes newScheme);
  
      /** Set the 'do schema' flag
        *
        * This method allows users to enable or disable the parser's
        * schema processing. When set to false, parser will not process
        * any schema found.
        *
        * The parser's default state is: true.
        *
        * @param newState The value specifying whether schema support should
        *                 be enforced or not.
        *
        * @see #getDoSchema
        */
      void setDoSchema(const bool newState);
  
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Parsing methods
      // -----------------------------------------------------------------------
  
      /** @name Parsing methods */
      //@{
  
      /** Parse via an input source object
        *
        * This method invokes the parsing process on the XML file specified
        * by the InputSource parameter. This API is borrowed from the
        * SAX Parser interface.
        *
        * @param source A const reference to the InputSource object which
        *               points to the XML file to be parsed.
        * @param reuseGrammar The flag indicating whether the existing Grammar
        *                     should be reused or not for this parsing run.
        *                     If true, there cannot be any internal subset.
        * @see Parser#parse(InputSource)
        */
      void parse(const InputSource& source, const bool reuseGrammar = false);
  
      /** Parse via a file path or URL
        *
        * This method invokes the parsing process on the XML file specified by
        * the Unicode string parameter 'systemId'. This method is borrowed
        * from the SAX Parser interface.
        *
        * @param systemId A const XMLCh pointer to the Unicode string which
        *                 contains the path to the XML file to be parsed.
        * @param reuseGrammar The flag indicating whether the existing Grammar
        *                     should be reused or not for this parsing run.
        *                     If true, there cannot be any internal subset.
        *
        * @see Parser#parse(XMLCh*)
        */
      void parse(const XMLCh* /*const*/ systemId, const bool reuseGrammar = false);
  
      /** Parse via a file path or URL (in the local code page)
        *
        * This method invokes the parsing process on the XML file specified by
        * the native char* string parameter 'systemId'.
        *
        * @param systemId A const char pointer to a native string which
        *                 contains the path to the XML file to be parsed.
        * @param reuseGrammar The flag indicating whether the existing Grammar
        *                     should be reused or not for this parsing run.
        *                     If true, there cannot be any internal subset.
        */
      void parse(const char* /*const*/ systemId, const bool reuseGrammar = false);
  
      /** Begin a progressive parse operation
        *
        * This method is used to start a progressive parse on a XML file.
        * To continue parsing, subsequent calls must be to the parseNext
        * method.
        *
        * It scans through the prolog and returns a token to be used on
        * subsequent scanNext() calls. If the return value is true, then the
        * token is legal and ready for further use. If it returns false, then
        * the scan of the prolog failed and the token is not going to work on
        * subsequent scanNext() calls.
        *
        * @param systemId A pointer to a Unicode string represting the path
        *                 to the XML file to be parsed.
        * @param toFill   A token maintaing state information to maintain
        *                 internal consistency between invocation of 'parseNext'
        *                 calls.
        * @param reuseGrammar The flag indicating whether the existing Grammar
        *                     should be reused or not for this parsing process.
        *                     If true, there cannot be any internal subset.
        * @return 'true', if successful in parsing the prolog. It indicates the
        *         user can go ahead with parsing the rest of the file. It
        *         returns 'false' to indicate that the parser could not parse
        *         the prolog.
        *
        * @see #parseNext
        * @see #parseFirst(char*,...)
        * @see #parseFirst(InputSource&,...)
        */
      bool parseFirst
      (
          const   XMLCh* /*const*/    systemId
          ,       XMLPScanToken&  toFill
          , const bool            reuseGrammar = false
      );
  
      /** Begin a progressive parse operation
        *
        * This method is used to start a progressive parse on a XML file.
        * To continue parsing, subsequent calls must be to the parseNext
        * method.
        *
        * It scans through the prolog and returns a token to be used on
        * subsequent scanNext() calls. If the return value is true, then the
        * token is legal and ready for further use. If it returns false, then
        * the scan of the prolog failed and the token is not going to work on
        * subsequent scanNext() calls.
        *
        * @param systemId A pointer to a regular native string represting
        *                 the path to the XML file to be parsed.
        * @param toFill   A token maintaing state information to maintain
        *                 internal consistency between invocation of 'parseNext'
        *                 calls.
        * @param reuseGrammar The flag indicating whether the existing Grammar
        *                     should be reused or not for this parsing run.
        *                     If true, there cannot be any internal subset.
        *
        * @return 'true', if successful in parsing the prolog. It indicates the
        *         user can go ahead with parsing the rest of the file. It
        *         returns 'false' to indicate that the parser could not parse
        *         the prolog.
        *
        * @see #parseNext
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(InputSource&,...)
        */
      bool parseFirst
      (
          const   char* /*const*/     systemId
          ,       XMLPScanToken&  toFill
          , const bool            reuseGrammar = false
      );
  
      /** Begin a progressive parse operation
        *
        * This method is used to start a progressive parse on a XML file.
        * To continue parsing, subsequent calls must be to the parseNext
        * method.
        *
        * It scans through the prolog and returns a token to be used on
        * subsequent scanNext() calls. If the return value is true, then the
        * token is legal and ready for further use. If it returns false, then
        * the scan of the prolog failed and the token is not going to work on
        * subsequent scanNext() calls.
        *
        * @param source   A const reference to the InputSource object which
        *                 points to the XML file to be parsed.
        * @param toFill   A token maintaing state information to maintain
        *                 internal consistency between invocation of 'parseNext'
        *                 calls.
        * @param reuseGrammar The flag indicating whether the existing Grammar
        *                     should be reused or not for this parsing process.
        *                     If true, there cannot be any internal subset.
        *
        * @return 'true', if successful in parsing the prolog. It indicates the
        *         user can go ahead with parsing the rest of the file. It
        *         returns 'false' to indicate that the parser could not parse
        *         the prolog.
        *
        * @see #parseNext
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(char*,...)
        */
      bool parseFirst
      (
          const   InputSource&    source
          ,       XMLPScanToken&  toFill
          , const bool            reuseGrammar = false
      );
  
      /** Continue a progressive parse operation
        *
        * This method is used to continue with progressive parsing of
        * XML files started by a call to 'parseFirst' method.
        *
        * It parses the XML file and stops as soon as it comes across
        * a XML token (as defined in the XML specification).
        *
        * @param token A token maintaing state information to maintain
        *              internal consistency between invocation of 'parseNext'
        *              calls.
        *
        * @return 'true', if successful in parsing the next XML token.
        *         It indicates the user can go ahead with parsing the rest
        *         of the file. It returns 'false' to indicate that the parser
        *         could not find next token as per the XML specification
        *         production rule.
        *
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(char*,...)
        * @see #parseFirst(InputSource&,...)
        */
      bool parseNext(XMLPScanToken& token);
  
      /** Reset the parser after a progressive parse
        *
        * If a progressive parse loop exits before the end of the document
        * is reached, the parser has no way of knowing this. So it will leave
        * open any files or sockets or memory buffers that were in use at
        * the time that the parse loop exited.
        *
        * The next parse operation will cause these open files and such to
        * be closed, but the next parse operation might occur at some unknown
        * future point. To avoid this problem, you should reset the parser if
        * you exit the loop early.
        *
        * If you exited because of an error, then this cleanup will be done
        * for you. Its only when you exit the file prematurely of your own
        * accord, because you've found what you wanted in the file most
        * likely.
        *
        * @param token A token maintaing state information to maintain
        *              internal consistency between invocation of 'parseNext'
        *              calls.
        *
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(char*,...)
        * @see #parseFirst(InputSource&,...)
        */
      void parseReset(XMLPScanToken& token);
  
      //@}
  
  
  
      // -----------------------------------------------------------------------
      //  Implementation of the XMLErrorReporter interface.
      // -----------------------------------------------------------------------
  
      /** @name Implementation of the XMLErrorReporter interface. */
      //@{
  
      /** Handle errors reported from the parser
        *
        * This method is used to report back errors found while parsing the
        * XML file. This method is also borrowed from the SAX specification.
        * It calls the corresponding user installed Error Handler method:
        * 'fatal', 'error', 'warning' depending on the severity of the error.
        * This classification is defined by the XML specification.
        *
        * @param errCode An integer code for the error.
        * @param msgdomain A const pointer to an Unicode string representing
        *                  the message domain to use.
        * @param errType An enumeration classifying the severity of the error.
        * @param errorText A const pointer to an Unicode string representing
        *                  the text of the error message.
        * @param systemId  A const pointer to an Unicode string representing
        *                  the system id of the XML file where this error
        *                  was discovered.
        * @param publicId  A const pointer to an Unicode string representing
        *                  the public id of the XML file where this error
        *                  was discovered.
        * @param lineNum   The line number where the error occurred.
        * @param colNum    The column number where the error occurred.
        * @see ErrorHandler
        */
      virtual void error
      (
          const   unsigned int                errCode
          , const XMLCh* /*const*/                msgDomain
          , const XMLErrorReporter::ErrTypes  errType
          , const XMLCh* /*const*/                errorText
          , const XMLCh* /*const*/                systemId
          , const XMLCh* /*const*/                publicId
          , const unsigned int                lineNum
          , const unsigned int                colNum
      );
  
      /** Reset any error data before a new parse
       *
        * This method allows the user installed Error Handler callback to
        * 'reset' itself.
        *
        * <b><font color="#FF0000">This method is a no-op for this IDOM
        * implementation.</font></b>
        */
      virtual void resetErrors();
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Implementation of the XMLEntityHandler interface.
      // -----------------------------------------------------------------------
  
      /** @name Implementation of the XMLEntityHandler interface. */
      //@{
  
      /** Handle an end of input source event
        *
        * This method is used to indicate the end of parsing of an external
        * entity file.
        *
        * <b><font color="#FF0000">This method is a no-op for this IDOM
        * implementation.</font></b>
        *
        * @param inputSource A const reference to the InputSource object
        *                    which points to the XML file being parsed.
        * @see InputSource
        */
      virtual void endInputSource(const InputSource& inputSource);
  
      /** Expand a system id
        *
        * This method allows an installed XMLEntityHandler to further
        * process any system id's of enternal entities encountered in
        * the XML file being parsed, such as redirection etc.
        *
        * <b><font color="#FF0000">This method always returns 'false'
        * for this IDOM implementation.</font></b>
        *
        * @param systemId  A const pointer to an Unicode string representing
        *                  the system id scanned by the parser.
        * @param toFill    A pointer to a buffer in which the application
        *                  processed system id is stored.
        * @return 'true', if any processing is done, 'false' otherwise.
        */
      virtual bool expandSystemId
      (
          const   XMLCh* /*const*/    systemId
          ,       XMLBuffer&      toFill
      );
  
      /** Reset any entity handler information
        *
        * This method allows the installed XMLEntityHandler to reset
        * itself.
        *
        * <b><font color="#FF0000">This method is a no-op for this IDOM
        * implementation.</font></b>
        */
      virtual void resetEntities();
  
      /** Resolve a public/system id
        *
        * This method allows a user installed entity handler to further
        * process any pointers to external entities. The applications can
        * implement 'redirection' via this callback. This method is also
        * borrowed from the SAX specification.
        *
        * @param publicId A const pointer to a Unicode string representing the
        *                 public id of the entity just parsed.
        * @param systemId A const pointer to a Unicode string representing the
        *                 system id of the entity just parsed.
        * @return The value returned by the user installed resolveEntity
        *         method or NULL otherwise to indicate no processing was done.
        * @see EntityResolver
        */
      virtual InputSource* resolveEntity
      (
          const   XMLCh* /*const*/    publicId
          , const XMLCh* /*const*/    systemId
      );
  
      /** Handle a 'start input source' event
        *
        * This method is used to indicate the start of parsing an external
        * entity file.
        *
        * <b><font color="#FF0000">This method is a no-op for this IDOM parse
        * implementation.</font></b>
        *
        * @param inputSource A const reference to the InputSource object
        *                    which points to the external entity
        *                    being parsed.
        */
      virtual void startInputSource(const InputSource& inputSource);
  
      //@}
  
  
  
      // -----------------------------------------------------------------------
      //  Implementation of the XMLDocumentHandler interface.
      // -----------------------------------------------------------------------
  
      /** @name Implementation of the XMLDocumentHandler interface. */
      //@{
  
      /** Handle document character events
        *
        * This method is used to report all the characters scanned by the
        * parser. This IDOM implementation stores this data in the appropriate
        * IDOM node, creating one if necessary.
        *
        * @param chars   A const pointer to a Unicode string representing the
        *                character data.
        * @param length  The length of the Unicode string returned in 'chars'.
        * @param cdataSection  A flag indicating if the characters represent
        *                      content from the CDATA section.
        */
      virtual void docCharacters
      (
          const   XMLCh* /*const*/    chars
          , const unsigned int    length
          , const bool            cdataSection
      );
  
      /** Handle a document comment event
        *
        * This method is used to report any comments scanned by the parser.
        * A new comment node is created which stores this data.
        *
        * @param comment A const pointer to a null terminated Unicode
        *                string representing the comment text.
        */
      virtual void docComment
      (
          const   XMLCh* /*const*/    comment
      );
  
      /** Handle a document PI event
        *
        * This method is used to report any PI scanned by the parser. A new
        * PI node is created and appended as a child of the current node in
        * the tree.
        *
        * @param target A const pointer to a Unicode string representing the
        *               target of the PI declaration.
        * @param data   A const pointer to a Unicode string representing the
        *               data of the PI declaration. See the PI production rule
        *               in the XML specification for details.
        */
      virtual void docPI
      (
          const   XMLCh* /*const*/    target
          , const XMLCh* /*const*/    data
      );
  
      /** Handle the end of document event
        *
        * This method is used to indicate the end of the current document.
        */
      virtual void endDocument();
  
      /** Handle and end of element event
        *
        * This method is used to indicate the end tag of an element. The
        * IDOMParse pops the current element off the top of the element
        * stack, and make it the new current element.
        *
        * @param elemDecl A const reference to the object containing element
        *                 declaration information.
        * @param urlId    An id referring to the namespace prefix, if
        *                 namespaces setting is switched on.
        * @param isRoot   A flag indicating whether this element was the
        *                 root element.
        */
      virtual void endElement
      (
          const   XMLElementDecl& elemDecl
          , const unsigned int    urlId
          , const bool            isRoot
      );
  
      /** Handle and end of entity reference event
        *
        * This method is used to indicate that an end of an entity reference
        * was just scanned.
        *
        * @param entDecl A const reference to the object containing the
        *                entity declaration information.
        */
      virtual void endEntityReference
      (
          const   XMLEntityDecl&  entDecl
      );
  
      /** Handle an ignorable whitespace vent
        *
        * This method is used to report all the whitespace characters, which
        * are determined to be 'ignorable'. This distinction between characters
        * is only made, if validation is enabled.
        *
        * Any whitespace before content is ignored. If the current node is
        * already of type IDOM_Node::TEXT_NODE, then these whitespaces are
        * appended, otherwise a new Text node is created which stores this
        * data. Essentially all contiguous ignorable characters are collected
        * in one node.
        *
        * @param chars   A const pointer to a Unicode string representing the
        *                ignorable whitespace character data.
        * @param length  The length of the Unicode string 'chars'.
        * @param cdataSection  A flag indicating if the characters represent
        *                      content from the CDATA section.
        */
      virtual void ignorableWhitespace
      (
          const   XMLCh* /*const*/    chars
          , const unsigned int    length
          , const bool            cdataSection
      );
  
      /** Handle a document reset event
        *
        * This method allows the user installed Document Handler to 'reset'
        * itself, freeing all the memory resources. The scanner calls this
        * method before starting a new parse event.
        */
      virtual void resetDocument();
  
      /** Handle a start document event
        *
        * This method is used to report the start of the parsing process.
        */
      virtual void startDocument();
  
      /** Handle a start element event
        *
        * This method is used to report the start of an element. It is
        * called at the end of the element, by which time all attributes
        * specified are also parsed. A new IDOM Element node is created
        * along with as many attribute nodes as required. This new element
        * is added appended as a child of the current node in the tree, and
        * then replaces it as the current node (if the isEmpty flag is false.)
        *
        * @param elemDecl A const reference to the object containing element
        *                 declaration information.
        * @param urlId    An id referring to the namespace prefix, if
        *                 namespaces setting is switched on.
        * @param elemPrefix A const pointer to a Unicode string containing
        *                 the namespace prefix for this element. Applicable
        *                 only when namespace processing is enabled.
        * @param attrList A const reference to the object containing the
        *                 list of attributes just scanned for this element.
        * @param attrCount A count of number of attributes in the list
        *                 specified by the parameter 'attrList'.
        * @param isEmpty  A flag indicating whether this is an empty element
        *                 or not. If empty, then no endElement() call will
        *                 be made.
        * @param isRoot   A flag indicating whether this element was the
        *                 root element.
        * @see DocumentHandler#startElement
        */
      virtual void startElement
      (
          const   XMLElementDecl&         elemDecl
          , const unsigned int            urlId
          , const XMLCh* /*const*/            elemPrefix
          , const RefVectorOf<XMLAttr>&   attrList
          , const unsigned int            attrCount
          , const bool                    isEmpty
          , const bool                    isRoot
      );
  
      /** Handle a start entity reference event
        *
        * This method is used to indicate the start of an entity reference.
        * If the expand entity reference flag is true, then a new
        * IDOM Entity reference node is created.
        *
        * @param entDecl A const reference to the object containing the
        *                entity declaration information.
        */
      virtual void startEntityReference
      (
          const   XMLEntityDecl&  entDecl
      );
  
      /** Handle an XMLDecl event
        *
        * This method is used to report the XML decl scanned by the parser.
        * Refer to the XML specification to see the meaning of parameters.
        *
        * <b><font color="#FF0000">This method is a no-op for this IDOM
        * implementation.</font></b>
        *
        * @param versionStr A const pointer to a Unicode string representing
        *                   version string value.
        * @param encodingStr A const pointer to a Unicode string representing
        *                    the encoding string value.
        * @param standaloneStr A const pointer to a Unicode string
        *                      representing the standalone string value.
        * @param actualEncodingStr A const pointer to a Unicode string
        *                          representing the actual encoding string
        *                          value.
        */
      virtual void XMLDecl
      (
          const   XMLCh* /*const*/    versionStr
          , const XMLCh* /*const*/    encodingStr
          , const XMLCh* /*const*/    standaloneStr
          , const XMLCh* /*const*/    actualEncStr
      );
      //@}
  
  
      /** @name Deprecated Methods */
      //@{
      /**
        * This method returns the state of the parser's validation
        * handling flag which controls whether validation checks
        * are enforced or not.
        *
        * @return true, if the parser is currently configured to
        *         do validation, false otherwise.
        *
        * @see #setDoValidation
        */
      bool getDoValidation() const;
  
      /**
        * This method allows users to enable or disable the parser's validation
        * checks.
        *
        * <p>By default, the parser does not to any validation. The default
        * value is false.</p>
        *
        * @param newState The value specifying whether the parser should
        *                 do validity checks or not against the DTD in the
        *                 input XML document.
        *
        * @see #getDoValidation
        */
      void setDoValidation(const bool newState);
  
      /**
        * Deprecated doctypehandler interfaces
        */
  	virtual void attDef
      (
          const   DTDElementDecl&     elemDecl
          , const DTDAttDef&          attDef
          , const bool                ignoring
      );
  
      virtual void doctypeComment
      (
          const   XMLCh* /*const*/    comment
      );
  
      virtual void doctypeDecl
      (
          const   DTDElementDecl& elemDecl
          , const XMLCh* /*const*/    publicId
          , const XMLCh* /*const*/    systemId
          , const bool            hasIntSubset
      );
  
      virtual void doctypePI
      (
          const   XMLCh* /*const*/    target
          , const XMLCh* /*const*/    data
      );
  
      virtual void doctypeWhitespace
      (
          const   XMLCh* /*const*/    chars
          , const unsigned int    length
      );
  
      virtual void elementDecl
      (
          const   DTDElementDecl& decl
          , const bool            isIgnored
      );
  
      virtual void endAttList
      (
          const   DTDElementDecl& elemDecl
      );
  
      virtual void endIntSubset();
  
      virtual void endExtSubset();
  
      virtual void entityDecl
      (
          const   DTDEntityDecl&  entityDecl
          , const bool            isPEDecl
          , const bool            isIgnored
      );
  
      virtual void resetDocType();
  
      virtual void notationDecl
      (
          const   XMLNotationDecl&    notDecl
          , const bool                isIgnored
      );
  
      virtual void startAttList
      (
          const   DTDElementDecl& elemDecl
      );
  
      virtual void startIntSubset();
  
      virtual void startExtSubset();
  
      virtual void TextDecl
      (
          const   XMLCh* /*const*/    versionStr
          , const XMLCh* /*const*/    encodingStr
      );
  
  
      //@}
  
  
  // protected :
  //     // -----------------------------------------------------------------------
  //     //  Protected getter methods
  //     // -----------------------------------------------------------------------
  // 
  //     /** @name Protected getter methods */
  //     //@{
  //     /** Get the current IDOM node
  //       *
  //       * This provides derived classes with access to the current node, i.e.
  //       * the node to which new nodes are being added.
  //       */
  //     IDOM_Node* getCurrentNode();
  // 
  //     //@}
  // 
  // 
  //     // -----------------------------------------------------------------------
  //     //  Protected setter methods
  //     // -----------------------------------------------------------------------
  // 
  //     /** @name Protected setter methods */
  //     //@{
  // 
  //     /** Set the current IDOM node
  //       *
  //       * This method sets the current node maintained inside the parser to
  //       * the one specified.
  //       *
  //       * @param toSet The IDOM node which will be the current node.
  //       */
  //     void setCurrentNode(IDOM_Node* toSet);
  // 
  //     /** Set the document node
  //       *
  //       * This method sets the IDOM Document node to the one specified.
  //       *
  //       * @param toSet The new IDOM Document node for this XML document.
  //       */
  //     void setDocument(IDOM_Document* toSet);
  //     //@}
  // 
  // 
  // private :
  //     // -----------------------------------------------------------------------
  //     //  Private data members
  //     //
  //     //  fCurrentNode
  //     //  fCurrentParent
  //     //      Used to track the current node during nested element events. Since
  //     //      the tree must be built from a set of disjoint callbacks, we need
  //     //      these to keep up with where we currently are.
  //     //
  //     //  fDocument
  //     //      The root document object, filled with the document contents.
  //     //
  //     //  fEntityResolver
  //     //      The installed SAX entity resolver, if any. Null if none.
  //     //
  //     //  fErrorHandler
  //     //      The installed SAX error handler, if any. Null if none.
  //     //
  //     //  fCreateEntityReferenceNode
  //     //      Indicates whether entity reference nodes should be created.
  //     //
  //     //  fIncludeIgnorableWhitespace
  //     //      Indicates whether ignorable whiltespace should be added to
  //     //      the IDOM tree for validating parsers.
  //     //
  //     //  fNodeStack
  //     //      Used to track previous parent nodes during nested element events.
  //     //
  //     //  fParseInProgress
  //     //      Used to prevent multiple entrance to the parser while its doing
  //     //      a parse.
  //     //
  //     //  fScanner
  //     //      The scanner used for this parser. This is created during the
  //     //      constructor.
  //     //
  //     //  fWithinElement
  //     //      A flag to indicate that the parser is within at least one level
  //     //      of element processing.
  //     //
  //     //  fDocumentType
  //     //      Used to store and update the documentType variable information
  //     //      in fDocument
  //     //
  //     // -----------------------------------------------------------------------
  //     IDOM_Node*               fCurrentParent;
  //     IDOM_Node*               fCurrentNode;
  //     IDDocumentImpl*          fDocument;
  //     EntityResolver*          fEntityResolver;
  //     ErrorHandler*            fErrorHandler;
  //     bool                     fCreateEntityReferenceNodes;
  //     bool                     fIncludeIgnorableWhitespace;
  //     ValueStackOf<IDOM_Node*>* fNodeStack;
  //     bool                     fParseInProgress;
  //     XMLScanner*              fScanner;
  //     bool                     fWithinElement;
  //     IDDocumentTypeImpl*      fDocumentType;
  };
  
  
  
  // ---------------------------------------------------------------------------
  //  IDOMParser: Handlers for the XMLEntityHandler interface
  // ---------------------------------------------------------------------------
  // inline void IDOMParser::endInputSource(const InputSource&)
  // {
  //     // The IDOM entity resolver doesn't handle this
  // }
  // 
  // inline bool IDOMParser::expandSystemId(const XMLCh* const, XMLBuffer&)
  // {
  //     // The IDOM entity resolver doesn't handle this
  //     return false;
  // }
  // 
  // inline void IDOMParser::resetEntities()
  // {
  //     // Nothing to do on this one
  // }
  // 
  // inline void IDOMParser::startInputSource(const InputSource&)
  // {
  //     // The IDOM entity resolver doesn't handle this
  // }
  // 
  // 
  // // ---------------------------------------------------------------------------
  // //  IDOMParser: Getter methods
  // // ---------------------------------------------------------------------------
  // inline ErrorHandler* IDOMParser::getErrorHandler()
  // {
  //     return fErrorHandler;
  // }
  // 
  // inline const ErrorHandler* IDOMParser::getErrorHandler() const
  // {
  //     return fErrorHandler;
  // }
  // 
  // inline EntityResolver* IDOMParser::getEntityResolver()
  // {
  //     return fEntityResolver;
  // }
  // 
  // inline const EntityResolver* IDOMParser::getEntityResolver() const
  // {
  //     return fEntityResolver;
  // }
  // 
  // inline bool IDOMParser::getExpandEntityReferences() const
  // {
  //     return fCreateEntityReferenceNodes;
  // }
  // inline bool IDOMParser::getCreateEntityReferenceNodes() const
  // {
  //     return fCreateEntityReferenceNodes;
  // }
  // 
  // inline bool IDOMParser::getIncludeIgnorableWhitespace() const
  // {
  //     return fIncludeIgnorableWhitespace;
  // }
  // 
  // inline const XMLScanner& IDOMParser::getScanner() const
  // {
  //     return *fScanner;
  // }
  // 
  // 
  // // ---------------------------------------------------------------------------
  // //  IDOMParser: Setter methods
  // // ---------------------------------------------------------------------------
  // inline void IDOMParser::setExpandEntityReferences(const bool expand)
  // {
  //     fCreateEntityReferenceNodes = expand;
  // }
  // 
  // inline void IDOMParser::setCreateEntityReferenceNodes(const bool create)
  // {
  //     fCreateEntityReferenceNodes = create;
  // }
  // 
  // inline void IDOMParser::setIncludeIgnorableWhitespace(const bool include)
  // {
  //     fIncludeIgnorableWhitespace = include;
  // }
  // 
  // 
  // // ---------------------------------------------------------------------------
  // //  IDOMParser: Protected getter methods
  // // ---------------------------------------------------------------------------
  // inline IDOM_Node* IDOMParser::getCurrentNode()
  // {
  //     return fCurrentNode;
  // }
  // 
  // 
  // // ---------------------------------------------------------------------------
  // //  IDOMParser: Protected setter methods
  // // ---------------------------------------------------------------------------
  // inline void IDOMParser::setCurrentNode(IDOM_Node* toSet)
  // {
  //     fCurrentNode = toSet;
  // }
  // 
  // inline void IDOMParser::setDocument(IDOM_Document* toSet)
  // {
  //     fDocument = (IDDocumentImpl *)toSet;
  // }
  
  #endif
  
  
  
  1.1                  xml-xerces/perl/t/DOMException.t
  
  Index: DOMException.t
  ===================================================================
  # Before `make install' is performed this script should be runnable
  # with `make test'. After `make install' it should work as `perl
  # DOMException.t'
  
  ######################### We start with some black magic to print on failure.
  
  # Change 1..1 below to 1..last_test_to_print .
  # (It may become useful if the test is moved to ./t subdirectory.)
  
  BEGIN { $| = 1; print "1..7\n"; }
  END {print "not ok 1\n" unless $loaded;}
  use Carp;
  
  use blib;
  use XML::Xerces;
  use Config;
  
  use lib 't';
  use TestUtils qw(result);
  use vars qw($i $loaded $error $code);
  use strict;
  
  $loaded = 1;
  $i = 1;
  result($loaded);
  
  ######################### End of black magic.
  
  # Insert your test code below (better if it prints "ok 13"
  # (correspondingly "not ok 13") depending on the success of chunk 13
  # of the test code):
  
  # test that we get an DOM_DOMException trying to reuse a DocType
  $error = 0;
  my $handler = XML::Xerces::PerlExceptionHandler::getInstance();
  $handler->setDOMExceptionHandler(sub{
    my $exception = shift;
    $code = $exception->{code};
    $error = 1;
    die();
  });
  
  
  my $impl = XML::Xerces::DOM_DOMImplementation::getImplementation();
  my $dt = $impl->createDocumentType('Foo', '', 'Foo.dtd');
  my $doc = $impl->createDocument('Foo', 'foo',$dt);
  eval {
    $impl->createDocument('Bar', 'bar',$dt);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::DOM_DOMException::WRONG_DOCUMENT_ERR
        );
  
  # reset the error counter
  $error = 0;
  
  # Create a couple of identical test documents
  my $document = q[<?xml version="1.0" encoding="utf-8"?>
  <contributors>
  	<person Role="manager">
  		<name>Mike Pogue</name>
  		<email>mpogue@us.ibm.com</email>
  	</person>
  	<person Role="developer">
  		<name>Tom Watson</name>
  		<email>rtwatson@us.ibm.com</email>
  	</person>
  	<person Role="tech writer">
  		<name>Susan Hardenbrook</name>
  		<email>susanhar@us.ibm.com</email>
  	</person>
  </contributors>];
  
  my $DOM1 = new XML::Xerces::DOMParser;
  my $ERROR_HANDLER = XML::Xerces::PerlErrorHandler->new();
  $DOM1->setErrorHandler($ERROR_HANDLER);
  $DOM1->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'));
  
  my $DOM2 = new XML::Xerces::DOMParser;
  $DOM2->setErrorHandler($ERROR_HANDLER);
  $DOM2->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'));
  
  my $doc1 = $DOM1->getDocument();
  my $doc2 = $DOM2->getDocument();
  
  my $root1 = $doc1->getDocumentElement();
  my @persons1 = $doc1->getElementsByTagName('person');
  my @names1 = $doc1->getElementsByTagName('name');
  my $root2 = $doc2->getDocumentElement();
  my @persons2 = $doc2->getElementsByTagName('person');
  my @names2 = $doc1->getElementsByTagName('name');
  
  # Trying to append to a DOM_Document node gives a hierarchy error
  eval {
    $doc1->appendChild($root2);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::DOM_DOMException::HIERARCHY_REQUEST_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to append to a different DOM_Document gives a wrong doc error
  eval {
    $root1->appendChild($root2);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::DOM_DOMException::WRONG_DOCUMENT_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to insert to a different DOM_Document gives a wrong doc error
  eval {
    $persons1[0]->insertBefore($persons2[0],$persons1[0]);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::DOM_DOMException::WRONG_DOCUMENT_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to insert to a DOM_Document node gives a wrong doc error
  eval {
    $doc1->insertBefore($persons2[0],$root1);
  };
  
  result($@ && 
         $error &&
         $code == $XML::Xerces::DOM_DOMException::HIERARCHY_REQUEST_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to insert before a node that is not a subnode of the calling node
  # gives a not found error
  eval {
    $persons1[0]->insertBefore($persons1[1],$names1[2]);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::DOM_DOMException::NOT_FOUND_ERR);
  
  # print STDERR "Code = $code\n";
  # print STDERR "Eval = $@\n";
  # print STDERR "Error = $error\n";
  
  # reset the error counter
  $error = 0;
  
  
  
  
  1.1                  xml-xerces/perl/t/IDOMParser.t
  
  Index: IDOMParser.t
  ===================================================================
  # Before `make install' is performed this script should be runnable
  # with `make test'. After `make install' it should work as `perl
  # IDOMParser.t'
  
  ######################### We start with some black magic to print on failure.
  
  # Change 1..1 below to 1..last_test_to_print .
  # (It may become useful if the test is moved to ./t subdirectory.)
  
  BEGIN { $| = 1; print "1..2\n"; }
  END {print "not ok 1\n" unless $loaded;}
  use Carp;
  use blib;
  use XML::Xerces;
  
  use lib 't';
  use TestUtils qw(result $PERSONAL $DOM);
  use vars qw($i $loaded);
  use strict;
  
  $loaded = 1;
  $i = 1;
  result($loaded);
  
  ######################### End of black magic.
  
  # Insert your test code below (better if it prints "ok 13"
  # (correspondingly "not ok 13") depending on the success of chunk 13
  # of the test code):
  
  my $document = q[<?xml version="1.0" encoding="utf-8"?>
  <contributors>
  	<person Role="manager">
  		<name>Mike Pogue</name>
  		<email>mpogue@us.ibm.com</email>
  	</person>
  	<person Role="developer">
  		<name>Tom Watson</name>
  		<email>rtwatson@us.ibm.com</email>
  	</person>
  	<person Role="tech writer">
  		<name>Susan Hardenbrook</name>
  		<email>susanhar@us.ibm.com</email>
  	</person>
  </contributors>];
  
  # since IDOM can't create XML Decl nodes
  $DOM->setToCreateXMLDeclTypeNode(0);
  $DOM->parse(XML::Xerces::MemBufInputSource->new($PERSONAL, 'foo'));
  $PERSONAL = $DOM->getDocument->serialize;
  
  my $IDOM = XML::Xerces::IDOMParser->new();
  $IDOM->parse(XML::Xerces::MemBufInputSource->new($PERSONAL, 'foo'));
  #$IDOM->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'));
  my $serialize = $IDOM->getDocument->serialize;
  result($serialize eq $PERSONAL);
  
  
  
  1.1                  xml-xerces/perl/t/IDOM_DOMException.t
  
  Index: IDOM_DOMException.t
  ===================================================================
  # Before `make install' is performed this script should be runnable
  # with `make test'. After `make install' it should work as `perl
  # IDOM_DOMException.t'
  
  ######################### We start with some black magic to print on failure.
  
  # Change 1..1 below to 1..last_test_to_print .
  # (It may become useful if the test is moved to ./t subdirectory.)
  
  BEGIN { $| = 1; print "1..7\n"; }
  END {print "not ok 1\n" unless $loaded;}
  use Carp;
  
  use blib;
  use XML::Xerces;
  use Config;
  
  use lib 't';
  use TestUtils qw(result);
  use vars qw($i $loaded $error $code);
  use strict;
  
  $loaded = 1;
  $i = 1;
  result($loaded);
  
  ######################### End of black magic.
  
  # Insert your test code below (better if it prints "ok 13"
  # (correspondingly "not ok 13") depending on the success of chunk 13
  # of the test code):
  
  # test that we get an IDOM_DOMException trying to reuse a DocType
  $error = 0;
  my $handler = XML::Xerces::PerlExceptionHandler::getInstance();
  $handler->setDOMExceptionHandler(sub{
    my $exception = shift;
    $code = $exception->{code};
    $error = 1;
    die();
  });
  
  
  # my $impl = XML::Xerces::IDOM_DOMImplementation::getImplementation();
  # my $dt = $impl->createDocumentType('Foo', '', 'Foo.dtd');
  # my $doc = $impl->createDocument('Foo', 'foo',$dt);
  # eval {
  #   $impl->createDocument('Bar', 'bar',$dt);
  # };
  # result($@ && 
  #        $error &&
  #        $code == $XML::Xerces::IDOM_DOMException::WRONG_DOCUMENT_ERR
  #       );
  
  # reset the error counter
  $error = 0;
  
  # Create a couple of identical test documents
  my $document = q[<?xml version="1.0" encoding="utf-8"?>
  <contributors>
  	<person Role="manager">
  		<name>Mike Pogue</name>
  		<email>mpogue@us.ibm.com</email>
  	</person>
  	<person Role="developer">
  		<name>Tom Watson</name>
  		<email>rtwatson@us.ibm.com</email>
  	</person>
  	<person Role="tech writer">
  		<name>Susan Hardenbrook</name>
  		<email>susanhar@us.ibm.com</email>
  	</person>
  </contributors>];
  
  my $DOM1 = new XML::Xerces::IDOMParser;
  my $ERROR_HANDLER = XML::Xerces::PerlErrorHandler->new();
  $DOM1->setErrorHandler($ERROR_HANDLER);
  $DOM1->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'));
  
  my $DOM2 = new XML::Xerces::IDOMParser;
  $DOM2->setErrorHandler($ERROR_HANDLER);
  $DOM2->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'));
  
  my $doc1 = $DOM1->getDocument();
  my $doc2 = $DOM2->getDocument();
  
  my $root1 = $doc1->getDocumentElement();
  my @persons1 = $doc1->getElementsByTagName('person');
  my @names1 = $doc1->getElementsByTagName('name');
  my $root2 = $doc2->getDocumentElement();
  my @persons2 = $doc2->getElementsByTagName('person');
  my @names2 = $doc1->getElementsByTagName('name');
  
  # Trying to append to a IDOM_Document node gives a hierarchy error
  eval {
    $doc1->appendChild($root2);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::IDOM_DOMException::HIERARCHY_REQUEST_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to append to a different IDOM_Document gives a wrong doc error
  eval {
    $root1->appendChild($root2);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::IDOM_DOMException::WRONG_DOCUMENT_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to insert to a different IDOM_Document gives a wrong doc error
  eval {
    $persons1[0]->insertBefore($persons2[0],$persons1[0]);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::IDOM_DOMException::WRONG_DOCUMENT_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to insert to a IDOM_Document node gives a wrong doc error
  eval {
    $doc1->insertBefore($persons2[0],$root1);
  };
  
  result($@ && 
         $error &&
         $code == $XML::Xerces::IDOM_DOMException::HIERARCHY_REQUEST_ERR);
  
  # reset the error counter
  $error = 0;
  
  # Trying to insert before a node that is not a subnode of the calling node
  # gives a not found error
  eval {
    $persons1[0]->insertBefore($persons1[1],$names1[2]);
  };
  result($@ && 
         $error &&
         $code == $XML::Xerces::IDOM_DOMException::NOT_FOUND_ERR);
  
  # print STDERR "Code = $code\n";
  # print STDERR "Eval = $@\n";
  # print STDERR "Error = $error\n";
  
  # reset the error counter
  $error = 0;
  
  
  
  
  1.1                  xml-xerces/perl/t/SAXException.t
  
  Index: SAXException.t
  ===================================================================
  # Before `make install' is performed this script should be runnable
  # with `make test'. After `make install' it should work as `perl
  # DOMException.t'
  
  ######################### We start with some black magic to print on failure.
  
  # Change 1..1 below to 1..last_test_to_print .
  # (It may become useful if the test is moved to ./t subdirectory.)
  
  BEGIN { $| = 1; print "1..5\n"; }
  END {print "not ok 1\n" unless $loaded;}
  use Carp;
  
  # use blib;
  use XML::Xerces;
  use Config;
  
  use lib 't';
  use TestUtils qw(result);
  use vars qw($i $loaded $error $messageNS $messageNR);
  use strict;
  
  $loaded = 1;
  $i = 1;
  result($loaded);
  
  ######################### End of black magic.
  
  # Insert your test code below (better if it prints "ok 13"
  # (correspondingly "not ok 13") depending on the success of chunk 13
  # of the test code):
  
  # test that we get an DOM_DOMException trying to reuse a DocType
  $error = 0;
  my $handler = XML::Xerces::PerlExceptionHandler::getInstance();
  $handler->setSAXNotRecognizedExceptionHandler(sub{
    my $exception = shift;
    $messageNR = $exception->getMessage();
    $error = 1;
    die();
  });
  
  $handler->setSAXNotSupportedExceptionHandler(sub{
    my $exception = shift;
    $messageNS = $exception->getMessage();
    $error = 1;
    die();
  });
  
  
  my $parser = XML::Xerces::XMLReaderFactory::createXMLReader();
  
  
  eval {
    $parser->setFeature("http://xml.org/sax/features/foospaces", 0);
  };
  
  result($@ && $error);
  
  # reset the error counter
  $error = 0;
  $messageNS = '';
  $messageNR = '';
  
  eval {
    $parser->getFeature('http://xml.org/sax/features/foospaces');
  };
  
  result($@ && $error);
  
  # reset the error counter
  $error = 0;
  
  eval {
    $parser->getProperty('http://xml.org/sax/features/foospaces');
  };
  
  result($@ && $error);
  
  # reset the error counter
  $error = 0;
  
  eval {
    $parser->setProperty('http://xml.org/sax/features/foospaces', $parser);
  };
  
  result($@ && $error);
  
  # print STDERR "MessageNS = $messageNS\n";
  # print STDERR "MessageNR = $messageNR\n";
  # print STDERR "Error = $error\n";
  # print STDERR "Eval = $@\n";
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org