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/03/07 17:04:08 UTC
cvs commit: xml-xerces/perl/Xerces_headers/util PlatformUtils.hpp XMLURL.hpp XercesDefs.hpp
jasons 01/03/07 08:04:07
Added: perl/Xerces_headers/dom DOMString.hpp DOM_Attr.hpp
DOM_CDATASection.hpp DOM_CharacterData.hpp
DOM_Comment.hpp DOM_DOMImplementation.hpp
DOM_Document.hpp DOM_DocumentFragment.hpp
DOM_DocumentType.hpp DOM_Element.hpp DOM_Entity.hpp
DOM_EntityReference.hpp DOM_NamedNodeMap.hpp
DOM_Node.hpp DOM_NodeFilter.hpp
DOM_NodeIterator.hpp DOM_NodeList.hpp
DOM_Notation.hpp DOM_ProcessingInstruction.hpp
DOM_Range.hpp DOM_Text.hpp DOM_TreeWalker.hpp
DOM_XMLDecl.hpp
perl/Xerces_headers/framework LocalFileInputSource.hpp
MemBufInputSource.hpp StdInInputSource.hpp
URLInputSource.hpp
perl/Xerces_headers/parsers DOMParser.hpp
perl/Xerces_headers/sax ErrorHandler.hpp InputSource.hpp
SAXException.hpp SAXParseException.hpp
perl/Xerces_headers/util PlatformUtils.hpp XMLURL.hpp
XercesDefs.hpp
Log:
Submitted by: jason@openinformatics.com
Added new files from Harmon's 1.3 port
Revision Changes Path
1.1 xml-xerces/perl/Xerces_headers/dom/DOMString.hpp
Index: DOMString.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: DOMString.hpp,v $
* Revision 1.1 2001/03/07 16:03:58 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.12 2000/06/02 00:45:42 andyh
* DOM Fixes: DOMString::rawBuffer() now returns a const XMLCh * pointer.
* Two plain deletes changed to array deletes.
*
* Revision 1.11 2000/03/02 19:53:52 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.10 2000/02/24 20:11:27 abagchi
* Swat for removing Log from API docs
*
* Revision 1.9 2000/02/16 22:54:56 abagchi
* Switched the order of CDOM_EXPORT DomString for operators, to make OS/390 happy
*
* Revision 1.8 2000/02/06 07:47:27 rahulj
* Year 2K copyright swat.
*
* Revision 1.7 2000/02/04 05:06:30 andyh
* Change all DOMString offsets and lengths form signed to unsigned
* Other misc. cleanups.
*
* Revision 1.6 2000/02/04 00:52:58 rahulj
* Changed size_t to int.
*
* Revision 1.5 2000/02/03 23:07:27 andyh
* Add several new functions from Robert Weir to DOMString.
*
* Revision 1.4 2000/01/05 22:16:26 robweir
* Move DOMString implementation class declarations into a new
* file: DOMStringImpl.hpp. Include this header in DOMString.hpp
* for XML_DEBUG builds so the underlying character array will be
* visible in the debugger. <ro...@lotus.com>
*
* Revision 1.3 1999/12/03 00:11:22 andyh
* Added DOMString.clone() to node parameters in and out of the DOM,
* where they had been missed.
*
* DOMString::rawBuffer, removed incorrect assumptions about it
* being null terminated.
*
* Revision 1.2 1999/11/30 21:16:25 roddey
* Changes to add the transcode() method to DOMString, which returns a transcoded
* version (to local code page) of the DOM string contents. And I changed all of the
* exception 'throw by pointer' to 'throw by value' style.
*
* Revision 1.1.1.1 1999/11/09 01:08:48 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:12 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOMString_HEADER_GUARD_
//#define DOMString_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#ifdef XML_DEBUG
//#include "DOMStringImpl.hpp"
//#else
//class DOMStringHandle;
//#endif
//class DOM_NullPtr;
/**
* <code>DOMString</code> is the generic string class that stores all strings
* used in the DOM C++ API.
*
* Though this class supports most of the common string operations to manipulate
* strings, it is not meant to be a comphrehensive string class.
*/
class /*CDOM_EXPORT*/ DOMString {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOMString. The resulting DOMString
* object refers to no string at all; it will compare == 0.
*
*/
// DOMString();
/**
* Copy constructor.
*
* @param other The object to be copied.
*/
// DOMString(const DOMString &other);
/**
* Constructor to build a DOMString from an XML character array.
* (XMLCh is a 16 bit UNICODE character).
*
* @param other The null-terminated character array to be
* that provides the initial value for the DOMString.
*/
// DOMString(const XMLCh *other);
/**
* Constructor to build a DOMString from a character array of given length.
*
* @param other The character array to be imported into the <code>DOMString</code>
* @param length The length of the character array to be imported
*/
// DOMString(const XMLCh *other, unsigned int length);
/**
* Constructor to build a DOMString from an 8 bit character array.
* The char * string will be transcoded to UNICODE using the default
* code page on the system where the code is running.
*
* @param other The character array to be imported into the <code>DOMString</code>
*/
DOMString(const char *other);
/**
* Construct a null DOMString.
*/
// DOMString(int nullPointerValue);
/**
* Assignment operator. Make destination DOMString refer to the same
* underlying string in memory as the source string.
*
* @param the source DOMString.
*/
// DOMString & operator = (const DOMString &other);
DOMString & assignment(const DOMString &other);
// DOMString & operator = (DOM_NullPtr *other);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOMString
*
*/
// ~DOMString();
//@}
/** @name Operators for string manipulation. */
//@{
/**
* Concatenate a DOMString to another.
*
* @param other The string to be concatenated.
* @return The concatenated object
*/
// DOMString operator + (const DOMString &other);
//@}
/** @name Equality and Inequality operators. */
//@{
/**
* Equality operator.
*
* @param other The object to be compared with.
* @return True if the two DOMStrings refer to the same underlying string
* in memory.
* <p>
* WARNING: operator == does NOT compare the contents of
* the two strings. To do this, use the <code>DOMString::equals()</code>
* This behavior is modelled after the String operations in Java, and
* is also similar to operator == on the other DOM_* classes.
*/
// bool operator == (const DOMString &other) const;
bool equal_to(const DOMString &other) const;
/**
* Inequality operator.
*
* @param other The object to be compared with.
* @return True if the two DOMStrings refer to different underlying strings in
* memory.
* <p>
* WARNING: operator == does NOT compare the contents of
* the two strings. To do this, use the <code>DOMString::equals()</code>
* This behavior is modelled after the String operations in Java, and
* is also similar to operator == on the other DOM_* classes.
*/
// bool operator != (const DOMString &other) const;
bool not_equal_to(const DOMString &other) const;
/**
* Equality operator. Test for a null DOMString, which is one that does
* not refer to any string at all; similar to a null object reference
* variable in Java.
*
* @param other must be 0 or null.
* @return
*/
// bool operator == (const DOM_NullPtr *other) const;
/**
* Inequality operator, for null test.
*
* @param other must be 0 or null.
* @return True if the two strings are different, false otherwise
*/
// bool operator != (const DOM_NullPtr *other) const;
//@}
/** @name Functions to change the string. */
//@{
/**
* Preallocate storage in the string to hold a given number of characters.
* A DOMString will grow its buffer on demand, as characters are added,
* but it can be more efficient to allocate once in advance, if the size is known.
*
* @param size The number of 16 bit characters to reserve.
*/
void reserve(unsigned int size);
/**
* Appends the content of another <code>DOMString</code> to this string.
*
* @param other The object to be appended
*/
void appendData(const DOMString &other);
/**
* Append a single Unicode character to this string.
*
* @param other The object to be appended
*/
// void appendData(XMLCh ch);
/**
* Append a null-terminated XMLCh * (Unicode) string to this string.
*
* @param other The object to be appended
*/
// void appendData(const XMLCh *other);
/**
* Appends the content of another <code>DOMString</code> to this string.
*
* @param other The object to be appended
*/
// DOMString& operator +=(const DOMString &other);
DOMString& addition_assignment(const DOMString &other);
/**
* Appends the content of a c-style string to this string.
*
* @param other The string to be appended
*/
// DOMString& operator +=(const XMLCh* other);
/**
* Appends a character to this string.
*
* @param ch The character to be appended
*/
// DOMString& operator +=(XMLCh ch);
/**
* Clears the data of this <code>DOMString</code>.
*
* @param offset The position from the beginning from which the data must be deleted
* @param count The count of characters from the offset that must be deleted
*/
void deleteData(unsigned int offset, unsigned int count);
/**
* Inserts a string within the existing <code>DOMString</code> at an arbitrary position.
*
* @param offset The offset from the beginning at which the insertion needs to be done
* in <code>this</code> object
* @param data The <code>DOMString</code> containing the data that needs to be inserted
* @return The object to be returned.
*/
void insertData(unsigned int offset, const DOMString &data);
//@}
/** @name Functions to get properties of the string. */
//@{
/**
* Returns the character at the specified position.
*
* @param index The position at which the character is being requested
* @return Returns the character at the specified position.
*/
XMLCh charAt(unsigned int index) const;
/**
* Returns a handle to the raw buffer in the <code>DOMString</code>.
*
* @return The pointer inside the <code>DOMString</code> containg the string data.
* Note: the data is not always null terminated. Do not rely on
* a null being there, and do not add one, as several DOMStrings
* with different lengths may share the same raw buffer.
*/
// const XMLCh *rawBuffer() const;
/**
* Returns a copy of the string, transcoded to the local code page. The
* caller owns the (char *) string that is returned, and is responsible
* for deleting it.
*
* @return A pointer to a newly allocated buffer of char elements, which
* represents the original string, but in the local encoding.
*/
char *transcode() const;
/**
* Creates a DOMString, transcoded from an input 8 bit char * string
* in the local code page.
*
* @param str The string to be transcoded
* @return A new DOMString object
*/
// static DOMString transcode(const char* str);
/**
* Returns a sub-string of the <code>DOMString</code> starting at a specified position.
*
* @param offset The offset from the beginning from which the sub-string is being requested.
* @param count The count of characters in the requested sub-string
* @return The sub-string of the <code>DOMString</code> being requested
*/
DOMString substringData(unsigned int offset, unsigned int count) const;
/**
* Returns the length of the DOMString.
*
* @return The length of the string
*/
unsigned int length() const;
//@}
/** @name Cloning function. */
//@{
/**
* Makes a clone of a the DOMString.
*
* @return The object to be cloned.
*/
DOMString clone() const;
//@}
/** @name Print functions. */
//@{
/**
* Dumps the <code>DOMString</code> on the console.
*
*/
// void print() const;
/**
* Dumps the <code>DOMString</code> on the console with a line feed at the end.
*
*/
// void println() const;
//@}
/** @name Functions to compare a string with another. */
//@{
/**
* Compares a DOMString with another.
*
* This compareString does not match the semantics of the standard C strcmp.
* All it needs to do is define some less than - equals - greater than
* ordering of strings. How doesn't matter.
*
*
* @param other The object to be compared with
* @return Either -1, 0, or 1 based on the comparison.
*/
int compareString(const DOMString &other) const;
/**
* Tells if a <code>DOMString</code> contains the same character data
* as another.
*
* @param other The DOMString to be compared with.
* @return True if the two <code>DOMString</code>s are same, false otherwise.
*/
bool equals(const DOMString &other) const;
/**
* Compare a DOMString with a null-terminated raw 16-bit character
* string.
*
* @param other The character string to be compared with.
* @return True if the strings are the same, false otherwise.
*/
// bool equals(const XMLCh *other) const;
//@}
// friend class DOMStringData;
// friend class DOMStringHandle;
// friend class DomMemDebug;
//private:
// DOMStringHandle *fHandle;
// static int gLiveStringHandleCount;
// static int gTotalStringHandleCount;
// static int gLiveStringDataCount;
// static int gTotalStringDataCount;
};
/****** Global Helper Functions ******/
/**
* Concatenate two DOMString's.
*
* @param lhs the first string
* @param rhs the second string
* @return The concatenated object
*/
//DOMString CDOM_EXPORT operator + (const DOMString &lhs, const DOMString &rhs);
/**
* Concatenate a null terminated Unicode string to a DOMString.
*
* @param lhs the DOMString
* @param rhs the XMLCh * string
* @return The concatenated object
*/
//DOMString CDOM_EXPORT operator + (const DOMString &lhs, const XMLCh* rhs);
/**
* Concatenate a DOMString to a null terminated Unicode string
*
* @param lhs the null-terminated Unicode string
* @param rhs the DOMString
* @return The concatenated object
*/
//DOMString CDOM_EXPORT operator + (const XMLCh* lhs, const DOMString &rhs);
/**
* Concatenate a single Unicode character to a DOMString.
*
* @param lhs the DOMString
* @param rhs the character
* @return The concatenated object
*/
//DOMString CDOM_EXPORT operator + (const DOMString &lhs, XMLCh rhs);
/**
* Concatenate a DOMString to a single Unicode character.
*
* @param lhs the character
* @param rhs the DOMString
* @return The concatenated object
*/
//DOMString CDOM_EXPORT operator + (XMLCh lhs, const DOMString &rhs);
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Attr.hpp
Index: DOM_Attr.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_Attr.hpp,v $
* Revision 1.1 2001/03/07 16:03:59 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.7 2000/03/11 02:58:38 chchou
* Fix bug # 18, remove set method of readonly attributes
*
* Revision 1.6 2000/03/02 19:53:52 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.5 2000/02/24 20:11:27 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/17 17:47:24 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.3 2000/02/06 07:47:27 rahulj
* Year 2K copyright swat.
*
* 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:48 twl
* Initial checkin
*
* Revision 1.3 1999/11/08 20:44:13 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_Attr_HEADER_GUARD_
//#define DOM_Attr_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//#include <dom/DOM_Element.hpp>
//class AttrImpl;
/**
* The <code>DOM_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>DOM_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>DOM_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*/ DOM_Attr: public DOM_Node {
//public:
/** @name Constructors and assignment operators */
//@{
/**
* Default constructor for DOM_Attr. The resulting object does not
* refer to any Attribute; it will compare == to 0, and is similar
* to a null object reference variable in Java.
*
*/
// DOM_Attr();
public:
/**
* Copy constructor. Creates a new <code>DOM_Attr</code> that refers to the
* same underlying Attribute as the original. See also DOM_Node::clone(),
* which will copy an actual attribute, rather than just creating a new
* reference to the original attribute.
*
* @param other The source attribute reference object
*/
// DOM_Attr(const DOM_Attr &other);
/**
* Assignment operator
*
* @param other The source attribute object
*/
// DOM_Attr & operator = (const DOM_Attr &other);
DOM_Attr & assignment(const DOM_Attr &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Attr & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor */
//@{
/**
* Destructor. The object being destroyed is a reference to the Attribute
* "node", not the underlying attribute itself.
*
*/
// ~DOM_Attr();
//@}
/** @name Getter functions */
//@{
/**
* Returns the name of this attribute.
*/
DOMString getName() const;
/**
*
* 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.
*/
bool getSpecified() const;
/**
* 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.
*/
DOMString getValue() const;
//@}
/** @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
*/
void setValue(const DOMString &value);
//@}
/** @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>
*
*/
DOM_Element getOwnerElement() const;
//@}
//protected:
// DOM_Attr(AttrImpl *attr);
// friend class DOM_Element;
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_CDATASection.hpp
Index: DOM_CDATASection.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_CDATASection.hpp,v $
* Revision 1.1 2001/03/07 16:03:59 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 2000/03/02 19:53:52 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.4 2000/02/24 20:11:27 abagchi
* Swat for removing Log from API docs
*
* Revision 1.3 2000/02/06 07:47:28 rahulj
* Year 2K copyright swat.
*
* 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:49 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:13 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_CDataSection_HEADER_GUARD_
//#define DOM_CDataSection_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Text.hpp>
//class CDATASectionImpl;
/**
* <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>DOM_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*/ DOM_CDATASection: public DOM_Text {
public:
/** @name Constructors and assignment operators */
//@{
/**
* Default constructor for DOM_CDATASection. The resulting object does not
* refer to any actual CData section; it will compare == to 0, and is similar
* to a null object reference variable in Java.
*
*/
// DOM_CDATASection();
/**
* Copy constructor. Creates a new <code>DOM_CDataSection</code> that refers to the
* same underlying data as the original. See also <code>DOM_Node::clone()</code>,
* which will copy the underlying data, rather than just creating a new
* reference to the original object.
*
* @param other The source <code>DOM_CDATASection</code> object
*/
// DOM_CDATASection(const DOM_CDATASection &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_CDATASection & operator = (const DOM_CDATASection &other);
DOM_CDATASection & assignment(const DOM_CDATASection &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_CDATASection & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_CDATASection.
*
*/
// ~DOM_CDATASection();
//@}
//protected:
// DOM_CDATASection(CDATASectionImpl *);
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_CharacterData.hpp
Index: DOM_CharacterData.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_CharacterData.hpp,v $
* Revision 1.1 2001/03/07 16:03:59 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.6 2000/03/02 19:53:53 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.5 2000/02/24 20:11:27 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/15 23:17:36 andyh
* Update Doc++ API comments
* NameSpace bugfix and update to track W3C
* Chih Hsiang Chou
*
* Revision 1.3 2000/02/06 07:47:28 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/02/04 01:49:29 aruna1
* TreeWalker and NodeIterator changes
*
* Revision 1.1.1.1 1999/11/09 01:08:49 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:13 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_CharacterData_HEADER_GUARD_
//#define DOM_CharacterData_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class CharacterDataImpl;
/**
* The <code>DOM_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*/ DOM_CharacterData: public DOM_Node {
//private:
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_CharacterData. While there can be
* no actual DOM nodes of type CharacterData, the C++ objects
* function more like reference variables, and instances of
* <code>DOM_CharacterData</code> can exist. They will be null when created
* by this constructor, and can then be assigned to refer to Text
* or CDATASection nodes.
*/
// DOM_CharacterData();
/**
* Copy constructor
*
* @param other The object to be copied
*/
// DOM_CharacterData(const DOM_CharacterData &other);
/**
* Assignment operator
*
* @param other The object to be copied
*/
// DOM_CharacterData & operator = (const DOM_CharacterData &other);
DOM_CharacterData & assignment(const DOM_CharacterData &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_CharacterData & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_CharacterData. The object being destroyed
* is the reference to the Character Data node, not the character
* data itself.
*/
// ~DOM_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>DOMString</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.
* @exception DOMException
* DOMSTRING_SIZE_ERR: Raised when it would return more characters than
* fit in a <code>DOMString</code> variable on the implementation
* platform.
*/
DOMString getData() const;
/**
* 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.
*/
unsigned int getLength() const;
/**
* 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.
* <br>DOMSTRING_SIZE_ERR: Raised if the specified range of text does not
* fit into a <code>DOMString</code>.
*/
DOMString substringData(unsigned int offset,
unsigned int count) const;
//@}
/** @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>DOMString</code> specified.
* @param arg The <code>DOMString</code> to append.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
void appendData(const DOMString &arg);
/**
* Insert a string at the specified character offset.
*
* @param offset The character offset at which to insert.
* @param arg The <code>DOMString</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.
*/
void insertData(unsigned int offset, const DOMString &arg);
/**
* 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.
*/
void deleteData(unsigned int offset,
unsigned int count);
/**
* 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>DOMString</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.
*/
void replaceData(unsigned int offset,
unsigned int count,
const DOMString &arg);
/**
* Sets the character data of the node that implements this interface.
*
* @param data The <code>DOMString</code> to set.
*/
void setData(const DOMString &data);
//@}
//protected:
// DOM_CharacterData(CharacterDataImpl *impl);
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Comment.hpp
Index: DOM_Comment.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_Comment.hpp,v $
* Revision 1.1 2001/03/07 16:03:59 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 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.4 2000/02/24 20:11:27 abagchi
* Swat for removing Log from API docs
*
* Revision 1.3 2000/02/06 07:47:28 rahulj
* Year 2K copyright swat.
*
* 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:50 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:14 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_Comment_HEADER_GUARD_
//#define DOM_Comment_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_CharacterData.hpp>
//class CommentImpl;
/**
* Class to refer to XML comment nodes in the DOM.
*
* <P>The string value contains all of the characters between
* the starting '<code><!--</code>' and ending '<code>--></code>'.
*/
class /*CDOM_EXPORT*/ DOM_Comment: public DOM_CharacterData {
public:
/** @name Constructors and assignment operators */
//@{
/**
* Default constructor for DOM_Comment. The resulting object does not
* refer to an actual Comment node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual comment node.
* <p>
* New comment nodes are created by DOM_Document::createComment().
*
*/
// DOM_Comment();
/**
* Copy constructor. Creates a new <code>DOM_Comment</code> that refers to the
* same underlying node as the original. See also DOM_Node::clone(),
* which will copy the actual Comment node, rather than just creating a new
* reference to the original node.
*
* @param other The object to be copied.
*/
// DOM_Comment(const DOM_Comment &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_Comment & operator = (const DOM_Comment &other);
DOM_Comment & assignment(const DOM_Comment &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Comment & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_Comment. The object being destroyed is the reference
* object, not the underlying Comment node itself.
*
*/
// ~DOM_Comment();
//@}
//protected:
// DOM_Comment(CommentImpl *comment);
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_DOMImplementation.hpp
Index: DOM_DOMImplementation.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_DOMImplementation.hpp,v $
* Revision 1.1 2001/03/07 16:03:59 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* 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/17 17:47:24 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.4 2000/02/10 23:35:11 andyh
* Update DOM_DOMImplementation::CreateDocumentType and
* DOM_DocumentType to match latest from W3C
*
* Revision 1.3 2000/02/06 07:47:28 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/01/05 01:16:07 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:08:57 twl
* Initial checkin
*
* Revision 1.3 1999/11/08 20:44:15 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOMImplementation_HEADER_GUARD_
//#define DOMImplementation_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOMString.hpp>
//class DOM_Document;
//class DOM_DocumentType;
/**
* This class provides a way to query the capabilities of an implementation
* of the DOM
*/
class /*CDOM_EXPORT*/ DOM_DOMImplementation {
// private:
// DOM_DOMImplementation(const DOM_DOMImplementation &other);
public:
/** @name Constructors and assignment operators */
//@{
/**
* Construct a DOM_Implementation reference variable, which should
* be assigned to the return value from
* <code>DOM_Implementation::getImplementation()</code>.
*/
// DOM_DOMImplementation();
/**
* Assignment operator
*
*/
// DOM_DOMImplementation & operator = (const DOM_DOMImplementation &other);
DOM_DOMImplementation & assignment(const DOM_DOMImplementation &other);
//@}
/** @name Destructor */
//@{
/**
* Destructor. The object being destroyed is a reference to the DOMImplemenentation,
* not the underlying DOMImplementation object itself, which is owned by
* the implementation code.
*
*/
// ~DOM_DOMImplementation();
//@}
/** @name Getter functions */
//@{
/**
* Test if the DOM implementation implements a specific feature.
*
* @param feature The string of the feature to test (case-insensitive). The legal
* values are defined throughout this specification. The string must be
* an <EM>XML name</EM> (see also Compliance).
* @param version This is the version number of the package name to test.
* In Level 1, this is the string "1.0". If the version is not specified,
* supporting any version of the feature will cause the method to return
* <code>true</code>.
* @return <code>true</code> if the feature is implemented in the specified
* version, <code>false</code> otherwise.
*/
bool hasFeature(const DOMString &feature, const DOMString &version);
/** Return a reference to a DOM_Implementation object for this
* DOM implementation.
*
* Intended to support applications that may be
* using DOMs retrieved from several different sources, potentially
* with different underlying implementations.
*/
static DOM_DOMImplementation &getImplementation();
//@}
/** @name Functions introduced in DOM Level 2. */
//@{
/**
* Creates an empty <code>DOM_DocumentType</code> node.
* Entity declarations and notations are not made available.
* Entity reference expansions and default attribute additions
* do not occur. It is expected that a future version of the DOM
* will provide a way for populating a <code>DOM_DocumentType</code>.
*
* <p><b>"Experimental - subject to change"</b></p>
*
* @param qualifiedName The <em>qualified name</em>
* of the document type to be created.
* @param publicId The external subset public identifier.
* @param systemId The external subset system identifier.
* @return A new <code>DOM_DocumentType</code> node with
* <code>Node.ownerDocument</code> set to <code>null</code>.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified qualified name
* contains an illegal character.
* <br>
* NAMESPACE_ERR: Raised if the <code>qualifiedName</code> is malformed.
*/
DOM_DocumentType createDocumentType(const DOMString &qualifiedName,
const DOMString &publicId, const DOMString &systemId);
/**
* Creates an XML <code>DOM_Document</code> object of the specified type
* with its document element.
*
* <p><b>"Experimental - subject to change"</b></p>
*
* @param namespaceURI The <em>namespace URI</em> of
* the document element to create, or <code>null</code>.
* @param qualifiedName The <em>qualified name</em>
* of the document element to be created.
* @param doctype The type of document to be created or <code>null</code>.
* <p>When <code>doctype</code> is not <code>null</code>, its
* <code>Node.ownerDocument</code> attribute is set to the document
* being created.
* @return A new <code>DOM_Document</code> object.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified qualified name
* contains an illegal character.
* <br>
* NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is
* malformed, 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".
* <br>
* WRONG_DOCUMENT_ERR: Raised if <code>doctype</code> has already
* been used with a different document.
*/
DOM_Document createDocument(const DOMString &namespaceURI,
const DOMString &qualifiedName, const DOM_DocumentType &doctype);
//@}
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Document.hpp
Index: DOM_Document.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/>.
*/
/*
* $Id: DOM_Document.hpp,v 1.1 2001/03/07 16:04:00 jasons Exp $
*/
//#ifndef DOM_Document_HEADER_GUARD_
//#define DOM_Document_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_DocumentType.hpp>
//#include <dom/DOM_DOMImplementation.hpp>
//#include <dom/DOM_Element.hpp>
//#include <dom/DOM_DocumentFragment.hpp>
//#include <dom/DOM_Comment.hpp>
//#include <dom/DOM_CDATASection.hpp>
//#include <dom/DOM_ProcessingInstruction.hpp>
//#include <dom/DOM_Attr.hpp>
//#include <dom/DOM_Entity.hpp>
//#include <dom/DOM_EntityReference.hpp>
//#include <dom/DOM_NodeList.hpp>
//#include <dom/DOM_Notation.hpp>
//#include <dom/DOM_Text.hpp>
//#include <dom/DOM_Node.hpp>
//#include <dom/DOM_NodeIterator.hpp>
//#include <dom/DOM_TreeWalker.hpp>
//#include <dom/DOM_XMLDecl.hpp>
//#include <dom/DOM_Range.hpp>
//class DocumentImpl;
//class NodeIteratorImpl;
/**
* Class to refer to XML Document nodes in the DOM.
*
* Conceptually, a DOM 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*/ DOM_Document: public DOM_Node {
public:
/** @name Constructors and assignment operators */
//@{
/**
* The default constructor for DOM_Document creates a null
* DOM_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 static method
* <code> DOM_Document::createDocument(). </code>
*
*/
// DOM_Document();
/**
* Copy constructor. Creates a new <code>DOM_Document</code> that refers to the
* same underlying actual document as the original.
*
* @param other The object to be copied
*/
// DOM_Document(const DOM_Document &other);
/**
* Assignment operator
*
* @param other The object to be copied
*/
// DOM_Document & operator = (const DOM_Document &other);
DOM_Document & assignment(const DOM_Document &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Document & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor */
//@{
/**
* Destructor. The object being destroyed is the reference
* object, not the underlying Document itself.
*
* <p>The reference counting memory management will
* delete the underlying document itself if this
* DOM_Document is the last remaining to refer to the Document,
* and if there are no remaining references to any of the nodes
* within the document tree. If other live references do remain,
* the underlying document itself remains also.
*
*/
// ~DOM_Document();
//@}
/** @name Factory methods to create new nodes for the Document */
//@{
/**
* Create a new empty document.
*
* This differs from the <code> DOM_Document </code> default
* constructor, which creates
* a null reference only, not an actual document.
*
* <p>This function is an extension to the DOM API, which
* lacks any mechanism for the creation of new documents.
* @return A new <code>DOM_Document</code>, which may then
* be populated using the DOM API calls.
*/
static DOM_Document createDocument();
/**
* Create a new entity.
*
* Non-standard extension.
* @param name The name of the entity to instantiate
*
*/
DOM_Entity createEntity(const DOMString &name);
/**
* 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>DOM_Element</code> that reference the new element.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified name contains an
* illegal character.
*/
DOM_Element createElement(const DOMString &tagName);
/**
* Creates an element of the type specified.
* This non-standard overload of createElement, with the name specified as
* raw Unicode string, is intended for use from XML parsers,
* and is the best performing way to create elements. The name
* string is not checked for conformance to the XML rules for valid
* element names.
*
*
* @param tagName The name of the element type to instantiate, as
* a null-terminated unicode string.
* @return A new <CODE>DOM_Element</CODE>
* object with the <CODE>nodeName</CODE> attribute set to
* <CODE>tagName</CODE>, and <CODE>localName</CODE>,
* <CODE>prefix</CODE>, and <CODE>namespaceURI</CODE> set to
* <CODE>null</CODE>.
*/
// DOM_Element createElement(const XMLCh *tagName);
/**
* Creates an empty DocumentFragment object.
*
* @return A <code>DOM_DocumentFragment</code> that references the newly
* created document fragment.
*/
DOM_DocumentFragment createDocumentFragment();
/**
* Creates a Text node given the specified string.
*
* @param data The data for the node.
* @return A <code>DOM_Text</code> object that references the newly
* created text node.
*/
DOM_Text createTextNode(const DOMString &data);
/**
* Creates a Comment node given the specified string.
*
* @param data The data for the comment.
* @return A <code>DOM_Comment</code> that references the newly
* created comment node.
*/
DOM_Comment createComment(const DOMString &data);
/**
* Creates a CDATASection node whose value is the specified
* string.
*
* @param data The data for the <code>DOM_CDATASection</code> contents.
* @return A <code>DOM_CDATASection</code> object.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
*/
DOM_CDATASection createCDATASection(const DOMString &data);
/**
* Create a DocumentType node. Non-standard extension.
*
* @return A <code>DOM_DocumentType</code> that references the newly
* created DocumentType node.
*
*/
DOM_DocumentType createDocumentType(const DOMString &name);
/**
* Create a Notation.
*
* Non-standard extension.
*
* @param name The name of the notation to instantiate
* @return A <code>DOM_Notation</code> that references the newly
* created Notation node.
*/
DOM_Notation createNotation(const DOMString &name);
/**
* 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>DOM_ProcessingInstruction</code> that references the newly
* created PI node.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if an illegal character is specified.
*/
DOM_ProcessingInstruction createProcessingInstruction(const DOMString &target,
const DOMString &data);
/**
* Creates an Attr of the given name.
*
* Note that the
* <code>Attr</code> instance can then be attached to an Element
* using the <code>DOMElement::setAttribute()</code> method.
* @param name The name of the attribute.
* @return A new <CODE>DOM_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 DOMException
* INVALID_CHARACTER_ERR: Raised if the specified name contains an
* illegal character.
*/
DOM_Attr createAttribute(const DOMString &name);
/**
* Creates an EntityReference object.
*
* @param name The name of the entity to reference.
* @return A <code>DOM_EntityReference</code> that references the newly
* created EntityReference node.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified name contains an
* illegal character.
*/
DOM_EntityReference createEntityReference(const DOMString &name);
/**
* Creates a NodeIterator object. (DOM2)
*
* 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>.
*
* 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 DOM 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.
*/
DOM_NodeIterator createNodeIterator(DOM_Node root,
unsigned long whatToShow,
DOM_NodeFilter* filter,
bool entityReferenceExpansion);
/**
* Creates a TreeWalker object. (DOM2)
*
* 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 DOM 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.
*/
DOM_TreeWalker createTreeWalker(DOM_Node root,
unsigned long whatToShow,
DOM_NodeFilter* filter,
bool entityReferenceExpansion);
/**
* Creates a XMLDecl type Node . Non-Standard (an extension to xerces)
*
* XMLDecl Nodes are created to get version, encoding and standalone information in a document tree
*
* This node if created gets attached to a document object or an entity node. There can be no child
* to this type of node.
*
* <p><b>"Experimental - subject to change"</b></p>
*
* @param version The version data of the document. Currently possible value is 1.0
* @param encoding The encoding type specified in the document
* @param standalone The information whether the document is standalone or not
*/
DOM_XMLDecl createXMLDecl(const DOMString& version,
const DOMString& encoding,
const DOMString& standalone);
/**
* 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 DOM_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
*/
DOM_Range createRange();
//@}
/** @name Getter functions */
//@{
/**
* Get Document Type Declaration (see <code>DOM_DocumentType</code>) associated
* with this document.
*
* For documents without
* a document type declaration this returns <code>null</code> reference object. The DOM Level
* 1 does not support editing the Document Type Declaration, therefore
* <code>docType</code> cannot be altered in any way.
*/
DOM_DocumentType getDoctype() const;
/**
* Return the <code>DOMImplementation</code> object that handles this document.
*/
DOM_DOMImplementation &getImplementation() const;
/**
* Return a reference to the root element of the document.
*/
DOM_Element getDocumentElement() const;
/**
* Returns a <code>DOM_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.
*/
DOM_NodeList getElementsByTagName(const DOMString &tagname) const;
//@}
/** @name Functions introduced in DOM 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>DOM_Attr</CODE>,
* <CODE>DOM_EntityReference</CODE>, and <CODE>DOM_Notation</CODE> nodes.
* @return The imported node that belongs to this <CODE>DOM_Document</CODE>.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the type of node being imported is
* not supported.
*/
DOM_Node importNode(const DOM_Node &importedNode, bool deep);
/**
* 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>DOM_Element</code> object.
* @exception DOMException
* 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".
*/
DOM_Element createElementNS(const DOMString &namespaceURI,
const DOMString &qualifiedName);
/**
* 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>DOM_Attr</code> object.
* @exception DOMException
* 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/".
*/
DOM_Attr createAttributeNS(const DOMString &namespaceURI,
const DOMString &qualifiedName);
/**
* Returns a <code>DOM_NodeList</code> of all the <code>DOM_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>DOM_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>DOM_NodeList</code> object containing all the matched
* <code>DOM_Element</code>s.
*/
DOM_NodeList getElementsByTagNameNS(const DOMString &namespaceURI,
const DOMString &localName) const;
/**
* Returns the <code>DOM_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 DOM 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.
*/
DOM_Element getElementById(const DOMString &elementId);
//@}
//protected:
// DOM_Document (DocumentImpl *impl);
// friend class DOM_Node;
// friend class DocumentImpl;
// friend class NodeIteratorImpl;
// friend class DOM_DOMImplementation;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_DocumentFragment.hpp
Index: DOM_DocumentFragment.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/>.
*/
/*
* $Id: DOM_DocumentFragment.hpp,v 1.1 2001/03/07 16:04:00 jasons Exp $
*/
//#ifndef DOM_DocumentFragment_HEADER_GUARD_
//#define DOM_DocumentFragment_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class DocumentFragmentImpl;
/**
* <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*/ DOM_DocumentFragment: public DOM_Node {
public:
/** @name Constructors and assignment operators */
//@{
/**
* Default constructor for <code>DOM_DocumentFragment</code>. The resulting object does not
* refer to an actual Document Fragment node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual Document Fragment node.
* <p>
* New document fragment nodes are created by DOM_Document::createDocumentFragment().
*
*/
// DOM_DocumentFragment();
/**
* Copy constructor. Creates a new <code>DOM_DocumentFragment</code> that refers to the
* same underlying node as the original. See also DOM_Node::clone(),
* which will copy the actual Document fragment node, rather than just creating a new
* reference to the original node.
*
* @param other The object to be copied
*/
// DOM_DocumentFragment(const DOM_DocumentFragment &other);
/**
* Assignment operator
*
* @param other The object to be copied
*/
// DOM_DocumentFragment & operator = (const DOM_DocumentFragment &other);
DOM_DocumentFragment & assignment(const DOM_DocumentFragment &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_DocumentFragment & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor */
//@{
/**
* Destructor. The object being destroyed is the reference
* object, not the underlying Comment node itself.
*
*/
// ~DOM_DocumentFragment();
//@}
//protected:
// DOM_DocumentFragment(DocumentFragmentImpl *);
// friend class DOM_Document;
// friend class RangeImpl;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_DocumentType.hpp
Index: DOM_DocumentType.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_DocumentType.hpp,v $
* Revision 1.1 2001/03/07 16:04:00 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.8 2000/03/10 02:14:39 chchou
* add null DOM_DocumentType constructor
*
* Revision 1.7 2000/03/02 19:53:55 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/17 17:47:24 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.4 2000/02/10 23:35:11 andyh
* Update DOM_DOMImplementation::CreateDocumentType and
* DOM_DocumentType to match latest from W3C
*
* Revision 1.3 2000/02/06 07:47:29 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/01/05 01:16:07 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:08:52 twl
* Initial checkin
*
* Revision 1.3 1999/11/08 20:44:16 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_DocumentType_HEADER_GUARD_
//#define DOM_DocumentType_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class DOM_NamedNodeMap;
//class DocumentTypeImpl;
/**
* Each <code>Document</code> has a <code>doctype</code> whose value
* is either <code>null</code> or a <code>DocumentType</code> object.
*
* The <code>DOM_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*/ DOM_DocumentType: public DOM_Node {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_DocumentType. The resulting object does not
* refer to an actual DocumentType node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to the actual DocumentType node.
* <p>
* A new DocumentType node for a document that does not already have one
* can be created by DOM_Document::createDocumentType().
*
*/
// DOM_DocumentType();
/**
* Constructor for a null DOM_DocumentType.
* This allows passing 0 directly as a null DOM_DocumentType to
* function calls that take DOM_DocumentType as parameters.
*
* @param nullPointer Must be 0.
*/
// DOM_DocumentType(int nullPointer);
/**
* Copy constructor. Creates a new <code>DOM_Comment</code> that refers to the
* same underlying node as the original.
*
*
* @param other The object to be copied.
*/
// DOM_DocumentType(const DOM_DocumentType &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_DocumentType & operator = (const DOM_DocumentType &other);
DOM_DocumentType & assignment(const DOM_DocumentType &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_DocumentType & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_DocumentType. The object being destroyed is the reference
* object, not the underlying DocumentType node itself.
*
*/
// ~DOM_DocumentType();
//@}
/** @name Getter functions. */
//@{
/**
* The name of DTD; i.e., the name immediately following the
* <code>DOCTYPE</code> keyword in an XML source document.
*/
DOMString getName() const;
/**
* 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.
*/
DOM_NamedNodeMap getEntities() const;
/**
* 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.
*/
DOM_NamedNodeMap getNotations() const;
//@}
/** @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.
*/
DOMString getPublicId() const;
/**
* Get the system identifier of the external subset.
*
* <p><b>"Experimental - subject to change"</b></p>
*
* @return The system identifier of the external subset.
*/
DOMString getSystemId() const;
/**
* Get the internal subset as a string.
*
* <p><b>"Experimental - subject to change"</b></p>
*
* @return The internal subset as a string.
*/
DOMString getInternalSubset() const;
//@}
//protected:
// DOM_DocumentType(DocumentTypeImpl *);
// friend class DOM_Document;
// friend class DOM_DOMImplementation;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Element.hpp
Index: DOM_Element.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_Element.hpp,v $
* Revision 1.1 2001/03/07 16:04:00 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.7 2000/03/02 19:53:55 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/17 17:47:24 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.4 2000/02/06 07:47:29 rahulj
* Year 2K copyright swat.
*
* Revision 1.3 2000/01/05 01:16:07 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.2 1999/12/21 07:47:06 robweir
* Patches to support Xalan, where we need to create a
* "special" DOM with subclassed Nodes.
*
* 1. Export the NodeImpl-derived classes
* 2. Ensure that their constructors have at least protected access
*
* Revision 1.1.1.1 1999/11/09 01:08:57 twl
* Initial checkin
*
* Revision 1.3 1999/11/08 20:44:17 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_Element_HEADER_GUARD_
//#define DOM_Element_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class DOM_Attr;
//class DOM_NodeList;
//class ElementImpl;
/**
* By far the vast majority of objects (apart from text) that authors
* encounter when traversing a document are <code>DOM_Element</code> nodes.
*
* Assume the following XML document:<elementExample id="demo">
* <subelement1/>
* <subelement2><subsubelement/></subelement2>
* </elementExample>
* <p>When represented using DOM, the top node is an <code>DOM_Element</code> node
* for "elementExample", which contains two child <code>DOM_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>DOM_Element</code> interface inherits from <code>DOM_Node</code>, the generic
* <code>DOM_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>DOM_Element</code> interface to retrieve either an <code>DOM_Attr</code>
* object by name or an attribute value by name. In XML, where an attribute
* value may contain entity references, an <code>DOM_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*/ DOM_Element: public DOM_Node {
//private:
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_Element. The resulting object does not
* refer to an actual Element node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual Element node.
* <p>
* New comment nodes are created by DOM_Document::createElement().
*
*/
// DOM_Element();
/**
* Copy constructor. Creates a new <code>DOM_Element</code> that refers to the
* same underlying actual element as the original.
*
* @param other The object to be copied
*/
// DOM_Element(const DOM_Element &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_Element & operator = (const DOM_Element &other);
DOM_Element & assignment(const DOM_Element &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Element & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor. The object being destroyed is the reference
* object, not the underlying Element itself.
*
*/
// ~DOM_Element();
//@}
/** @name Getter functions. */
//@{
/**
* The name of the element.
*
* For example, in: <elementExample
* id="demo"> ... </elementExample> , <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.
*/
DOMString getTagName() const;
/**
* Retrieves an attribute value by name.
*
* @param name The name of the attribute to retrieve.
* @return The <code>DOM_Attr</code> value as a string, or the empty string if
* that attribute does not have a specified or default value.
*/
DOMString getAttribute(const DOMString &name) const;
/**
* Retrieves an <code>DOM_Attr</code> node by name.
*
* @param name The name (<CODE>nodeName</CODE>) of the attribute to retrieve.
* @return The <code>DOM_Attr</code> node with the specified name (<CODE>nodeName</CODE>) or
* <code>null</code> if there is no such attribute.
*/
DOM_Attr getAttributeNode(const DOMString &name) const;
/**
* 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>DOM_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>DOM_Element</code> nodes.
*/
DOM_NodeList getElementsByTagName(const DOMString &name) const;
//@}
/** @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>DOM_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.
*/
void setAttribute(const DOMString &name,
const DOMString &value);
/**
* 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>DOM_Attr</code> node to add to the attribute list.
* @return If the <code>newAttr</code> attribute replaces an existing
* attribute, the replaced
* <code>DOM_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>DOM_Element</code> object. The DOM user must
* explicitly clone <code>DOM_Attr</code> nodes to re-use them in other
* elements.
*/
DOM_Attr setAttributeNode(DOM_Attr newAttr);
//@}
/** @name Functions which modify the Element. */
//@{
/**
* Removes the specified attribute node.
* If the removed <CODE>DOM_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>DOM_Attr</code> node to remove from the attribute
* list.
* @return The <code>DOM_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.
*/
DOM_Attr removeAttributeNode(DOM_Attr oldAttr);
/**
* 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.
*/
void removeAttribute(const DOMString &name);
//@}
/** @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>DOM_Attr</code> value as a string, or an <CODE>null</CODE> if
* that attribute does not have a specified or default value.
*/
DOMString getAttributeNS(const DOMString &namespaceURI,
const DOMString &localName) const;
/**
* 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>DOM_Attr</CODE>
* node plus any <CODE>DOM_Text</CODE> and <CODE>DOM_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/".
*/
void setAttributeNS(const DOMString &namespaceURI,
const DOMString &qualifiedName, const DOMString &value);
/**
* 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.
*/
void removeAttributeNS(const DOMString &namespaceURI,
const DOMString &localName);
/**
* Retrieves an <code>DOM_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>DOM_Attr</code> node with the specified attribute local
* name and namespace URI or <code>null</code> if there is no such attribute.
*/
DOM_Attr getAttributeNodeNS(const DOMString &namespaceURI,
const DOMString &localName) const;
/**
* 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>DOM_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>DOM_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>DOM_Element</code> object. The DOM user must
* explicitly clone <code>DOM_Attr</code> nodes to re-use them in other
* elements.
*/
DOM_Attr setAttributeNodeNS(DOM_Attr newAttr);
/**
* Returns a <code>DOM_NodeList</code> of all the <code>DOM_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>DOM_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>DOM_NodeList</code> object containing all the matched
* <code>DOM_Element</code>s.
*/
DOM_NodeList getElementsByTagNameNS(const DOMString &namespaceURI,
const DOMString &localName) const;
//@}
// protected:
// DOM_Element(ElementImpl *impl);
// friend class DOM_Document;
// friend class DOM_Attr;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Entity.hpp
Index: DOM_Entity.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_Entity.hpp,v $
* Revision 1.1 2001/03/07 16:04:00 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.8 2000/09/09 00:11:46 andyh
* Virtual Destructor Patch, submitted by Kirk Wylie
*
* Revision 1.7 2000/04/19 02:26:16 aruna1
* Full support for DOM_EntityReference, DOM_Entity and DOM_DocumentType introduced
*
* Revision 1.6 2000/03/11 02:58:38 chchou
* Fix bug # 18, remove set method of readonly attributes
*
* Revision 1.5 2000/03/02 19:53:55 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.4 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.3 2000/02/06 07:47:30 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/01/05 01:16:07 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:08:58 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:17 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_Entity_HEADER_GUARD_
//#define DOM_Entity_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class EntityImpl;
/**
* 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*/ DOM_Entity: public DOM_Node {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_Entity.
*
*/
// DOM_Entity();
/**
* Copy constructor.
*
* @param other The object to be copied.
*/
// DOM_Entity(const DOM_Entity &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_Entity & operator = (const DOM_Entity &other);
DOM_Entity & assignment(const DOM_Entity &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Entity & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_Entity.
*
*/
// ~DOM_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>.
*/
DOMString getPublicId() const;
/**
* The system identifier associated with the entity, if specified.
*
* If the system identifier was not specified, this is <code>null</code>.
*/
DOMString getSystemId() const;
/**
* For unparsed entities, the name of the notation for the entity.
*
* For parsed entities, this is <code>null</code>.
*/
DOMString getNotationName() const;
DOM_Node getFirstChild() const;
DOM_Node getLastChild() const;
DOM_NodeList getChildNodes() const;
bool hasChildNodes() const;
DOM_Node getPreviousSibling() const;
DOM_Node getNextSibling() const;
//@}
//protected:
// DOM_Entity(EntityImpl *impl);
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_EntityReference.hpp
Index: DOM_EntityReference.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_EntityReference.hpp,v $
* Revision 1.1 2001/03/07 16:04:00 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 2000/03/02 19:53:56 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.4 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.3 2000/02/06 07:47:30 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/01/05 01:16:07 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:08:58 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:18 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_EntityReference_HEADER_GUARD_
//#define DOM_EntityReference_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class EntityReferenceImpl;
/**
* <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*/ DOM_EntityReference: public DOM_Node {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_EntityReference. The resulting object does not
* refer to an actual Entity Reference node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual entity reference node.
* <p>
* New entity reference nodes are created by DOM_Document::createEntityReference().
*
*/
// DOM_EntityReference();
/**
* Copy constructor. Creates a new <code>DOM_EntityReference</code> that refers to the
* same underlying node as the original.
*
* @param other The object to be copied.
*/
// DOM_EntityReference(const DOM_EntityReference &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_EntityReference & operator = (const DOM_EntityReference &other);
DOM_EntityReference & assignment(const DOM_EntityReference &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_EntityReference & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_EntityReference. The object being destroyed is the reference
* object, not the underlying entity reference node itself.
*
*/
// ~DOM_EntityReference();
//@}
//protected:
// DOM_EntityReference(EntityReferenceImpl *impl);
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_NamedNodeMap.hpp
Index: DOM_NamedNodeMap.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_NamedNodeMap.hpp,v $
* Revision 1.1 2001/03/07 16:04:01 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.13 2000/06/07 22:49:40 andyh
* Memory usage reduction: DOM NamedNodeMaps for attributes are allocated
* only for elements that actually have attributes. By Joe Polastre.
*
* Revision 1.12 2000/03/11 03:19:13 chchou
* Fix bug # 19, add const keyword to API
*
* Revision 1.11 2000/03/02 19:53:56 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.10 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.9 2000/02/17 17:47:24 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.8 2000/02/15 23:17:36 andyh
* Update Doc++ API comments
* NameSpace bugfix and update to track W3C
* Chih Hsiang Chou
*
* Revision 1.7 2000/02/10 20:20:42 abagchi
* Added docs for assignment operators
*
* Revision 1.6 2000/02/10 20:19:24 abagchi
* Added docs for equality operators
*
* Revision 1.5 2000/02/06 07:47:30 rahulj
* Year 2K copyright swat.
*
* Revision 1.4 2000/02/04 01:49:28 aruna1
* TreeWalker and NodeIterator changes
*
* Revision 1.3 2000/01/22 01:38:29 andyh
* Remove compiler warnings in DOM impl classes
*
* Revision 1.2 2000/01/05 01:16:07 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:08:59 twl
* Initial checkin
*
* Revision 1.3 1999/11/08 20:44:18 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_NamedNodeMap_HEADER_GUARD_
//#define DOM_NamedNodeMap_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class NamedNodeMapImpl;
/**
* <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*/ DOM_NamedNodeMap {
//private:
// void *fImpl;
// short flagElem;
// static const unsigned short NNM_ELEMENT;
// static const unsigned short NNM_OTHER;
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_NamedNodeMap. The resulting object does not
* refer to an actual DOM_NamedNodeMap node; it will compare == to 0, and is similar
* to a null object reference variable in Java. NamedNopes are instantiated
* by these methods: DOM_Node::getAttributes, DOM_DocumentType::getEntities
* andDOM_DocumentType::getNotations
*
*/
// DOM_NamedNodeMap();
/**
* Copy constructor. Creates a new <code>DOM_NamedNodeMap</code> reference object
* that refers to the same underlying NamedNodeMap as the original.
*
* @param other The object to be copied.
*/
// DOM_NamedNodeMap(const DOM_NamedNodeMap &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_NamedNodeMap & operator = (const DOM_NamedNodeMap &other);
DOM_NamedNodeMap & assignment(const DOM_NamedNodeMap &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_NamedNodeMap & operator = (const DOM_NullPtr *other);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_NamedNodeMap. The object being destroyed is the reference
* object, not the underlying NamedNodeMap itself.
*
* <p>Like most other DOM types in this implementation, memory management
* of named node maps is automatic. Instances of DOM_NamedNodeMap function
* as references to an underlying heap based implementation object,
* and should never be explicitly new-ed or deleted in application code, but
* should appear only as local variables or function parameters.
*
*/
// ~DOM_NamedNodeMap();
//@}
/** @Comparisons. */
//@{
/**
* Test whether this NamedNodeMap reference refers to the same underlying
* named node map as the other reference object. This does not
* compare the contents of two different objects.
*
* @param arg p The value to be compared
* @return Returns true if the underlying named node map is same
*/
// bool operator == (const DOM_NamedNodeMap &other) const;
bool equal_to(const DOM_NamedNodeMap &other) const;
/**
* Test whether this NamedNodeMap reference refers to a different underlying
* named node map as the other reference object. This does not
* compare the contents of two different objects.
*
* @param arg p The value to be compared
* @return Returns true if the underlying named node map is different
*/
// bool operator != (const DOM_NamedNodeMap &other) const;
bool not_equal_to(const DOM_NamedNodeMap &other) const;
/**
* Use this comparison operator to test whether a Named Node Map reference
* is null.
*
* @param arg p The value to be compared, which must be 0 or null.
* @return Returns true if the named node map is null
*/
// bool operator == (const DOM_NullPtr *p) const;
/**
* Use this comparison operator to test whether a Named Node Map reference
* is not null.
*
* @param arg p The value to be compared, which must not be 0 or null.
* @return Returns true if the named node map is not null
*/
// bool operator != (const DOM_NullPtr *p) const;
//@}
/** @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.
*/
DOM_Node setNamedItem(DOM_Node arg);
//@}
/** @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.
*/
DOM_Node item(unsigned int index) const;
/**
* Retrieves a node specified by name.
*
* @param name The <code>nodeName</code> of a node to retrieve.
* @return A <code>DOM_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.
*/
DOM_Node getNamedItem(const DOMString &name) const;
/**
* The number of nodes in the map.
*
* The range of valid child node indices is
* 0 to <code>length-1</code> inclusive.
*/
unsigned int getLength() const;
//@}
/** @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.
*/
DOM_Node removeNamedItem(const DOMString &name);
//@}
/** @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>DOM_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.
*/
DOM_Node getNamedItemNS(const DOMString &namespaceURI,
const DOMString &localName);
/**
* 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>DOM_Node</code> replaces an existing node the
* replaced <code>DOM_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>DOM_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.
*/
DOM_Node setNamedItemNS(DOM_Node arg);
/**
* 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>DOM_NamedNodeMap</code> contains the
* attributes attached to an element, as returned by the attributes
* attribute of the <code>DOM_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>DOM_NamedNodeMap</code>
* is readonly.
*/
DOM_Node removeNamedItemNS(const DOMString &namespaceURI,
const DOMString &localName);
//@}
// protected:
// DOM_NamedNodeMap(NamedNodeMapImpl *impl);
// DOM_NamedNodeMap(NodeImpl *impl);
// friend class DOM_DocumentType;
// friend class DOM_Node;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Node.hpp
Index: DOM_Node.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/>.
*/
/*
* $Id: DOM_Node.hpp,v 1.1 2001/03/07 16:04:01 jasons Exp $
*/
//#ifndef DOM_Node_HEADER_GUARD_
//#define DOM_Node_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOMString.hpp>
//class DOM_NodeList;
//class DOM_NamedNodeMap;
//class DOM_Document;
//class NodeImpl;
//class DOM_NullPtr; // A dummy class, with no implementation, that is
// used as in overloaded functions as a way to
// pass 0 or null.
/**
* 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*/ DOM_Node {
public:
/** @name Constructors and assignment operators */
//@{
/**
* Default constructor for DOM_Node. The resulting object does not
* refer to an actual node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual node. "Acutal Nodes" will always
* be of some derived type, such as Element or Attr.
*
*/
// DOM_Node();
/**
* Copy constructor.
*
* @param other The object to be copied.
*/
// DOM_Node(const DOM_Node &other);
/**
* Assignment operator.
*
* @param other The source to be assigned.
*/
// DOM_Node & operator = (const DOM_Node &other);
DOM_Node & assignment(const DOM_Node &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Node & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_Node. The object being destroyed is the reference
* object, not the underlying node itself.
*
*/
// ~DOM_Node();
//@}
/** @name Equality and Inequality operators. */
//@{
/**
* The equality operator. This compares to references to nodes, and
* returns true if they both refer to the same underlying node. It
* is exactly analogous to Java's operator == on object reference
* variables. This operator can not be used to compare the values
* of two different nodes in the document tree.
*
* @param other The object reference with which <code>this</code> object is compared
* @returns True if both <code>DOM_Node</code>s refer to the same
* actual node, or are both null; return false otherwise.
*/
// bool operator == (const DOM_Node & other)const;
bool equal_to(const DOM_Node & other)const;
/**
* Compare with a pointer. Intended only to allow a convenient
* comparison with null.
*
*/
// bool operator == (const DOM_NullPtr *other) const;
/**
* The inequality operator. See operator ==.
*
*/
// bool operator != (const DOM_Node & other) const;
bool not_equal_to(const DOM_Node & other) const;
/**
* Compare with a pointer. Intended only to allow a convenient
* comparison with null.
*
*/
// bool operator != (const DOM_NullPtr * other) const;
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.
*/
DOMString getNodeName() const;
/**
* Gets the value of this node, depending on its type.
*
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
* @exception DOMException
* DOMSTRING_SIZE_ERR: Raised when it would return more characters than
* fit in a <code>DOMString</code> variable on the implementation
* platform.
*/
DOMString getNodeValue() const;
/**
* An enum value representing the type of the underlying object.
*/
short getNodeType() const;
/**
* 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> DOM_Node
* is returned.
*/
DOM_Node getParentNode() const;
/**
* 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.
*/
DOM_NodeList getChildNodes() const;
/**
* Gets the first child of this node.
*
* If there is no such node, this returns <code>null</code>.
*/
DOM_Node getFirstChild() const;
/**
* Gets the last child of this node.
*
* If there is no such node, this returns <code>null</code>.
*/
DOM_Node getLastChild() const;
/**
* Gets the node immediately preceding this node.
*
* If there is no such node, this returns <code>null</code>.
*/
DOM_Node getPreviousSibling() const;
/**
* Gets the node immediately following this node.
*
* If there is no such node, this returns <code>null</code>.
*/
DOM_Node getNextSibling() const;
/**
* Gets a <code>NamedNodeMap</code> containing the attributes of this node (if it
* is an <code>Element</code>) or <code>null</code> otherwise.
*/
DOM_NamedNodeMap getAttributes() const;
/**
* Gets the <code>DOM_Document</code> object associated with this node.
*
* This is also
* the <code>DOM_Document</code> object used to create new nodes. When this
* node is a <code>DOM_Document</code> or a <code>DOM_DocumentType</code>
* which is not used with any <code>DOM_Document</code> yet, this is
* <code>null</code>.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOM_Document getOwnerDocument() const;
/**
* Return the user data pointer.
*
* User data allows application programs
* to attach extra data to DOM nodes, and can be set using the
* function <code>DOM_Node::setUserData(p)</code>.
* @return The user data pointer.
*/
void *getUserData() const;
//@}
/** @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.
*/
DOM_Node cloneNode(bool deep) const;
//@}
/** @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>DOM_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.
*/
DOM_Node insertBefore(const DOM_Node &newChild,
const DOM_Node &refChild);
/**
* 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>DOM_DocumentFragment</CODE> object,
* <CODE>oldChild</CODE> is replaced by all of the <CODE>DOM_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.
*/
DOM_Node replaceChild(const DOM_Node &newChild,
const DOM_Node &oldChild);
/**
* 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.
*/
DOM_Node removeChild(const DOM_Node &oldChild);
/**
* 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.
*/
DOM_Node appendChild(const DOM_Node &newChild);
//@}
/** @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.
*/
bool hasChildNodes() const;
/**
* Test whether this node is null.
*
* This C++ class, <code>DOM_Node<code>
* functions much like an object reference to an underlying Node, and
* this function tests for that reference being null. Several DOM
* APIs, <code>Node.getNextSibling()</code> for example, can return null, and
* this function is used to test for that condition.
*
* <p>Operator == provides another way to perform this null test on a
* DOM_Node.
*/
bool isNull() const;
//@}
/** @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.
*/
void setNodeValue(const DOMString &nodeValue);
/**
* Set the user data for a node.
*
* User data allows application programs
* to attach extra data to DOM nodes, and can be retrieved using the
* function <code>DOM_Node::getUserData(p)</code>.
* <p>
* Deletion of the user data remains the responsibility of the
* application program; it will not be automatically deleted when
* the nodes themselves are reclaimed.
*
* <p> Because DOM_Node is not designed to be subclassed, userdata
* provides an alternative means for extending the the information
* kept with nodes by an application program.
*
* @param p The pointer to be kept with the node.
*/
void setUserData(void *p);
//@}
/** @name Functions introduced in DOM Level 2. */
//@{
/**
* Puts all <CODE>DOM_Text</CODE>
* nodes in the full depth of the sub-tree underneath this <CODE>DOM_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>DOM_Text</CODE>
* nodes, i.e., there are neither adjacent <CODE>DOM_Text</CODE>
* nodes nor empty <CODE>DOM_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>DOM_CDATASections</CODE>,
* the normalize operation alone may not be sufficient, since XPointers do
* not differentiate between <CODE>DOM_Text</CODE>
* nodes and <CODE>DOM_CDATASection</CODE>
* nodes.</P>
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
void normalize();
/**
* 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>DOM_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.
*/
bool supports(const DOMString &feature,
const DOMString &version) const;
/**
* 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>DOM_Document</CODE>
* interface, this is always <CODE>null</CODE>.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOMString getNamespaceURI() const;
/**
* 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>
*
*/
DOMString getPrefix() const;
/**
* 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>DOM_Document</code> interface,
* it is null.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOMString getLocalName() const;
/**
* 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>DOM_Element</CODE> and <CODE>DOM_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.
*
* <p><b>"Experimental - subject to change"</b></p>
*
* @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".
*/
void setPrefix(const DOMString &prefix);
//@}
//protected:
// NodeImpl *fImpl;
// DOM_Node(NodeImpl *);
// friend class DOM_Document;
// friend class DocumentImpl;
// friend class TreeWalkerImpl;
// friend class NodeIteratorImpl;
// friend class DOM_NamedNodeMap;
// friend class DOM_NodeList;
// friend class DOMParser;
// friend class DOM_Entity;
// friend class RangeImpl;
// friend class CharacterDataImpl;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_NodeFilter.hpp
Index: DOM_NodeFilter.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_NodeFilter.hpp,v $
* Revision 1.1 2001/03/07 16:04:01 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.9 2000/05/11 00:07:38 abagchi
* Removed tables. It was confusing doxygen
*
* Revision 1.8 2000/03/11 03:19:13 chchou
* Fix bug # 19, add const keyword to API
*
* Revision 1.7 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.6 2000/02/17 17:47:25 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.5 2000/02/15 23:17:37 andyh
* Update Doc++ API comments
* NameSpace bugfix and update to track W3C
* Chih Hsiang Chou
*
* Revision 1.4 2000/02/10 21:47:12 abagchi
* Added API docs
*
* Revision 1.3 2000/02/06 07:47:30 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/02/04 01:49:28 aruna1
* TreeWalker and NodeIterator changes
*
* Revision 1.1.1.1 1999/11/09 01:09:00 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:19 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
// DOM_NodeFilter.h: interface for the DOM_NodeFilter class.
//
//////////////////////////////////////////////////////////////////////
//#ifndef DOM_NodeFilter_HEADER_GUARD_
//#define DOM_NodeFilter_HEADER_GUARD_
//#include "DOM_Node.hpp"
//class NodeFilterImpl;
/**
* Filters are objects that know how to "filter out" nodes. If a
* <code>DOM_NodeIterator</code> or <code>DOM_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*/ DOM_NodeFilter
{
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, FILTER_REJECT, FILTER_SKIP};
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 Constructors */
//@{
/**
* Default constructor for DOM_NodeFilter.
*/
// DOM_NodeFilter();
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_NodeFilter.
*/
// virtual ~DOM_NodeFilter();
//@}
/** @name Test function. */
//@{
/**
* Test whether a specified node is visible in the logical view of a DOM_TreeWalker
* or DOM_NodeIterator. This function will be called by the implementation of
* DOM_TreeWalker and DOM_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 DOM_Node &node) const =0;
//@}
// private:
// DOM_NodeFilter(const DOM_NodeFilter &other);
// DOM_NodeFilter & operator = (const DOM_NodeFilter &other);
// bool operator == (const DOM_NodeFilter &other) const;
// bool operator != (const DOM_NodeFilter &other) const;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_NodeIterator.hpp
Index: DOM_NodeIterator.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_NodeIterator.hpp,v $
* Revision 1.1 2001/03/07 16:04:01 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.9 2000/02/17 17:47:25 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.8 2000/02/16 19:39:38 aruna1
* API Doc++ changes in
*
* Revision 1.7 2000/02/15 23:17:37 andyh
* Update Doc++ API comments
* NameSpace bugfix and update to track W3C
* Chih Hsiang Chou
*
* Revision 1.6 2000/02/11 18:14:11 abagchi
* Fixed doc++ bugs
*
* Revision 1.5 2000/02/11 03:01:04 abagchi
* Made protected method public to compile, must be fixed later
*
* Revision 1.4 2000/02/10 23:38:05 abagchi
* Added API docs
*
* Revision 1.3 2000/02/06 07:47:30 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/02/04 01:49:28 aruna1
* TreeWalker and NodeIterator changes
*
* Revision 1.3 1999/11/08 20:44:20 rahul
* Swat for adding in Product name and CVS comment log variable.
*
* Revision 1.1.1.1 1999/11/09 01:09:01 twl
* Initial checkin
*
*/
//#ifndef DOM_NodeIterator_HEADER_GUARD_
//#define DOM_NodeIterator_HEADER_GUARD_
//#include "DOM_NodeFilter.hpp"
//#include "DOM_Node.hpp"
//class NodeIteratorImpl;
/**
* 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*/ DOM_NodeIterator
{
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor.
*/
// DOM_NodeIterator ();
/**
* Copy constructor.
*
* @param other The object to be copied.
*/
// DOM_NodeIterator(const DOM_NodeIterator &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_NodeIterator & operator = (const DOM_NodeIterator &other);
DOM_NodeIterator & assignment(const DOM_NodeIterator &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_NodeIterator to null.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_NodeIterator & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_NodeIterator.
*/
// ~DOM_NodeIterator();
//@}
/** @name Equality and Inequality operators. */
//@{
/**
* The equality operator.
*
* @param other The object reference with which <code>this</code> object is compared
* @returns True if both <code>DOM_NodeIterator</code>s refer to the same
* actual node, or are both null; return false otherwise.
*/
// bool operator == (const DOM_NodeIterator & other)const;
bool equal_to(const DOM_NodeIterator & other)const;
/**
* Compare with a pointer. Intended only to allow a convenient
* comparison with null.
*/
// bool operator == (const DOM_NullPtr *other) const;
/**
* The inequality operator. See operator ==.
*/
// bool operator != (const DOM_NodeIterator & other) const;
bool not_equal_to(const DOM_NodeIterator & other) const;
/**
* Compare with a pointer. Intended only to allow a convenient
* comparison with null.
*
*/
// bool operator != (const DOM_NullPtr * other) const;
//@}
/** @name Get functions. */
//@{
/**
* Return which node types are presented via the iterator.
* The available set of constants is defined in the DOM_NodeFilter interface.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
unsigned long getWhatToShow();
/**
* Return The filter used to screen nodes.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOM_NodeFilter* getFilter();
/**
* Return the expandEntityReferences flag.
* The value of this flag determines whether the children of entity reference
* nodes are visible to the DOM_NodeFilter. If false, they will be skipped over.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
bool getExpandEntityReferences();
/**
* Returns the next node in the set and advances the position of the iterator
* in the set. After a DOM_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.
*/
DOM_Node nextNode();
/**
* 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.
*/
DOM_Node previousNode();
//@}
/** @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>
*
*/
void detach();
//@}
// protected:
// DOM_NodeIterator (NodeIteratorImpl* impl);
// friend class DOM_Document;
// private:
// NodeIteratorImpl* fImpl;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_NodeList.hpp
Index: DOM_NodeList.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_NodeList.hpp,v $
* Revision 1.1 2001/03/07 16:04:01 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.9 2000/04/19 02:26:16 aruna1
* Full support for DOM_EntityReference, DOM_Entity and DOM_DocumentType introduced
*
* Revision 1.8 2000/03/02 19:53:56 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.7 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.6 2000/02/10 20:38:46 abagchi
* Added docs for equality operators
*
* Revision 1.5 2000/02/06 07:47:30 rahulj
* Year 2K copyright swat.
*
* Revision 1.4 2000/02/04 01:49:27 aruna1
* TreeWalker and NodeIterator changes
*
* Revision 1.3 2000/01/22 01:38:29 andyh
* Remove compiler warnings in DOM impl classes
*
* Revision 1.2 2000/01/05 01:16:08 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:09:02 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:20 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_NodeList_HEADER_GUARD_
//#define DOM_NodeList_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class NodeListImpl;
/**
* 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*/ DOM_NodeList {
//private:
// NodeListImpl *fImpl;
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_NodeList. The resulting object does not
* refer to an actual NodeList; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual NodeList.
*
*/
// DOM_NodeList();
/**
* Copy constructor.
*
* @param other The object to be copied.
*/
// DOM_NodeList(const DOM_NodeList &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_NodeList & operator = (const DOM_NodeList &other);
DOM_NodeList & assignment(const DOM_NodeList &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_NodeList & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_NodeList. The object being destroyed is the reference
* object, not the underlying NodeList node itself.
*
* <p>Like most other DOM types in this implementation, memory management
* of Node Lists is automatic. Instances of DOM_NodeList function
* as references to an underlying heap based implementation object,
* and should never be explicitly new-ed or deleted in application code, but
* should appear only as local variables or function parameters.
*/
// ~DOM_NodeList();
//@}
/** @name Comparison operators. */
//@{
/**
* Equality operator.
* Compares whether two node list
* variables refer to the same underlying node list. It does
* not compare the contents of the node lists themselves.
*
* @param other The value to be compared
* @return Returns true if node list refers to same underlying node list
*/
// bool operator == (const DOM_NodeList &other) const;
bool equal_to(const DOM_NodeList &other) const;
/**
* Use this comparison operator to test whether a Node List reference
* is null.
*
* @param nullPtr The value to be compared, which must be 0 or null.
* @return Returns true if node list reference is null
*/
// bool operator == (const DOM_NullPtr *nullPtr) const;
/**
* Inequality operator.
* Compares whether two node list
* variables refer to the same underlying node list. It does
* not compare the contents of the node lists themselves.
*
* @param other The value to be compared
* @return Returns true if node list refers to a different underlying node list
*/
// bool operator != (const DOM_NodeList &other) const;
bool not_equal_to(const DOM_NodeList &other) const;
/**
* Use this comparison operator to test whether a Node List reference
* is not null.
*
* @param nullPtr The value to be compared, which must be 0 or null.
* @return Returns true if node list reference is not null
*/
// bool operator != (const DOM_NullPtr *nullPtr) const;
//@}
/** @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.
*/
DOM_Node item(unsigned int index) const;
/**
* Returns the number of nodes in the list.
*
* The range of valid child node indices is 0 to <code>length-1</code> inclusive.
*/
unsigned int getLength() const;
//@}
//protected:
// DOM_NodeList(NodeListImpl *impl);
// friend class DOM_Document;
// friend class DOM_Element;
// friend class DOM_Node;
// friend class DOM_Entity;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Notation.hpp
Index: DOM_Notation.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_Notation.hpp,v $
* Revision 1.1 2001/03/07 16:04:01 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.6 2000/03/11 02:58:39 chchou
* Fix bug # 18, remove set method of readonly attributes
*
* Revision 1.5 2000/03/02 19:53:57 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.4 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.3 2000/02/06 07:47:31 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/01/05 01:16:08 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:09:03 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:21 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_Notation_HEADER_GUARD_
//#define DOM_Notation_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class NotationImpl;
/**
* 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*/ DOM_Notation: public DOM_Node {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_Notation. The resulting object does not
* refer to an actual Notation node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual Notation node.
* <p>
* New notation nodes are created by DOM_Document::createNotation().
*
*
*/
// DOM_Notation();
/**
* Copy constructor. Creates a new <code>DOM_Notation</code> that refers to the
* same underlying node as the original. See also DOM_Node::clone(),
* which will copy the actual notation node, rather than just creating a new
* reference to the original node.
*
* @param other The object to be copied.
*/
// DOM_Notation(const DOM_Notation &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_Notation & operator = (const DOM_Notation &other);
DOM_Notation & assignment(const DOM_Notation &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Notation & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_Notation. The object being destroyed is the reference
* object, not the underlying Notation node itself.
*
*/
// ~DOM_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
*/
DOMString getPublicId() const;
/**
* 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
*/
DOMString getSystemId() const;
//@}
//protected:
// DOM_Notation(NotationImpl *impl);
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_ProcessingInstruction.hpp
Index: DOM_ProcessingInstruction.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_ProcessingInstruction.hpp,v $
* Revision 1.1 2001/03/07 16:04:01 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 2000/03/02 19:53:57 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.4 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.3 2000/02/06 07:47:31 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/01/05 01:16:08 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:09:03 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:21 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_ProcessingInstruction_HEADER_GUARD_
//#define DOM_ProcessingInstruction_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//class ProcessingInstructionImpl;
/**
* 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*/ DOM_ProcessingInstruction: public DOM_Node {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_ProcessingInstruction. The resulting object
* does not refer to an actual PI node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual PI node.
* <p>
* New Processing Instruction nodes are created by DOM_Document::createProcessingInstruction().
*
*
*/
// DOM_ProcessingInstruction();
/**
* Copy constructor. Creates a new <code>DOM_ProcessingInstruction</code> that refers to the
* same underlying node as the original. See also DOM_Node::clone(),
* which will copy the actual PI node, rather than just creating a new
* reference to the original node.
*
* @param other The object to be copied.
*/
// DOM_ProcessingInstruction(const DOM_ProcessingInstruction &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_ProcessingInstruction & operator = (const DOM_ProcessingInstruction &other);
DOM_ProcessingInstruction & assignment(const DOM_ProcessingInstruction &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_ProcessingInstruction & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_processingInstruction. The object being destroyed is the reference
* object, not the underlying PI node itself.
*
*/
// ~DOM_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.
*/
DOMString getTarget() const;
/**
* 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>?></code>.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
*/
DOMString getData() const;
//@}
/** @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>?></code>.
* @param data The string containing the processing instruction
*/
void setData(const DOMString &data);
//@}
//protected:
// DOM_ProcessingInstruction(ProcessingInstructionImpl *impl);
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Range.hpp
Index: DOM_Range.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/>.
*/
/*
* $Id: DOM_Range.hpp,v 1.1 2001/03/07 16:04:02 jasons Exp $
*/
//#ifndef DOM_Range_HEADER_GUARD_
//#define DOM_Range_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_Node.hpp>
//#include <dom/DOMString.hpp>
//#include <dom/DOM_DocumentFragment.hpp>
//class RangeImpl;
//class RangeImpl;
class /*CDOM_EXPORT*/ DOM_Range {
public:
enum CompareHow {
START_TO_START = 0,
START_TO_END = 1,
END_TO_END = 2,
END_TO_START = 3
};
//c'tor & d'tor
// DOM_Range();
// ~DOM_Range();
// DOM_Range & operator = (const DOM_Range &other);
DOM_Range & assignment(const DOM_Range &other);
// DOM_Range & operator = (const DOM_NullPtr *other);
// bool operator != (const DOM_Range & other) const;
bool not_equal_to(const DOM_Range & other) const;
// bool operator == (const DOM_Range & other) const;
bool equal_to(const DOM_Range & other) const;
// bool operator != (const DOM_NullPtr * other) const;
// bool operator == (const DOM_NullPtr * other) const;
//getter functions
DOM_Node getStartContainer() const;
unsigned int getStartOffset() const;
DOM_Node getEndContainer() const;
unsigned int getEndOffset() const;
bool getCollapsed() const;
const DOM_Node getCommonAncestorContainer() const;
//setter functions
void setStart(const DOM_Node &parent, unsigned int offset);
void setEnd(const DOM_Node &parent, unsigned int offset);
void setStartBefore(const DOM_Node &refNode);
void setStartAfter(const DOM_Node &refNode);
void setEndBefore(const DOM_Node &refNode);
void setEndAfter(const DOM_Node &refNode);
//misc functions
void collapse(bool toStart);
void selectNode(const DOM_Node &node);
void selectNodeContents(const DOM_Node &node);
//Functions related to comparing range Boundrary-Points
short compareBoundaryPoints(CompareHow how, const DOM_Range& range) const;
void deleteContents();
DOM_DocumentFragment extractContents();
DOM_DocumentFragment cloneContents() const;
void insertNode(DOM_Node& node);
//Misc functions
void surroundContents(DOM_Node &node);
DOM_Range cloneRange() const;
DOMString toString() const;
void detach();
//protected:
// DOM_Range(RangeImpl *);
// RangeImpl *fImpl;
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_Text.hpp
Index: DOM_Text.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_Text.hpp,v $
* Revision 1.1 2001/03/07 16:04:02 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.8 2000/07/28 01:33:31 aruna1
* DOM Level 2 Range feature introduced
*
* Revision 1.7 2000/03/24 01:30:50 chchou
* Fix bug #8 to support ignorable whitespace text nodes
*
* Revision 1.6 2000/03/02 19:53:57 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.5 2000/02/24 20:11:28 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/06 07:47:31 rahulj
* Year 2K copyright swat.
*
* Revision 1.3 2000/02/04 01:49:27 aruna1
* TreeWalker and NodeIterator changes
*
* Revision 1.2 2000/01/05 01:16:08 andyh
* DOM Level 2 core, namespace support added.
*
* Revision 1.1.1.1 1999/11/09 01:09:04 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:22 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_Text_HEADER_GUARD_
//#define DOM_Text_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include <dom/DOM_CharacterData.hpp>
//class TextImpl;
/**
* 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*/ DOM_Text: public DOM_CharacterData {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor for DOM_Text. The resulting object does not
* refer to an actual Text node; it will compare == to 0, and is similar
* to a null object reference variable in Java. It may subsequently be
* assigned to refer to an actual comment node.
*
*/
// DOM_Text();
/**
* Copy constructor. Creates a new <code>DOM_Text</code> that refers to the
* same underlying node as the original. See also DOM_Node::clone(),
* which will copy the actual Text node, rather than just creating a new
* reference to the original node.
*
* @param other The object to be copied.
*/
// DOM_Text(const DOM_Text &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_Text & operator = (const DOM_Text &other);
DOM_Text & assignment(const DOM_Text &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_Text & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_Text. The object being destroyed is the reference
* object, not the underlying Comment node itself.
*
*/
// ~DOM_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.
*/
DOM_Text splitText(unsigned int offset);
//@}
/** @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.
*/
bool isIgnorableWhitespace();
//@}
//protected:
// DOM_Text(TextImpl *);
// friend class DOM_Document;
// friend class RangeImpl;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_TreeWalker.hpp
Index: DOM_TreeWalker.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_TreeWalker.hpp,v $
* Revision 1.1 2001/03/07 16:04:02 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.9 2000/08/08 01:00:36 aruna1
* detach functionality removed from TreeWalker
*
* Revision 1.8 2000/02/24 20:11:29 abagchi
* Swat for removing Log from API docs
*
* Revision 1.7 2000/02/17 17:47:25 andyh
* Update Doc++ API comments
* NameSpace update to track W3C
* Changes were made by Chih Hsiang Chou
*
* Revision 1.6 2000/02/15 23:17:37 andyh
* Update Doc++ API comments
* NameSpace bugfix and update to track W3C
* Chih Hsiang Chou
*
* Revision 1.5 2000/02/11 03:01:04 abagchi
* Made protected method public to compile, must be fixed later
*
* Revision 1.4 2000/02/11 01:05:11 abagchi
* Added API docs
*
* Revision 1.3 2000/02/06 07:47:31 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/02/04 01:49:27 aruna1
* TreeWalker and NodeIterator changes
*
* Revision 1.1.1.1 1999/11/09 01:09:05 twl
* Initial checkin
*
* Revision 1.3 1999/11/08 20:44:22 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef DOM_TreeWalker_HEADER_GUARD_
//#define DOM_TreeWalker_HEADER_GUARD_
//#include "DOM_Node.hpp"
//#include "DOM_NodeFilter.hpp"
//class TreeWalkerImpl;
/**
* <code>DOM_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>DOM_TreeWalker</code>. Any
* function which performs navigation using a <code>DOM_TreeWalker</code> will
* automatically support any view defined by a <code>DOM_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 DOM_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*/ DOM_TreeWalker {
public:
/** @name Constructors and assignment operator */
//@{
/**
* Default constructor.
*/
// DOM_TreeWalker();
/**
* Copy constructor.
*
* @param other The object to be copied.
*/
// DOM_TreeWalker(const DOM_TreeWalker &other);
/**
* Assignment operator.
*
* @param other The object to be copied.
*/
// DOM_TreeWalker & operator = (const DOM_TreeWalker &other);
DOM_TreeWalker & assignment(const DOM_TreeWalker &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_NodeIterator to null.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_TreeWalker & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor. */
//@{
/**
* Destructor for DOM_TreeWalker.
*/
// ~DOM_TreeWalker();
//@}
/** @name Equality and Inequality operators. */
//@{
/**
* The equality operator.
*
* @param other The object reference with which <code>this</code> object is compared
* @returns True if both <code>DOM_TreeWalker</code>s refer to the same
* actual node, or are both null; return false otherwise.
*/
// bool operator == (const DOM_TreeWalker & other)const;
bool equal_to(const DOM_TreeWalker & other)const;
/**
* Compare with a pointer. Intended only to allow a convenient
* comparison with null.
*/
// bool operator == (const DOM_NullPtr *other) const;
/**
* The inequality operator. See operator ==.
*/
// bool operator != (const DOM_TreeWalker & other) const;
bool not_equal_to(const DOM_TreeWalker & other) const;
/**
* Compare with a pointer. Intended only to allow a convenient
* comparison with null.
*
*/
// bool operator != (const DOM_NullPtr * other) const;
//@}
/** @name Get functions. */
//@{
/**
* Return which node types are presented via the DOM_TreeWalker.
* These constants are defined in the DOM_NodeFilter interface.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
unsigned long getWhatToShow();
/**
* Return The filter used to screen nodes.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOM_NodeFilter* getFilter();
/**
* Return the expandEntityReferences flag.
* The value of this flag determines whether the children of entity reference
* nodes are visible to the DOM_TreeWalker. If false, they will be skipped over.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
// bool getExpandEntityReferences();
/**
* Return the node at which the DOM_TreeWalker is currently positioned.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOM_Node getCurrentNode();
/**
* Moves to and returns the closest visible ancestor node of the current node.
* If the search for parentNode attempts to step upward from the DOM_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>
*
*/
DOM_Node parentNode();
/**
* Moves the <code>DOM_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>
*
*/
DOM_Node firstChild();
/**
* Moves the <code>DOM_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>
*
*/
DOM_Node lastChild();
/**
* Moves the <code>DOM_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>
*
*/
DOM_Node previousSibling();
/**
* Moves the <code>DOM_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>
*
*/
DOM_Node nextSibling();
/**
* Moves the <code>DOM_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 DOM_TreeWalker's
* root node, returns <code>null</code>, and retains the current node.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOM_Node previousNode();
/**
* Moves the <code>DOM_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 DOM_TreeWalker's
* root node, returns <code>null</code>, and retains the current node.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
DOM_Node nextNode();
//@}
/** @name Set functions. */
//@{
/**
* Set the node at which the DOM_TreeWalker is currently positioned.
*
* <p><b>"Experimental - subject to change"</b></p>
*
*/
void setCurrentNode(DOM_Node currentNode);
//@}
// protected:
// DOM_TreeWalker(TreeWalkerImpl* impl);
// friend class DOM_Document;
// private:
// TreeWalkerImpl* fImpl;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/dom/DOM_XMLDecl.hpp
Index: DOM_XMLDecl.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/>.
*/
/*
* $Id: DOM_XMLDecl.hpp,v 1.1 2001/03/07 16:04:02 jasons Exp $
*
*/
//#ifndef DOM_XMLDecl_HEADER_GUARD_
//#define DOM_XMLDecl_HEADER_GUARD_
//#include <util/XercesDefs.hpp>
//#include "dom/DOM_Node.hpp"
//class XMLDeclImpl;
/**
* Class to refer to XML Declaration nodes in the DOM.
*
*/
class /*CDOM_EXPORT*/ DOM_XMLDecl: public DOM_Node {
public:
/** @name Constructors and assignment operators */
//@{
/**
* The default constructor for DOM_XMLDecl creates a null
* DOM_XMLDecl object that refers to a declaration node with
* version= 1.0, encoding=utf-8 and standalone=no
*
*/
// DOM_XMLDecl();
/**
* Copy constructor. Creates a new <code>DOM_XMLDecl</code> that refers to the
* same underlying actual xmlDecl node as the original.
*
* @param other The object to be copied
*/
// DOM_XMLDecl(const DOM_XMLDecl &other);
/**
* Assignment operator
*
* @param other The object to be copied
*/
// DOM_XMLDecl & operator = (const DOM_XMLDecl &other);
DOM_XMLDecl & assignment(const DOM_XMLDecl &other);
/**
* Assignment operator. This overloaded variant is provided for
* the sole purpose of setting a DOM_Node reference variable to
* zero. Nulling out a reference variable in this way will decrement
* the reference count on the underlying Node object that the variable
* formerly referenced. This effect is normally obtained when reference
* variable goes out of scope, but zeroing them can be useful for
* global instances, or for local instances that will remain in scope
* for an extended time, when the storage belonging to the underlying
* node needs to be reclaimed.
*
* @param val. Only a value of 0, or null, is allowed.
*/
// DOM_XMLDecl & operator = (const DOM_NullPtr *val);
//@}
/** @name Destructor */
//@{
/**
* Destructor. The object being destroyed is the reference
* object, not the underlying Document itself.
*
* <p>The reference counting memory management will
* delete the underlying document itself if this
* DOM_XMLDecl is the last remaining to refer to the Document,
* and if there are no remaining references to any of the nodes
* within the document tree. If other live references do remain,
* the underlying document itself remains also.
*
*/
// ~DOM_XMLDecl();
//@}
//@{
/**
* To get the version string of the xmlDeclaration statement
*/
DOMString getVersion() const;
/**
* To get the encoding string of the xmlDeclaration statement
*/
DOMString getEncoding() const;
/**
* To get the standalone string of the xmlDeclaration statement
*/
DOMString getStandalone() const;
//@}
//protected:
// DOM_XMLDecl( XMLDeclImpl *impl);
// friend class DOM_Document;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/framework/LocalFileInputSource.hpp
Index: LocalFileInputSource.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: LocalFileInputSource.hpp,v $
* Revision 1.1 2001/03/07 16:04:04 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 2000/02/24 20:00:22 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/15 23:59:06 roddey
* More updated documentation of Framework classes.
*
* Revision 1.3 2000/02/15 01:21:30 roddey
* Some initial documentation improvements. More to come...
*
* Revision 1.2 2000/02/06 07:47:46 rahulj
* Year 2K copyright swat.
*
* Revision 1.1 2000/01/12 18:58:06 roddey
* Putting this back with the correct lower case extension.
*
* Revision 1.1 2000/01/12 00:13:26 roddey
* These were moved from internal/ to framework/, which was something that should have
* happened long ago. They are really framework type of classes.
*
* Revision 1.1.1.1 1999/11/09 01:08:10 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:43 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#if !defined(LOCALFILEINPUTSOURCE_HPP)
//#define LOCALFILEINPUTSOURCE_HPP
//#include <sax/InputSource.hpp>
//class BinInputStream;
/**
* This class is a derivative of the standard InputSource class. It provides
* for the parser access to data which is referenced via a local file path,
* as apposed to remote file or URL. This is the most efficacious mechanism
* by which local files can be parsed, since the parse knows that it refers
* to a local file and will make no other attempts to interpret the passed
* path.
*
* The path provided can either be a fully qualified path or a relative path.
* If relative, it will be completed either relative to a passed base path
* or relative to the current working directory of the process.
*
* As with all InputSource derivatives. The primary objective of an input
* source is to create an input stream via which the parser can spool in
* data from the referenced source.
*/
class /*XMLPARSER_EXPORT*/ LocalFileInputSource : public InputSource
{
public :
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Constructors */
//@{
/**
* A local file input source requires a path to the file to load. This
* can be provided either as a fully qualified path, a path relative to
* the current working directly, or a path relative to a provided base
* path.
*
* The completed path will become the system id of this input source.
* The constructors don't take any public id for local files, but you
* still set them via the parent class' setPublicId() method of course.
*
* This constructor takes an explicit base path and a possibly relative
* path. If the relative path is seen to be fully qualified, it is used
* as is. Otherwise, it is made relative to the passed base path.
*
* @param basePath The base path from which the passed relative path
* will be based, if the relative part is indeed
* relative.
*
* @param relativePath The relative part of the path. It can actually
* be fully qualified, in which case it is taken
* as is.
*/
// LocalFileInputSource
// (
// const XMLCh* const basePath
// , const XMLCh* const relativePath
// );
/**
* This constructor takes a single parameter which is the fully qualified
* or relative path. If it is fully qualified, it is taken as is. If it is
* relative, then it is completed relative to the current working directory
* (or the equivalent on the local host machine.)
*
* The completed path will become the system id of this input source.
* The constructors don't take any public id for local files, but you
* still set them via the parent class' setPublicId() method of course.
*
* @param filePath The relative or fully qualified path.
*/
LocalFileInputSource
(
const XMLCh* /*const*/ filePath
);
//@}
/** @name Destructor */
//@{
// ~LocalFileInputSource();
//@}
// -----------------------------------------------------------------------
// Virtual input source interface
// -----------------------------------------------------------------------
/** @name Virtual methods */
//{@
/**
* This method will return a binary input stream derivative that will
* parse from the local file indicatedby the system id.
*
* @return A dynamically allocated binary input stream derivative that
* can parse from the file indicated by the system id.
*/
// virtual BinInputStream* makeStream() const;
//@}
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/framework/MemBufInputSource.hpp
Index: MemBufInputSource.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: MemBufInputSource.hpp,v $
* Revision 1.1 2001/03/07 16:04:04 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 2000/02/24 20:00:22 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/15 23:59:06 roddey
* More updated documentation of Framework classes.
*
* Revision 1.3 2000/02/15 01:21:30 roddey
* Some initial documentation improvements. More to come...
*
* Revision 1.2 2000/02/06 07:47:46 rahulj
* Year 2K copyright swat.
*
* Revision 1.1 2000/01/12 00:13:26 roddey
* These were moved from internal/ to framework/, which was something that should have
* happened long ago. They are really framework type of classes.
*
* Revision 1.1.1.1 1999/11/09 01:08:10 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:43 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#if !defined(MEMBUFINPUTSOURCE_HPP)
//#define MEMBUFINPUTSOURCE_HPP
//#include <sax/InputSource.hpp>
//class BinInputStream;
/**
* This class is a derivative of the standard InputSource class. It provides
* for the parser access to data stored in a memory buffer. The type of
* buffer and its host specific attributes are of little concern here. The
* only real requirement is that the memory be readable by the current
* process.
*
* Note that the memory buffer size is expressed in <b>bytes</b>, not in
* characters. If you pass it text data, you must account for the bytes
* per character when indicating the buffer size.
*
* As with all InputSource derivatives. The primary objective of an input
* source is to create an input stream via which the parser can spool in
* data from the referenced source. In this case, there are two options
* available.
*
* The passed buffer can be adopted or merely referenced. If it is adopted,
* then it must be dynamically allocated and will be destroyed when the
* input source is destroyed (no reference counting!.) If not adopted, the
* caller must insure that it remains valid until the input source object
* is destroyed.
*
* The other option indicates whether each stream created for this input
* source should get its own copy of the data, or whether it should just
* stream the data directly from this object's copy of the data. The same
* rules apply here, in that the buffer must either be copied by the
* stream or it must remain valid until the stream is destroyed.
*/
class /*XMLPARSER_EXPORT*/ MemBufInputSource : public InputSource
{
public :
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Constructors */
//@{
/**
* A memory buffer input source is constructed from a buffer of byte
* data, and the count of bytes in that buffer. The parser will parse
* from this memory buffer until it has eaten the indicated number of
* bytes.
*
* Note that the system id provided serves two purposes. Firstly it is
* going to be displayed in error messages as the source of the error.
* And secondly, any entities which are refered to from this entity
* via relative paths/URLs will be relative to this fake system id.
*
* @param srcDocBytes The actual data buffer to be parsed from.
* @param byteCount The count of bytes (not characters, bytes!)
* in the buffer.
* @Param bufId A fake system id for the buffer.
* @Param adoptBuffer Indicates whether this object should adopt
* the buffer (i.e. make a copy of it) or just
* use it in place.
*/
// MemBufInputSource
// (
// const XMLByte* const srcDocBytes
// , const unsigned int byteCount
// , const XMLCh* const bufId
// , const bool adoptBuffer = false
// );
/**
* This constructor is identical to the previous one, except that it takes
* the fake system id in local code page form and transcodes it internally.
*/
MemBufInputSource
(
const XMLByte* /*const*/ srcDocBytes
, const unsigned int byteCount
, const char* /*const*/ bufId
, const bool adoptBuffer = false
);
//@}
/** @name Destructor */
//@{
/**
* If the buffer was adopted, the copy made during construction is deleted
* at this point.
*/
// ~MemBufInputSource();
//@}
// -----------------------------------------------------------------------
// Virtual input source interface
// -----------------------------------------------------------------------
/** @name Virtual methods */
//{@
/**
* This method will return a binary input stream derivative that will
* parse from the memory buffer. If setCopyBufToStream() has been set,
* then the stream will make its own copy. Otherwise, it will use the
* buffer as is (in which case it must remain valid until the stream
* is no longer in use, i.e. the parse completes.)
*
* @return A dynamically allocated binary input stream derivative that
* can parse from the memory buffer.
*/
// BinInputStream* makeStream() const;
//@}
// -----------------------------------------------------------------------
// Setter methods
// -----------------------------------------------------------------------
/** @name Setter methods */
//{@
/**
* By default, for safety's sake, each newly created stream from this
* input source will make its own copy of the buffer to stream from. This
* avoids having to deal with aliasing of the buffer for simple work. But,
* for higher performance applications or for large buffers, this is
* obviously not optimal.
*
* In such cases, you can call this method to turn off that default
* action. Once turned off, the streams will just get a pointer to the
* buffer and parse directly from that. In this case, you must insure that
* the buffer remains valid for as long as any parse events are still
* using it.
*
* @param newState The new boolean flag state to set.
*/
void setCopyBufToStream(const bool newState);
//@}
//private :
// -----------------------------------------------------------------------
// Private data members
//
// fAdopted
// Indicates whether the buffer is adopted or not. If so, then it
// is destroyed when the input source is destroyed.
//
// fByteCount
// The size of the source document.
//
// fCopyBufToStream
// This defaults to true (the safe option), which causes it to
// give a copy of the buffer to any streams it creates. If you set
// it to false, it will allow the streams to just reference the
// buffer (in which case this input source must stay alive as long
// as the buffer is in use by the stream.)
//
// fSrcBytes
// The source memory buffer that is being spooled from. Whether it
// belongs to the this input source or not is controlled by the
// fAdopted flag.
// -----------------------------------------------------------------------
// bool fAdopted;
// unsigned int fByteCount;
// bool fCopyBufToStream;
// const XMLByte* fSrcBytes;
};
//inline void MemBufInputSource::setCopyBufToStream(const bool newState)
//{
// fCopyBufToStream = newState;
//}
//#endif
1.1 xml-xerces/perl/Xerces_headers/framework/StdInInputSource.hpp
Index: StdInInputSource.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: StdInInputSource.hpp,v $
* Revision 1.1 2001/03/07 16:04:04 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 2000/02/24 20:00:22 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/15 23:59:06 roddey
* More updated documentation of Framework classes.
*
* Revision 1.3 2000/02/15 01:21:30 roddey
* Some initial documentation improvements. More to come...
*
* Revision 1.2 2000/02/06 07:47:46 rahulj
* Year 2K copyright swat.
*
* Revision 1.1 2000/01/12 00:13:26 roddey
* These were moved from internal/ to framework/, which was something that should have
* happened long ago. They are really framework type of classes.
*
* Revision 1.1.1.1 1999/11/09 01:08:17 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:44 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#if !defined(STDININPUTSOURCE_HPP)
//#define STDININPUTSOURCE_HPP
//#include <sax/InputSource.hpp>
//class BinInputStream;
/**
* This class is a derivative of the standard InputSource class. It provides
* for the parser access to data via the standard input. This input source
* is not commonly used, but can be useful when implementing such things
* as pipe based tools which exchange XML data.
*
* As with all InputSource derivatives. The primary objective of an input
* source is to create an input stream via which the parser can spool in
* data from the referenced source.
*/
class /*XMLPARSER_EXPORT*/ StdInInputSource : public InputSource
{
public :
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Constructor */
//@{
/**
* Since the standard input is a canned source, the constructor is very
* simple. It just uses local platform services to open up the standard
* input source as file, a new handleof which it gives to each new stream
* it creates.
*/
StdInInputSource();
//@}
/** @name Destructor */
//@{
// ~StdInInputSource();
//@}
// -----------------------------------------------------------------------
// Virtual input source interface
// -----------------------------------------------------------------------
/** @name Virtual methods */
//{@
/**
* This method will return a binary input stream derivative that will
* parse from the standard input of the local host.
*
* @return A dynamically allocated binary input stream derivative that
* can parse from the standardinput.
*/
// BinInputStream* makeStream() const;
//@}
};
//inline StdInInputSource::StdInInputSource() :
// InputSource("stdin")
//{
//}
//inline StdInInputSource::~StdInInputSource()
//{
//}
//#endif
1.1 xml-xerces/perl/Xerces_headers/framework/URLInputSource.hpp
Index: URLInputSource.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: URLInputSource.hpp,v $
* Revision 1.1 2001/03/07 16:04:04 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.7 2000/02/24 20:00:22 abagchi
* Swat for removing Log from API docs
*
* Revision 1.6 2000/02/15 23:59:07 roddey
* More updated documentation of Framework classes.
*
* Revision 1.5 2000/02/15 01:21:30 roddey
* Some initial documentation improvements. More to come...
*
* Revision 1.4 2000/02/06 07:47:46 rahulj
* Year 2K copyright swat.
*
* Revision 1.3 2000/01/26 18:56:02 roddey
* Needed to include XMLURL.hpp so that it compiles standalone.
*
* Revision 1.2 2000/01/15 01:26:16 rahulj
* Added support for HTTP to the parser using libWWW 5.2.8.
* Renamed URL.[ch]pp to XMLURL.[ch]pp and like wise for the class name.
* Only tested under NT 4.0 SP 5.
* Removed URL.hpp from files where it was not used.
*
* Revision 1.1 2000/01/12 00:13:26 roddey
* These were moved from internal/ to framework/, which was something that should have
* happened long ago. They are really framework type of classes.
*
* Revision 1.1.1.1 1999/11/09 01:08:18 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:44:44 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#if !defined(URLINPUTSOURCE_HPP)
//#define URLINPUTSOURCE_HPP
//#include <util/XMLURL.hpp>
//#include <sax/InputSource.hpp>
//class BinInputStream;
/**
* This class is a derivative of the standard InputSource class. It provides
* for the parser access to data which is referenced via a URL, as apposed to
* a local file name. The URL can be provided via an XMLURL class, as a fully
* qualified system id, or a base system id and a system id which may be
* fully qualified or may be relative to the base.
*
* As with all InputSource derivatives. The primary objective of an input
* source is to create an input stream via which the parser can spool in
* data from the referenced source.
*
* Note that the parse system does not necessarily support URL based XML
* entities out of the box. Support for socket based access is optional and
* controlled by the per-platform support.
*/
class /*XMLPARSER_EXPORT*/ URLInputSource : public InputSource
{
public :
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Constructors */
//@{
/**
* This constructor accepts an already built URL. It is assumed that
* it is correct and it will be used as is. In this case, no public id
* accepted, but it can still be set via the parent class' setPublicId()
* method.
*
* @param urlId The URL which holds the system id of the entity
* to parse.
*/
URLInputSource(const XMLURL& urlId);
/**
* This constructor takes a base system id URL and a possibly relative
* system id. The relative part is parsed and, if it is indeed relative,
* it will be made relative to the passed base id. Otherwise, it will be
* taken as is.
*
* @param baseId The base system id URL which provides the base
* for any relative id part.
*
* @param systemId The possibly relative system id URL. If its relative
* its based on baseId, else its taken as is.
*/
// URLInputSource
// (
// const XMLCh* const baseId
// , const XMLCh* const systemId
// );
/**
* This constructor is indentical to the previous one, except that it also
* allows you to set a public id if you want to.
*
* @param baseId The base system id URL which provides the base
* for any relative id part.
*
* @param systemId The possibly relative system id URL. If its relative
* its based on baseId, else its taken as is.
*
* @param publicId The optional public id to set. This is just passed
* on to the parent class for storage.
*/
// URLInputSource
// (
// const XMLCh* const baseId
// , const XMLCh* const systemId
// , const XMLCh* const publicId
// );
/**
* This constructor is identical to the second constructor above, except that
* it accepts the relative system id part as a local code page string and
* just transcodes it internally, as a convenience.
*
* @param baseId The base system id URL which provides the base
* for any relative id part.
*
* @param systemId The possibly relative system id URL. If its relative
* its based on baseId, else its taken as is.
*/
// URLInputSource
// (
// const XMLCh* const baseId
// , const char* const systemId
// );
/**
* This constructor is identical to the third constructor above, except that
* it accepts the relative and public ids as local code page strings and just
* transcodes them internally, as a convenience.
*
* @param baseId The base system id URL which provides the base
* for any relative id part.
*
* @param systemId The possibly relative system id URL. If its relative
* its based on baseId, else its taken as is.
*
* @param publicId The optional public id to set. This is just passed
* on to the parent class for storage.
* on to the parent class for storage.
*/
// URLInputSource
// (
// const XMLCh* const baseId
// , const char* const systemId
// , const char* const publicId
// );
//@}
/** @name Destructor */
//@{
// ~URLInputSource();
//@}
// -----------------------------------------------------------------------
// Virtual input source interface
// -----------------------------------------------------------------------
/** @name Virtual methods */
//{@
/**
* This method will return a binary input stream derivative that will
* parse from the source refered to by the URL system id.
*/
// BinInputStream* makeStream() const;
//@}
// -----------------------------------------------------------------------
// Getter methods
// -----------------------------------------------------------------------
/** @name Getter methods */
//{@
/**
* This method will return a const reference to the URL member which
* contains the system id in pre-parsed URL form. If you just want the
* string format, call getSystemId() on the parent class.
*
* @return A const reference to a URL object that contains the current
* system id set for this input source.
*/
const XMLURL& urlSrc() const;
//@}
//private :
// -----------------------------------------------------------------------
// Private data members
//
// fURL
// This is the URL created from the passed ids.
// -----------------------------------------------------------------------
// XMLURL fURL;
};
//inline const XMLURL& URLInputSource::urlSrc() const
//{
// return fURL;
//}
//#endif
1.1 xml-xerces/perl/Xerces_headers/parsers/DOMParser.hpp
Index: DOMParser.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/>.
*/
/*
* $Id: DOMParser.hpp,v 1.1 2001/03/07 16:04:05 jasons Exp $
*
*/
//#if !defined(DOMPARSER_HPP)
//#define DOMPARSER_HPP
//#include <dom/DOM_Document.hpp>
//#include <framework/XMLDocumentHandler.hpp>
//#include <framework/XMLErrorReporter.hpp>
//#include <framework/XMLEntityHandler.hpp>
//#include <util/ValueStackOf.hpp>
//#include <validators/DTD/DocTypeHandler.hpp>
//#include <dom/DOM_DocumentType.hpp>
//#include <validators/DTD/DTDElementDecl.hpp>
//#include <validators/DTD/DTDValidator.hpp>
//class EntityResolver;
//class ErrorHandler;
//class XMLPScanToken;
//class XMLScanner;
//class XMLValidator;
/**
* 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*/ DOMParser //:
// 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 DOMParser, 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.
*
* @param valToAdopt Pointer to the validator instance to use. The
* parser is responsible for freeing the memory.
*/
DOMParser(XMLValidator* /*const*/ valToAdopt = 0);
/**
* Destructor
*/
// ~DOMParser();
//@}
/** Reset the parser
*
* This method resets the state of the DOM driver and makes
* it ready for a fresh parse run.
*/
void reset();
// -----------------------------------------------------------------------
// Getter methods
// -----------------------------------------------------------------------
/** @name Getter methods */
//@{
/** Get the DOM document
*
* This method returns the DOM_Document object representing the
* root of the document tree. This object provides the primary
* access to the document's data.
*
* @return The DOM_Document object which represents the entire
* XML document.
*/
DOM_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.
*/
ValSchemes getValidationScheme() 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;
/** 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;
/** Get the 'to create MXLDecl node' flag.
*
* This method returns the state of the parser's to create XMLDecl
* DOM Node flag.
*
* @return 'true' if the toCreateXMLDeclTypeNode flag is set on
* the parser, 'false' otherwise.
*
*/
bool getToCreateXMLDeclTypeNode() 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);
/** 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
* DOM_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.
*
* @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.
*
* <p>The parser's default state is: Val_Auto.</p>
*
* @param newState The new validation scheme to use.
*
* @see #getValidationScheme
*/
void setValidationScheme(const ValSchemes newScheme);
/**
* This method allows users to set the toCreateXMLDeclTypeNode flag
* by this parser. By setting it to 'true' user can have XMLDecl type
* nodes attached to the DOM tree.
*
* <p>The parser's default state is: false </p>
*
* @param newState The new to create XMLDecl type node flag
*
*/
void setToCreateXMLDeclTypeNode(const bool create);
//@}
// -----------------------------------------------------------------------
// 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 reuseValidator The flag indicating whether the existing
* validator should be reused or not for this
* parsing run.
* @see Parser#parse(InputSource)
*/
void parse(const InputSource& source, const bool reuseValidator = 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 reuseValidator The flag indicating whether the existing
* validator should be reused or not for this
* parsing run.
*
* @see Parser#parse(XMLCh*)
*/
// void parse(const XMLCh* const systemId, const bool reuseValidator = 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 reuseValidator The flag indicating whether the existing
* validator should be reused or not for this
* parsing run.
*/
// void parse(const char* const systemId, const bool reuseValidator = 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 reuseValidator The flag indicating whether the existing
* validator should be reused or not for this parsing
* process.
* @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 reuseValidator = 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 reuseValidator The flag indicating whether the existing
* validator should be reused or not for this parsing
* run.
*
* @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 reuseValidator = 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 reuseValidator The flag indicating whether the existing
* validator should be reused or not for this parsing
* process.
*
* @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 reuseValidator = 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 DOM
* 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 DOM
* 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 DOM 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 DOM
* 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 DOM 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 DOM implementation stores this data in the appropriate
* DOM 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
* DOMParse 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 DOM_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 DOM 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
* DOM 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 DOM
* 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);
//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 DOM node
*
* This provides derived classes with access to the current node, i.e.
* the node to which new nodes are being added.
*/
// DOM_Node getCurrentNode();
//@}
// -----------------------------------------------------------------------
// Protected setter methods
// -----------------------------------------------------------------------
/** @name Protected setter methods */
//@{
/** Set the current DOM node
*
* This method sets the current node maintained inside the parser to
* the one specified.
*
* @param toSet The DOM node which will be the current node.
*/
// void setCurrentNode(DOM_Node toSet);
/** Set the document node
*
* This method sets the DOM Document node to the one specified.
*
* @param toSet The new DOM Document node for this XML document.
*/
// void setDocument(DOM_Document toSet);
//@}
//private :
//local private function to populate the doctype data
// virtual void populateDocumentType();
// -----------------------------------------------------------------------
// 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 DOM 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.
//
// fValidator
// The validator that is installed. If none is provided, we will
// create and install a DTD validator. We install this on the
// scanner we create, which it will use to do validation. We set
// ourself on it as the error reporter for validity errors.
//
// 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
//
// fOldDocTypeHandler
// Used to chain the old documentType node if the user has set it
// from outside
//
// fToCreateXMLDecTypeNode
// A flag to create a DOM_XMLDecl node in the ODM tree if it exists
// This is an extension to xerces implementation
//
// -----------------------------------------------------------------------
// DOM_Node fCurrentParent;
// DOM_Node fCurrentNode;
// DOM_Document fDocument;
// EntityResolver* fEntityResolver;
// ErrorHandler* fErrorHandler;
// bool fCreateEntityReferenceNodes;
// bool fIncludeIgnorableWhitespace;
// ValueStackOf<DOM_Node>* fNodeStack;
// bool fParseInProgress;
// XMLScanner* fScanner;
// XMLValidator* fValidator;
// bool fWithinElement;
// DocumentTypeImpl* fDocumentType;
// DocTypeHandler* fOldDocTypeHandler;
// bool fToCreateXMLDeclTypeNode;
};
// ---------------------------------------------------------------------------
// DOMParser: Handlers for the XMLEntityHandler interface
// ---------------------------------------------------------------------------
//inline void DOMParser::endInputSource(const InputSource&)
//{
// The DOM entity resolver doesn't handle this
//}
//inline bool DOMParser::expandSystemId(const XMLCh* const, XMLBuffer&)
//{
// The DOM entity resolver doesn't handle this
// return false;
//}
//inline void DOMParser::resetEntities()
//{
// Nothing to do on this one
//}
//inline void DOMParser::startInputSource(const InputSource&)
//{
// The DOM entity resolver doesn't handle this
//}
// ---------------------------------------------------------------------------
// DOMParser: Handlers for the XMLDocumentHandler interface
// ---------------------------------------------------------------------------
//inline void DOMParser::endDocument()
//{
// Not used in DOM at this time
//}
// ---------------------------------------------------------------------------
// DOMParser: Getter methods
// ---------------------------------------------------------------------------
//inline DOM_Document DOMParser::getDocument()
//{
// return fDocument;
//}
//inline ErrorHandler* DOMParser::getErrorHandler()
//{
// return fErrorHandler;
//}
//inline const ErrorHandler* DOMParser::getErrorHandler() const
//{
// return fErrorHandler;
//}
//inline EntityResolver* DOMParser::getEntityResolver()
//{
// return fEntityResolver;
//}
//inline const EntityResolver* DOMParser::getEntityResolver() const
//{
// return fEntityResolver;
//}
//inline bool DOMParser::getExpandEntityReferences() const
//{
// return fCreateEntityReferenceNodes;
//}
//inline bool DOMParser::getCreateEntityReferenceNodes() const
//{
// return fCreateEntityReferenceNodes;
//}
//inline bool DOMParser::getIncludeIgnorableWhitespace() const
//{
// return fIncludeIgnorableWhitespace;
//}
//inline const XMLScanner& DOMParser::getScanner() const
//{
// return *fScanner;
//}
//inline bool DOMParser::getToCreateXMLDeclTypeNode() const
//{
// return fToCreateXMLDeclTypeNode;
//}
// ---------------------------------------------------------------------------
// DOMParser: Setter methods
// ---------------------------------------------------------------------------
//inline void DOMParser::setExpandEntityReferences(const bool expand)
//{
// fCreateEntityReferenceNodes = expand;
//}
//inline void DOMParser::setCreateEntityReferenceNodes(const bool create)
//{
// fCreateEntityReferenceNodes = create;
//}
//inline void DOMParser::setIncludeIgnorableWhitespace(const bool include)
//{
// fIncludeIgnorableWhitespace = include;
//}
//inline void DOMParser::setToCreateXMLDeclTypeNode(const bool create)
//{
// fToCreateXMLDeclTypeNode = create;
//}
// ---------------------------------------------------------------------------
// DOMParser: Protected getter methods
// ---------------------------------------------------------------------------
//inline DOM_Node DOMParser::getCurrentNode()
//{
// return fCurrentNode;
//}
// ---------------------------------------------------------------------------
// DOMParser: Protected setter methods
// ---------------------------------------------------------------------------
//inline void DOMParser::setCurrentNode(DOM_Node toSet)
//{
// fCurrentNode = toSet;
//}
//inline void DOMParser::setDocument(DOM_Document toSet)
//{
// fDocument = toSet;
//}
//#endif
1.1 xml-xerces/perl/Xerces_headers/sax/ErrorHandler.hpp
Index: ErrorHandler.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: ErrorHandler.hpp,v $
* Revision 1.1 2001/03/07 16:04:05 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.6 2000/04/27 19:33:15 rahulj
* Included <util/XercesDefs.hpp> as suggested by David N Bertoni.
*
* Revision 1.5 2000/02/24 20:12:55 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/12 03:31:55 rahulj
* Removed duplicate CVS Log entries.
*
* Revision 1.3 2000/02/12 01:27:19 aruna1
* Documentation updated
*
* Revision 1.2 2000/02/06 07:47:57 rahulj
* Year 2K copyright swat.
*
* Revision 1.1.1.1 1999/11/09 01:07:45 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:45:00 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef ERRORHANDLER_HPP
//#define ERRORHANDLER_HPP
//#include <util/XercesDefs.hpp>
//class SAXParseException;
/**
* Basic interface for SAX error handlers.
*
* <p>If a SAX application needs to implement customized error
* handling, it must implement this interface and then register an
* instance with the SAX parser using the parser's setErrorHandler
* method. The parser will then report all errors and warnings
* through this interface.</p>
*
* <p> The parser shall use this interface instead of throwing an
* exception: it is up to the application whether to throw an
* exception for different types of errors and warnings. Note,
* however, that there is no requirement that the parser continue to
* provide useful information after a call to fatalError (in other
* words, a SAX driver class could catch an exception and report a
* fatalError).</p>
*
* <p>The HandlerBase class provides a default implementation of this
* interface, ignoring warnings and recoverable errors and throwing a
* SAXParseException for fatal errors. An application may extend
* that class rather than implementing the complete interface
* itself.</p>
*
* @see Parser#setErrorHandler
* @see SAXParseException#SAXParseException
* @see HandlerBase#HandlerBase
*/
class /*SAX_EXPORT*/ ErrorHandler
{
public:
/** @name Constructors and Destructor */
//@{
/** Default constructor */
// ErrorHandler()
// {
// }
/** Desctructor */
// virtual ~ErrorHandler()
// {
// }
//@}
/** @name The error handler interface */
//@{
/**
* Receive notification of a warning.
*
* <p>SAX parsers will use this method to report conditions that
* are not errors or fatal errors as defined by the XML 1.0
* recommendation. The default behaviour is to take no action.</p>
*
* <p>The SAX parser must continue to provide normal parsing events
* after invoking this method: it should still be possible for the
* application to process the document through to the end.</p>
*
* @param exception The warning information encapsulated in a
* SAX parse exception.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see SAXParseException#SAXParseException
*/
// virtual void warning(const SAXParseException& exception) = 0;
/**
* Receive notification of a recoverable error.
*
* <p>This corresponds to the definition of "error" in section 1.2
* of the W3C XML 1.0 Recommendation. For example, a validating
* parser would use this callback to report the violation of a
* validity constraint. The default behaviour is to take no
* action.</p>
*
* <p>The SAX parser must continue to provide normal parsing events
* after invoking this method: it should still be possible for the
* application to process the document through to the end. If the
* application cannot do so, then the parser should report a fatal
* error even if the XML 1.0 recommendation does not require it to
* do so.</p>
*
* @param exception The error information encapsulated in a
* SAX parse exception.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see SAXParseException#SAXParseException
*/
// virtual void error(const SAXParseException& exception) = 0;
/**
* Receive notification of a non-recoverable error.
*
* <p>This corresponds to the definition of "fatal error" in
* section 1.2 of the W3C XML 1.0 Recommendation. For example, a
* parser would use this callback to report the violation of a
* well-formedness constraint.</p>
*
* <p>The application must assume that the document is unusable
* after the parser has invoked this method, and should continue
* (if at all) only for the sake of collecting addition error
* messages: in fact, SAX parsers are free to stop reporting any
* other events once this method has been invoked.</p>
*
* @param exception The error information encapsulated in a
* SAX parse exception.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see SAXParseException#SAXParseException
*/
// virtual void fatalError(const SAXParseException& exception) = 0;
/**
* Reset the Error handler object on its reuse
*
* <p>This method helps in reseting the Error handler object
* implementational defaults each time the Error handler is begun.</p>
*
*/
// virtual void resetErrors() = 0;
//@}
//private :
/* Unimplemented constructors and operators */
/* Copy constructor */
// ErrorHandler(const ErrorHandler&);
/* Assignment operator */
// void operator=(const ErrorHandler&);
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/sax/InputSource.hpp
Index: InputSource.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: InputSource.hpp,v $
* Revision 1.1 2001/03/07 16:04:06 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.9 2000/03/02 19:54:35 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.8 2000/02/24 20:12:55 abagchi
* Swat for removing Log from API docs
*
* Revision 1.7 2000/02/12 03:42:21 rahulj
* Fixed DOC++ documentation formatting errors.
*
* Revision 1.6 2000/02/12 03:31:55 rahulj
* Removed duplicate CVS Log entries.
*
* Revision 1.5 2000/02/12 01:27:19 aruna1
* Documentation updated
*
* Revision 1.4 2000/02/09 02:15:28 abagchi
* Documented destructor
*
* Revision 1.3 2000/02/06 07:47:58 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 2000/01/12 00:15:39 roddey
* Changes to deal with multiply nested, relative pathed, entities and to deal
* with the new URL class changes.
*
* Revision 1.1.1.1 1999/11/09 01:07:46 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:45:01 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef INPUTSOURCE_HPP
//#define INPUTSOURCE_HPP
//#include <util/XercesDefs.hpp>
//class BinInputStream;
/**
* A single input source for an XML entity.
*
* <p>This class encapsulates information about an input source in a
* single object, which may include a public identifier or a system
* identifier</p>
*
* <p>There are two places that the application will deliver this input
* source to the parser: as the argument to the Parser::parse method, or as
* the return value of the EntityResolver::resolveEntity method.</p>
*
* <p>InputSource is never used directly, but is the base class for a number
* of derived classes for particular types of input sources. Derivatives are
* provided (in the internal/ directory) for URL input sources, memory buffer
* input sources, and so on.</p>
*
* <p>When it is time to parse the input described by an input source, it
* will be asked to create a binary stream for that source. That stream will
* be used to input the data of the source. The derived class provides the
* implementation of the makeStream() method, and provides a type of stream
* of the correct type for the input source it represents.
*
* <p>An InputSource object belongs to the application: the parser never
* modifies them in any way. They are always passed by const reference so
* the parser will make a copy of any input sources that it must keep
* around beyond the call.</p>
*
* @see Parser#parse
* @see EntityResolver#resolveEntity
*/
class /*SAX_EXPORT*/ InputSource
{
public:
// -----------------------------------------------------------------------
// All constructors are hidden, just the destructor is available
// -----------------------------------------------------------------------
/** @name Destructor */
//@{
/**
* Destructor
*
*/
// virtual ~InputSource();
//@}
// -----------------------------------------------------------------------
/** @name Virtual input source interface */
//@{
/**
* Makes the byte stream for this input source.
*
* <p>The derived class must create and return a binary input stream of an
* appropriate type for its kind of data source. The returned stream must
* be dynamically allocated and becomes the parser's property.
* </p>
*
* @see BinInputStream
*/
// virtual BinInputStream* makeStream() const = 0;
//@}
// -----------------------------------------------------------------------
/** @name Getter methods */
//@{
/**
* An input source can be set to force the parser to assume a particular
* encoding for the data that input source reprsents, via the setEncoding()
* method. This method returns name of the encoding that is to be forced.
* If the encoding has never been forced, it returns a null pointer.
*
* @return The forced encoding, or null if none was supplied.
* @see #setEncoding
*/
const XMLCh* getEncoding() const;
/**
* Get the public identifier for this input source.
*
* @return The public identifier, or null if none was supplied.
* @see #setPublicId
*/
const XMLCh* getPublicId() const;
/**
* Get the system identifier for this input source.
*
* <p>If the system ID is a URL, it will be fully resolved.</p>
*
* @return The system identifier.
* @see #setSystemId
*/
const XMLCh* getSystemId() const;
//@}
// -----------------------------------------------------------------------
/** @name Setter methods */
//@{
/**
* Set the encoding which will be required for use with the XML text read
* via a stream opened by this input source.
*
* <p>This is usually not set, allowing the encoding to be sensed in the
* usual XML way. However, in some cases, the encoding in the file is known
* to be incorrect because of intermediate transcoding, for instance
* encapsulation within a MIME document.
*
* @param encodingStr The name of the encoding to force.
*/
void setEncoding(const XMLCh* /*const*/ encodingStr);
/**
* Set the public identifier for this input source.
*
* <p>The public identifier is always optional: if the application writer
* includes one, it will be provided as part of the location information.</p>
*
* @param publicId The public identifier as a string.
* @see Locator#getPublicId
* @see SAXParseException#getPublicId
* @see #getPublicId
*/
void setPublicId(const XMLCh* /*const*/ publicId);
/**
* Set the system identifier for this input source.
*
* <p>Set the system identifier for this input source.
*
* </p>The system id is always required. The public id may be used to map
* to another system id, but the system id must always be present as a fall
* back.
*
* <p>If the system ID is a URL, it must be fully resolved.</p>
*
* @param systemId The system identifier as a string.
* @see #getSystemId
* @see Locator#getSystemId
* @see SAXParseException#getSystemId
*/
void setSystemId(const XMLCh* /*const*/ systemId);
//@}
//protected :
// -----------------------------------------------------------------------
// Hidden constructors
// -----------------------------------------------------------------------
/** @name Constructors and Destructor */
//@{
/** Default constructor */
// InputSource();
/** Constructor with a system identifier as XMLCh type.
* @param systemId The system identifier (URI).
*/
// InputSource(const XMLCh* const systemId);
/** Constructor with a system and public identifiers
* @param systemId The system identifier (URI).
* @param publicId The public identifier as in the entity definition.
*/
// InputSource
// (
// const XMLCh* const systemId
// , const XMLCh* const publicId
// );
/** Constructor witha system identifier as string
* @param systemId The system identifier (URI).
*/
// InputSource(const char* const systemId);
/** Constructor witha system and public identifiers. Both as string
* @param systemId The system identifier (URI).
* @param publicId The public identifier as in the entity definition.
*/
// InputSource
// (
// const char* const systemId
// , const char* const publicId
// );
//@}
//private:
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
// InputSource(const InputSource&);
// void operator=(const InputSource&);
// -----------------------------------------------------------------------
// Private data members
//
// fEncoding
// This is the encoding to use. Usually this is null, which means
// to use the information found in the file itself. But, if set,
// this encoding will be used without question.
//
// fPublicId
// This is the optional public id for the input source. It can be
// null if none is desired.
//
// fSystemId
// This is the system id for the input source. This is what is
// actually used to open the source.
// -----------------------------------------------------------------------
// XMLCh* fEncoding;
// XMLCh* fPublicId;
// XMLCh* fSystemId;
};
// ---------------------------------------------------------------------------
// InputSource: Getter methods
// ---------------------------------------------------------------------------
//inline const XMLCh* InputSource::getEncoding() const
//{
// return fEncoding;
//}
//inline const XMLCh* InputSource::getPublicId() const
//{
// return fPublicId;
//}
//inline const XMLCh* InputSource::getSystemId() const
//{
// return fSystemId;
//}
//#endif
1.1 xml-xerces/perl/Xerces_headers/sax/SAXException.hpp
Index: SAXException.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: SAXException.hpp,v $
* Revision 1.1 2001/03/07 16:04:06 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.8 2000/09/07 23:55:02 andyh
* Fix SAXException assignment operator. Now non-virtual, and
* SAXParseException invokes base class operator.
*
* Revision 1.7 2000/08/09 22:06:04 jpolast
* more functionality to SAXException and its children.
* msgs are now functional for SAXNotSupportedEx and
* SAXNotRecognizedEx
*
* Revision 1.6 2000/08/02 18:04:02 jpolast
* include SAXNotSupportedException and
* SAXNotRecognizedException needed for sax2
*
* Revision 1.5 2000/02/24 20:12:55 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/09 19:15:17 abagchi
* Inserted documentation for new APIs
*
* Revision 1.3 2000/02/06 07:47:58 rahulj
* Year 2K copyright swat.
*
* Revision 1.2 1999/12/18 00:21:23 roddey
* Fixed a small reported memory leak
*
* Revision 1.1.1.1 1999/11/09 01:07:47 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:45:02 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef SAXEXCEPTION_HPP
//#define SAXEXCEPTION_HPP
//#include <util/XMLString.hpp>
//#include <util/XMLUni.hpp>
/**
* Encapsulate a general SAX error or warning.
*
* <p>This class can contain basic error or warning information from
* either the XML SAX parser or the application: a parser writer or
* application writer can subclass it to provide additional
* functionality. SAX handlers may throw this exception or
* any exception subclassed from it.</p>
*
* <p>If the application needs to pass through other types of
* exceptions, it must wrap those exceptions in a SAXException
* or an exception derived from a SAXException.</p>
*
* <p>If the parser or application needs to include information
* about a specific location in an XML document, it should use the
* SAXParseException subclass.</p>
*
* @see SAXParseException#SAXParseException
*/
class /*SAX_EXPORT*/ SAXException
{
public:
/** @name Constructors and Destructor */
//@{
/** Default constructor
*/
// SAXException() :
// fMsg(XMLString::replicate(XMLUni::fgZeroLenString))
// {
// }
/**
* Create a new SAXException.
*
* @param msg The error or warning message.
*/
// SAXException(const XMLCh* const msg) :
// fMsg(XMLString::replicate(msg))
// {
// }
/**
* Create a new SAXException.
*
* @param msg The error or warning message.
*/
// SAXException(const char* const msg) :
// fMsg(XMLString::transcode(msg))
// {
// }
/**
* Copy constructor
*
* @param toCopy The exception to be copy constructed
*/
// SAXException(const SAXException& toCopy) :
// fMsg(XMLString::replicate(toCopy.fMsg))
// {
// }
/** Destructor */
// virtual ~SAXException()
// {
// delete [] fMsg;
// }
//@}
/** @name Public Operators */
//@{
/**
* Assignment operator
*
* @param toCopy The object to be copied
*/
// SAXException& operator=(const SAXException& toCopy)
SAXException& assignment(const SAXException& toCopy)
{
if (this == &toCopy)
return *this;
delete [] fMsg;
fMsg = XMLString::replicate(toCopy.fMsg);
return *this;
}
//@}
/** @name Getter Methods */
//@{
/**
* Get the contents of the message
*
*/
virtual const XMLCh* getMessage() const
{
return fMsg;
}
//@}
//protected :
// -----------------------------------------------------------------------
// Protected data members
//
// fMsg
// This is the text of the error that is being thrown.
// -----------------------------------------------------------------------
// XMLCh* fMsg;
};
class SAXNotSupportedException : public SAXException
{
public:
// SAXNotSupportedException();
/**
* Create a new SAXException.
*
* @param msg The error or warning message.
*/
// SAXNotSupportedException(const XMLCh* const msg);
/**
* Create a new SAXException.
*
* @param msg The error or warning message.
*/
// SAXNotSupportedException(const char* const msg);
/**
* Copy constructor
*
* @param toCopy The exception to be copy constructed
*/
// SAXNotSupportedException(const SAXException& toCopy);
};
class SAXNotRecognizedException : public SAXException
{
public:
// SAXNotRecognizedException();
/**
* Create a new SAXException.
*
* @param msg The error or warning message.
*/
// SAXNotRecognizedException(const XMLCh* const msg);
/**
* Create a new SAXException.
*
* @param msg The error or warning message.
*/
// SAXNotRecognizedException(const char* const msg);
/**
* Copy constructor
*
* @param toCopy The exception to be copy constructed
*/
// SAXNotRecognizedException(const SAXException& toCopy);
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/sax/SAXParseException.hpp
Index: SAXParseException.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: SAXParseException.hpp,v $
* Revision 1.1 2001/03/07 16:04:06 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.5 2000/02/24 20:12:55 abagchi
* Swat for removing Log from API docs
*
* Revision 1.4 2000/02/12 01:27:19 aruna1
* Documentation updated
*
* Revision 1.3 2000/02/09 19:24:49 abagchi
* Inserted documentation for constructors and destructors
*
* Revision 1.2 2000/02/06 07:47:58 rahulj
* Year 2K copyright swat.
*
* Revision 1.1.1.1 1999/11/09 01:07:47 twl
* Initial checkin
*
* Revision 1.2 1999/11/08 20:45:02 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#ifndef SAXPARSEEXCEPTION_HPP
//#define SAXPARSEEXCEPTION_HPP
//#include <sax/SAXException.hpp>
//class Locator;
/**
* Encapsulate an XML parse error or warning.
*
* <p>This exception will include information for locating the error
* in the original XML document. Note that although the application
* will receive a SAXParseException as the argument to the handlers
* in the ErrorHandler interface, the application is not actually
* required to throw the exception; instead, it can simply read the
* information in it and take a different action.</p>
*
* <p>Since this exception is a subclass of SAXException, it
* inherits the ability to wrap another exception.</p>
*
* @see SAXException#SAXException
* @see Locator#Locator
* @see ErrorHandler#ErrorHandler
*/
class /*SAX_EXPORT*/ SAXParseException : public SAXException
{
public:
/** @name Constructors and Destructor */
//@{
/**
* Create a new SAXParseException from a message and a Locator.
*
* <p>This constructor is especially useful when an application is
* creating its own exception from within a DocumentHandler
* callback.</p>
*
* @param message The error or warning message.
* @param locator The locator object for the error or warning.
* @see Locator#Locator
* @see Parser#setLocale
*/
// SAXParseException(const XMLCh* const message, const Locator& locator);
/**
* Create a new SAXParseException.
*
* <p>This constructor is most useful for parser writers.</p>
*
* <p>If the system identifier is a URL, the parser must resolve it
* fully before creating the exception.</p>
*
* @param message The error or warning message.
* @param publicId The public identifer of the entity that generated
* the error or warning.
* @param systemId The system identifer of the entity that generated
* the error or warning.
* @param lineNumber The line number of the end of the text that
* caused the error or warning.
* @param columnNumber The column number of the end of the text that
* caused the error or warning.
* @see Parser#setLocale
*/
// SAXParseException
// (
// const XMLCh* const message
// , const XMLCh* const publicId
// , const XMLCh* const systemId
// , const unsigned int lineNumber
// , const unsigned int columnNumber
// );
/**
* Copy constructor
*
* @param toCopy The object to be copied
*/
// SAXParseException(const SAXParseException& toCopy);
/**
* Destructor
*/
// ~SAXParseException();
//@}
/** @name Assignment operator */
//@{
/**
* Assignment operator
*
* @param toAssign The object to be copied through assignment
*
*/
// SAXParseException& operator=(const SAXParseException& toAssign);
SAXParseException& assignment(const SAXParseException& toAssign);
//@}
/** @name Getter methods */
//@{
/**
* The column number of the end of the text where the exception occurred.
*
* <p>The first column in a line is position 1.</p>
*
* @return An integer representing the column number, or -1
* if none is available.
* @see Locator#getColumnNumber
*/
unsigned int getColumnNumber() const;
/**
* The line number of the end of the text where the exception occurred.
*
* @return An integer representing the line number, or -1
* if none is available.
* @see Locator#getLineNumber
*/
unsigned int getLineNumber() const;
/**
* Get the public identifier of the entity where the exception occurred.
*
* @return A string containing the public identifier, or null
* if none is available.
* @see Locator#getPublicId
*/
const XMLCh* getPublicId() const;
/**
* Get the system identifier of the entity where the exception occurred.
*
* <p>If the system identifier is a URL, it will be resolved
* fully.</p>
*
* @return A string containing the system identifier, or null
* if none is available.
* @see Locator#getSystemId
*/
const XMLCh* getSystemId() const;
//@}
//private:
/* Data Members */
/* The column in the source text where the error occured. */
// unsigned int fColumnNumber;
/* The line in the source text where the error occured. */
// unsigned int fLineNumber;
/* The public id of the file where the error occured. */
// XMLCh* fPublicId;
/* The system id of the file where the error occured. */
// XMLCh* fSystemId;
};
//#endif
1.1 xml-xerces/perl/Xerces_headers/util/PlatformUtils.hpp
Index: PlatformUtils.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/>.
*/
/*
* $Id: PlatformUtils.hpp,v 1.1 2001/03/07 16:04:07 jasons Exp $
*/
//#if !defined(PLATFORMUTILS_HPP)
//#define PLATFORMUTILS_HPP
//#include <util/XercesDefs.hpp>
//#include <util/XMLException.hpp>
//class XMLMsgLoader;
//class XMLNetAccessor;
//class XMLTransService;
//
// For internal use only
//
// This class provides a simple abstract API via which lazily evaluated
// data can be cleaned up.
//
//class XMLUTIL_EXPORT XMLDeleter
//{
//public :
// virtual ~XMLDeleter();
//protected :
// XMLDeleter();
//private :
// XMLDeleter(const XMLDeleter&);
// void operator=(const XMLDeleter&);
//};
/**
* Utilities that must be implemented in a platform-specific way.
*
* This class contains methods that must be implemented in a platform
* specific manner. The actual implementations of these methods are
* available in the per-platform files indide <code>src/util/Platforms
* </code>.
*/
class /*XMLUTIL_EXPORT*/ XMLPlatformUtils
{
public :
/** @name Public Types */
//@{
enum PanicReasons
{
Panic_NoTransService
, Panic_NoDefTranscoder
, Panic_CantFindLib
, Panic_UnknownMsgDomain
, Panic_CantLoadMsgDomain
, Panic_SynchronizationErr
, Panic_SystemInit
, PanicReasons_Count
};
//@}
/** @name Public Static Data */
//@{
/** The network accessor
*
* This is provided by the per-platform driver, so each platform can
* choose what actual implementation it wants to use. The object must
* be dynamically allocated.
*
* <i>Note that you may optionally, if your platform driver does not
* install a network accessor, set it manually from your client code
* after calling Initialize(). This works because this object is
* not required during initialization, and only comes into play during
* actual XML parsing.</i>
*/
// static XMLNetAccessor* fgNetAccessor;
/** The transcoding service.
*
* This is provided by the per platform driver, so each platform can
* choose what implemenation it wants to use. When the platform
* independent initialization code needs to get a transcoding service
* object, it will call <code>makeTransService()</code> to ask the
* per-platform code to create one. Only one transcoding service
* object is reqeusted per-process, so it is shared and synchronized
* among parser instances within that process.
*/
// static XMLTransService* fgTransService;
//@}
/** @name Initialization amd Panic methods */
//@{
/** Perform per-process parser initialization
*
* Initialization <b>must</b> be called first in any client code.
*/
static void Initialize();
/** Perform per-process parser termination
*
* The termination call is currently optional, to aid those dynamically
* loading the parser to clean up before exit, or to avoid spurious
* reports from leak detectors.
*/
static void Terminate();
/** The panic mechanism.
*
* If, during initialization, we cannot even get far enough along
* to get transcoding up or get message loading working, we call
* this method.</p>
*
* Each platform can implement it however they want. This method is
* expected to display something meaningful and end the process. The
* enum indicates why its being called, to allow the per-platform code
* to display or log something more specific if desired.</p>
*
* @param reason The enumeration that defines the cause of the failure
*/
static void panic
(
const PanicReasons reason
);
//@}
/** @name File Methods */
//@{
/** Get the current file position
*
* This must be implemented by the per-platform driver, which should
* use local file services to deterine the current position within
* the passed file.
*
* Since the file API provided here only reads, if the host platform
* supports separate read/write positions, only the read position is
* of any interest, and hence should be the one returned.
*
* @param theFile The file handle
*/
// static unsigned int curFilePos(FileHandle theFile);
/** Closes the file handle
*
* This must be implemented by the per-platform driver, which should
* use local file services to close the passed file handle, and to
* destroy the passed file handle and any allocated data or system
* resources it contains.
*
* @param theFile The file handle to close
*/
// static void closeFile(FileHandle theFile);
/** Returns the file size
*
* This must be implemented by the per-platform driver, which should
* use local file services to determine the current size of the file
* represented by the passed handle.
*
* @param theFile The file handle whose size you want
*
* @return Returns the size of the file in bytes
*/
// static unsigned int fileSize(FileHandle theFile);
/** Opens the file
*
* This must be implemented by the per-platform driver, which should
* use local file services to open passed file. If it fails, a
* null handle pointer should be returned.
*
* @param fileName The string containing the name of the file
*
* @return The file handle of the opened file
*/
// static FileHandle openFile(const char* const fileName);
/** Opens a named file
*
* This must be implemented by the per-platform driver, which should
* use local file services to open the passed file. If it fails, a
* null handle pointer should be returned.
*
* @param fileName The string containing the name of the file
*
* @return The file handle of the opened file
*/
// static FileHandle openFile(const XMLCh* const fileName);
/** Opens the standard input as a file
*
* This must be implemented by the per-platform driver, which should
* use local file services to open a handle to the standard input.
* It should be a copy of the standard input handle, since it will
* be closed later!
*
* @return The file handle of the standard input stream
*/
// static FileHandle openStdInHandle();
/** Reads the file buffer
*
* This must be implemented by the per-platform driver, which should
* use local file services to read up to 'toRead' bytes of data from
* the passed file, and return those bytes in the 'toFill' buffer. It
* is not an error not to read the requested number of bytes. When the
* end of file is reached, zero should be returned.
*
* @param theFile The file handle to be read from.
* @param toRead The maximum number of byte to read from the current
* position
* @param toFill The byte buffer to fill
*
* @return Returns the number of bytes read from the stream or file
*/
// static unsigned int readFileBuffer
// (
// FileHandle theFile
// , const unsigned int toRead
// , XMLByte* const toFill
// );
/** Resets the file handle
*
* This must be implemented by the per-platform driver which will use
* local file services to reset the file position to the start of the
* the file.
*
* @param theFile The file handle that you want to reset
*/
// static void resetFile(FileHandle theFile);
//@}
/** @name File System Methods */
//@{
/** Gets the full path from a relative path
*
* This must be implemented by the per-platform driver. It should
* complete a relative path using the 'current directory', or whatever
* the local equivalent of a current directory is. If the passed
* source path is actually fully qualified, then a straight copy of it
* will be returned.
*
* @param srcPath The path of the file for which you want the full path
*
* @return Returns the fully qualified path of the file name including
* the file name. This is dyanmically allocated and must be deleted
* by the caller when its no longer needed!
*/
// static XMLCh* getFullPath(const XMLCh* const srcPath);
/** Determines if a path is relative or absolute
*
* This must be implemented by the per-platform driver, which should
* determine whether the passed path is relative or not. The concept
* of relative and absolute might be... well relative on different
* platforms. But, as long as the determination is made consistently
* and in coordination with the weavePaths() method, it should work
* for any platform.
*
* @param toCheck The file name which you want to check
*
* @return Returns true if the filename appears to be relative
*/
// static bool isRelative(const XMLCh* const toCheck);
/** Utility to join two paths
*
* This must be implemented by the per-platform driver, and should
* weave the relative path part together with the base part and return
* a new path that represents this combination.
*
* If the relative part turns out to be fully qualified, it will be
* returned as is. If it is not, then it will be woven onto the
* passed base path, by removing one path component for each leading
* "../" (or whatever is the equivalent in the local system) in the
* relative path.
*
* @param basePath The string containing the base path
* @param relativePath The string containing the relative path
*
* @return Returns a string containing the 'woven' path. It should
* be dynamically allocated and becomes the responsibility of the
* caller to delete.
*/
// static XMLCh* weavePaths
// (
// const XMLCh* const basePath
// , const XMLCh* const relativePath
// );
//@}
/** @name Timing Methods */
//@{
/** Gets the system time in milliseconds
*
* This must be implemented by the per-platform driver, which should
* use local services to return the current value of a running
* millisecond timer. Note that the value returned is only as accurate
* as the millisecond time of the underyling host system.
*
* @return Returns the system time as an unsigned long
*/
// static unsigned long getCurrentMillis();
//@}
/** @name Mutex Methods */
//@{
/** Closes a mutex handle
*
* Each per-platform driver must implement this. Only it knows what
* the actual content of the passed mutex handle is.
*
* @param mtxHandle The mutex handle that you want to close
*/
// static void closeMutex(void* const mtxHandle);
/** Locks a mutex handle
*
* Each per-platform driver must implement this. Only it knows what
* the actual content of the passed mutex handle is.
*
* @param mtxHandle The mutex handle that you want to lock
*/
// static void lockMutex(void* const mtxHandle);
/** Make a new mutex
*
* Each per-platform driver must implement this. Only it knows what
* the actual content of the passed mutex handle is. The returned
* handle pointer will be eventually passed to closeMutex() which is
* also implemented by the platform driver.
*/
// static void* makeMutex();
/** Unlocks a mutex
*
* Each per-platform driver must implement this. Only it knows what
* the actual content of the passed mutex handle is.
*
* Note that, since the underlying system synchronization services
* are used, Xerces cannot guarantee that lock/unlock operaitons are
* correctly enforced on a per-thread basis or that incorrect nesting
* of lock/unlock operations will be caught.
*
* @param mtxGandle The mutex handle that you want to unlock
*/
// static void unlockMutex(void* const mtxHandle);
//@}
/** @name External Message Support */
//@{
/** Loads the message set from among the available domains
*
* The returned object must be dynamically allocated and the caller
* becomes responsible for cleaning it up.
*
* @param msgDomain The message domain which you want to load
*/
// static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain);
//@}
/** @name Miscellaneous synchronization methods */
//@{
/** Conditionally updates or returns a single word variable atomically
*
* This must be implemented by the per-platform driver. The
* compareAndSwap subroutine performs an atomic operation which
* compares the contents of a single word variable with a stored old
* value. If the values are equal, a new value is stored in the single
* word variable and TRUE is returned; otherwise, the old value is set
* to the current value of the single word variable and FALSE is
* returned.
*
* The compareAndSwap subroutine is useful when a word value must be
* updated only if it has not been changed since it was last read.
*
* Note: The word containing the single word variable must be aligned
* on a full word boundary.
*
* @param toFill Specifies the address of the single word variable
* @param newValue Specifies the new value to be conditionally assigned
* to the single word variable.
* @param toCompare Specifies the address of the old value to be checked
* against (and conditionally updated with) the value of the single word
* variable.
*
* @return Returns the new value assigned to the single word variable
*/
// static void* compareAndSwap
// (
// void** toFill
// , const void* const newValue
// , const void* const toCompare
// );
//@}
/** @name Atomic Increment and Decrement */
//@{
/** Increments a single word variable atomically.
*
* This must be implemented by the per-platform driver. The
* atomicIncrement subroutine increments one word in a single atomic
* operation. This operation is useful when a counter variable is shared
* between several threads or processes. When updating such a counter
* variable, it is important to make sure that the fetch, update, and
* store operations occur atomically (are not interruptible).
*
* @param location Specifies the address of the word variable to be
* incremented.
*
* @return The function return value is positive if the result of the
* operation was positive. Zero if the result of the operation was zero.
* Negative if the result of the operation was negative. Except for the
* zero case, the value returned may differ from the actual result of
* the operation - only the sign and zero/nonzero state is guaranteed
* to be correct.
*/
// static int atomicIncrement(int& location);
/** Decrements a single word variable atomically.
*
* This must be implemented by the per-platform driver. The
* atomicDecrement subroutine increments one word in a single atomic
* operation. This operation is useful when a counter variable is shared
* between several threads or processes. When updating such a counter
* variable, it is important to make sure that the fetch, update, and
* store operations occur atomically (are not interruptible).
*
* @param location Specifies the address of the word variable to be
* decremented.
*
* @return The function return value is positive if the result of the
* operation was positive. Zero if the result of the operation was zero.
* Negative if the result of the operation was negative. Except for the
* zero case, the value returned may differ from the actual result of the
* operation - only the sign and zero/nonzero state is guaranteed to be
* correct.
*/
// static int atomicDecrement(int& location);
//@}
//
// For internal use only.
//
// The parser creates a good bit of static/global data lazily, to
// avoid order of creation issues. Those objects can be registered
// here to be cleaned up during the Terminate() call.
///
// static void registerLazyData(XMLDeleter* const deleter);
// static void cleanupLazyData();
//private :
/** @name Private static methods */
//@{
/** Loads a message set from the available domains
*
* @param msgDomain The message domain containing the message to be
* loaded
*/
// static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain);
/** Creates a net accessor object.
*
* Each per-platform driver must implement this method. However,
* having a Net Accessor is optional and this method can return a
* null pointer if remote access via HTTP and FTP URLs is not required.
*
* @return An object derived from XMLNetAccessor. It must be dynamically
* allocated, since it will be deleted later.
*/
// static XMLNetAccessor* makeNetAccessor();
/** Creates a Transoding service
*
* Each per-platform driver must implement this method and return some
* derivative of the XMLTransService class. This object serves as the
* transcoder factory for this process. The object must be dynamically
* allocated and the caller is responsible for cleaning it up.
*
* @return A dynamically allocated object of some class derived from
* the XMLTransService class.
*/
// static XMLTransService* makeTransService();
/** Does initialization for a particular platform
*
* Each per-platform driver must implement this to do any low level
* system initialization required. It <b>cannot</b> use any XML
* parser or utilities services!
*/
// static void platformInit();
/** Does termination for a particular platform
*
* Each per-platform driver must implement this to do any low level
* system resource cleanup required. It <b>cannot</b> use any XML
* parser or utilities services!
*/
// static void platformTerm();
};
//MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
// ---------------------------------------------------------------------------
// XMLDeleter: Public Destructor
// ---------------------------------------------------------------------------
//inline XMLDeleter::~XMLDeleter()
//{
//}
// ---------------------------------------------------------------------------
// XMLDeleter: Hidden constructors and operators
// ---------------------------------------------------------------------------
//inline XMLDeleter::XMLDeleter()
//{
//}
//#endif
1.1 xml-xerces/perl/Xerces_headers/util/XMLURL.hpp
Index: XMLURL.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/>.
*/
/*
* $Id: XMLURL.hpp,v 1.1 2001/03/07 16:04:07 jasons Exp $
*/
//#if !defined(XMLURL_HPP)
//#define XMLURL_HPP
//#include <util/XercesDefs.hpp>
//#include <util/XMLException.hpp>
//class BinInputStream;
//MakeXMLException(MalformedURLException, XMLUTIL_EXPORT)
//
// This class supports file, http, and ftp style URLs. All others are
// rejected
//
class /*XMLUTIL_EXPORT*/ XMLURL
{
public:
// -----------------------------------------------------------------------
// Class types
//
// And they must remain in this order because they are indexes into an
// array internally!
// -----------------------------------------------------------------------
enum Protocols
{
File
, HTTP
, FTP
, Protocols_Count
, Unknown
};
// -----------------------------------------------------------------------
// Public static methods
// -----------------------------------------------------------------------
Protocols lookupByName(const XMLCh* /*const*/ protoName);
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
// XMLURL();
// XMLURL
// (
// const XMLCh* const baseURL
// , const XMLCh* const relativeURL
// );
// XMLURL
// (
// const XMLCh* const baseURL
// , const char* const relativeURL
// );
// XMLURL
// (
// const XMLURL& baseURL
// , const XMLCh* const relativeURL
// );
// XMLURL
// (
// const XMLURL& baseURL
// , const char* const relativeURL
// );
// XMLURL
// (
// const XMLCh* const urlText
// );
XMLURL
(
const char* /*const*/ urlText
);
// XMLURL(const XMLURL& toCopy);
// virtual ~XMLURL();
// -----------------------------------------------------------------------
// Operators
// -----------------------------------------------------------------------
// XMLURL& operator=(const XMLURL& toAssign);
XMLURL& assignment(const XMLURL& toAssign);
// bool operator==(const XMLURL& toCompare) const;
bool equal_to(const XMLURL& toCompare) const;
// bool operator!=(const XMLURL& toCompare) const;
bool not_equal_to(const XMLURL& toCompare) const;
// -----------------------------------------------------------------------
// Getter methods
// -----------------------------------------------------------------------
const XMLCh* getFragment() const;
const XMLCh* getHost() const;
const XMLCh* getPassword() const;
const XMLCh* getPath() const;
unsigned int getPortNum() const;
Protocols getProtocol() const;
const XMLCh* getProtocolName() const;
const XMLCh* getQuery() const;
const XMLCh* getURLText() const;
const XMLCh* getUser() const;
// -----------------------------------------------------------------------
// Setter methods
// -----------------------------------------------------------------------
void setURL(const XMLCh* /*const*/ urlText);
// void setURL
// (
// const XMLCh* const baseURL
// , const XMLCh* const relativeURL
// );
// void setURL
// (
// const XMLURL& baseURL
// , const XMLCh* const relativeURL
// );
// -----------------------------------------------------------------------
// Miscellaneous methods
// -----------------------------------------------------------------------
bool isRelative() const;
// BinInputStream* makeNewStream() const;
// void makeRelativeTo(const XMLCh* const baseURLText);
void makeRelativeTo(const XMLURL& baseURL);
//private:
// -----------------------------------------------------------------------
// Private helper methods
// -----------------------------------------------------------------------
// void buildFullText();
// void cleanup();
// bool conglomerateWithBase(const XMLURL& baseURL, bool useExceptions=true);
// void parse
// (
// const XMLCh* const urlText
// );
// void weavePaths(const XMLCh* const basePart);
// -----------------------------------------------------------------------
// Data members
//
// fFragment
// The fragment part of the URL, if any. If none, its a null.
//
// fHost
// The host part of the URL that was parsed out. This one will often
// be null (or "localhost", which also means the current machine.)
//
// fPassword
// The password found, if any. If none then its a null.
//
// fPath
// The path part of the URL that was parsed out, if any. If none,
// then its a null.
//
// fPortNum
// The port that was indicated in the URL. If no port was provided
// explicitly, then its left zero.
//
// fProtocol
// Indicates the type of the URL's source. The text of the prefix
// can be gotten from this.
//
// fQuery
// The query part of the URL, if any. If none, then its a null.
//
// fUser
// The username found, if any. If none, then its a null.
//
// fURLText
// This is a copy of the URL text, after it has been taken apart,
// made relative if needed, canonicalized, and then put back
// together. Its only created upon demand.
// -----------------------------------------------------------------------
// XMLCh* fFragment;
// XMLCh* fHost;
// XMLCh* fPassword;
// XMLCh* fPath;
// unsigned int fPortNum;
// Protocols fProtocol;
// XMLCh* fQuery;
// XMLCh* fUser;
// XMLCh* fURLText;
};
// ---------------------------------------------------------------------------
// XMLURL: Public operators
// ---------------------------------------------------------------------------
//inline bool XMLURL::operator!=(const XMLURL& toCompare) const
//{
// return !operator==(toCompare);
//}
// ---------------------------------------------------------------------------
// XMLURL: Getter methods
// ---------------------------------------------------------------------------
//inline const XMLCh* XMLURL::getFragment() const
//{
// return fFragment;
//}
//inline const XMLCh* XMLURL::getHost() const
//{
// return fHost;
//}
//inline const XMLCh* XMLURL::getPassword() const
//{
// return fPassword;
//}
//inline const XMLCh* XMLURL::getPath() const
//{
// return fPath;
//}
//inline XMLURL::Protocols XMLURL::getProtocol() const
//{
// return fProtocol;
//}
//inline const XMLCh* XMLURL::getQuery() const
//{
// return fQuery;
//}
//inline const XMLCh* XMLURL::getUser() const
//{
// return fUser;
//}
//inline const XMLCh* XMLURL::getURLText() const
//{
//
// Fault it in if not already. Since this is a const method and we
// can't use mutable members due the compilers we have to support,
// we have to cast off the constness.
//
// if (!fURLText)
// ((XMLURL*)this)->buildFullText();
// return fURLText;
//}
//#endif
1.1 xml-xerces/perl/Xerces_headers/util/XercesDefs.hpp
Index: XercesDefs.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: XercesDefs.hpp,v $
* Revision 1.1 2001/03/07 16:04:07 jasons
* PR:
* Submitted by: jason@openinformatics.com
*
* Added new files from Harmon's 1.3 port
*
* Revision 1.7 2000/08/18 21:29:14 andyh
* Change version to 1.3 in preparation for upcoming Xerces 1.3
* and XML4C 3.3 stable releases
*
* Revision 1.6 2000/08/07 20:31:34 jpolast
* include SAX2_EXPORT module
*
* Revision 1.5 2000/08/01 18:26:02 aruna1
* Tru64 support added
*
* Revision 1.4 2000/07/29 05:36:37 jberry
* Fix misspelling in Mac OS port
*
* Revision 1.3 2000/07/19 18:20:12 andyh
* Macintosh port: fix problems with yesterday's code checkin. A couple
* of the changes were mangled or missed.
*
* Revision 1.2 2000/04/04 20:11:29 abagchi
* Added PTX support
*
* Revision 1.1 2000/03/02 19:54:50 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.13 2000/03/02 01:51:00 aruna1
* Sun CC 5.0 related changes
*
* Revision 1.12 2000/02/24 20:05:26 abagchi
* Swat for removing Log from API docs
*
* Revision 1.11 2000/02/22 01:00:10 aruna1
* GNUGDefs references removed. Now only GCCDefs is used instead
*
* Revision 1.10 2000/02/06 07:48:05 rahulj
* Year 2K copyright swat.
*
* Revision 1.9 2000/02/01 23:43:32 abagchi
* AS/400 related change
*
* Revision 1.8 2000/01/21 22:12:29 abagchi
* OS390 Change: changed OE390 to OS390
*
* Revision 1.7 2000/01/14 01:18:35 roddey
* Added a macro, XMLStrL(), which is defined one way or another according
* to whether the per-compiler file defines XML_LSTRSUPPORT or not. This
* allows conditional support of L"" type prefixes.
*
* Revision 1.6 2000/01/14 00:52:06 roddey
* Updated the version information for the next release, i.e. 1.1.0
*
* Revision 1.5 1999/12/17 01:28:53 rahulj
* Merged in changes submitted for UnixWare 7 port. Platform
* specific files are still missing.
*
* Revision 1.4 1999/12/16 23:47:10 rahulj
* Updated for version 1.0.1
*
* Revision 1.3 1999/12/01 17:16:16 rahulj
* Added support for IRIX 6.5.5 using SGI MIPSpro C++ 7.3 and 7.21 generating 32 bit objects. Changes submitted by Marc Stuessel
*
* Revision 1.2 1999/11/10 02:02:51 abagchi
* Changed version numbers
*
* Revision 1.1.1.1 1999/11/09 01:05:35 twl
* Initial checkin
*
* Revision 1.3 1999/11/08 20:45:19 rahul
* Swat for adding in Product name and CVS comment log variable.
*
*/
//#if !defined(XERCESDEFS_HPP)
//#define XERCESDEFS_HPP
// ---------------------------------------------------------------------------
// These are the various representations of the current version of Xerces.
// These are updated for every build. They must be at the top because they
// can be used by various per-compiler headers below.
// ---------------------------------------------------------------------------
//#define Xerces_DLLVersionStr "1_3"
static const char* /*const*/ gXercesVersionStr = "1_3";
static const char* /*const*/ gXercesFullVersionStr = "1_3_0";
static const unsigned int gXercesMajVersion = 1;
static const unsigned int gXercesMinVersion = 3;
static const unsigned int gXercesRevision = 0;
// ---------------------------------------------------------------------------
// Include the header that does automatic sensing of the current platform
// and compiler.
// ---------------------------------------------------------------------------
//#include <util/AutoSense.hpp>
// ---------------------------------------------------------------------------
// According to the platform we include a platform specific file. This guy
// will set up any platform specific stuff, such as character mode.
// ---------------------------------------------------------------------------
//#if defined(XML_WIN32)
//#include <util/Platforms/Win32/Win32Defs.hpp>
//#endif
//#if defined(XML_AIX)
//#include <util/Platforms/AIX/AIXDefs.hpp>
//#endif
//#if defined(XML_SOLARIS)
//#include <util/Platforms/Solaris/SolarisDefs.hpp>
//#endif
//#if defined(XML_UNIXWARE)
//#include <util/Platforms/UnixWare/UnixWareDefs.hpp>
//#endif
//#if defined(XML_HPUX)
//#include <util/Platforms/HPUX/HPUXDefs.hpp>
//#endif
//#if defined(XML_IRIX)
//#include <util/Platforms/IRIX/IRIXDefs.hpp>
//#endif
//#if defined(XML_TANDEM)
//#include <util/Platforms/Tandem/TandemDefs.hpp>
//#endif
//#if defined(XML_LINUX)
//#include <util/Platforms/Linux/LinuxDefs.hpp>
//#endif
//#if defined(XML_OS390)
//#include <util/Platforms/OS390/OS390Defs.hpp>
//#endif
//#if defined(XML_PTX)
//#include <util/Platforms/PTX/PTXDefs.hpp>
//#endif
//#if defined(XML_OS2)
//#include <util/Platforms/OS2/OS2Defs.hpp>
//#endif
//#if defined(XML_MACOS) || defined(XML_MACOSX)
//#include <util/Platforms/MacOS/MacOSDefs.hpp>
//#endif
//#if defined(XML_AS400)
//#include <util/Platforms/OS400/OS400Defs.hpp>
//#endif
//#if defined(XML_TRU64)
//#include <util/Platforms/Tru64/Tru64Defs.hpp>
//#endif
// ---------------------------------------------------------------------------
// And now we subinclude a header according to the development environment
// we are on. This guy defines for each platform some basic stuff that is
// specific to the development environment.
// ---------------------------------------------------------------------------
//#if defined(XML_VISUALCPP)
//#include <util/Compilers/VCPPDefs.hpp>
//#endif
//#if defined(XML_CSET)
//#include <util/Compilers/CSetDefs.hpp>
//#endif
//#if defined(XML_BORLAND)
//#include <util/Compilers/BorlandCDefs.hpp>
//#endif
//#if defined(XML_SUNCC) || defined(XML_SUNCC5)
//#include <util/Compilers/SunCCDefs.hpp>
//#endif
//#if defined(XML_SCOCC)
//#include <util/Compilers/SCOCCDefs.hpp>
//#endif
//#if defined(XML_SOLARIS_KAICC)
//#include <util/Compilers/SunKaiDefs.hpp>
//#endif
//#if defined(XML_HPUX_CC) || defined(XML_HPUX_aCC) || defined(XML_HPUX_KAICC)
//#include <util/Compilers/HPCCDefs.hpp>
//#endif
//#if defined(XML_MIPSPRO_CC)
//#include <util/Compilers/MIPSproDefs.hpp>
//#endif
//#if defined(XML_TANDEMCC)
//#include <util/Compilers/TandemCCDefs.hpp>
//#endif
//#if defined(XML_GCC)
//#include <util/Compilers/GCCDefs.hpp>
//#endif
//#if defined(XML_MVSCPP)
//#include <util/Compilers/MVSCPPDefs.hpp>
//#endif
//#if defined(XML_IBMVAW32)
//#include <util/Compilers/IBMVAW32Defs.hpp>
//#endif
//#if defined(XML_IBMVAOS2)
//#include <util/Compilers/IBMVAOS2Defs.hpp>
//#endif
//#if defined(XML_METROWERKS)
//#include <util/Compilers/CodeWarriorDefs.hpp>
//#endif
//#if defined(XML_PTX_CC)
//#include <util/Compilers/PTXCCDefs.hpp>
//#endif
//#if defined(XML_AS400)
//#include <util/Compilers/OS400SetDefs.hpp>
//#endif
//#if defined(XML_TRU64)
//#include <util/Compilers/DECCXXDefs.hpp>
//#endif
// ---------------------------------------------------------------------------
// Some general typedefs that are defined for internal flexibility.
//
// Note that UTF16Ch is fixed at 16 bits, whereas XMLCh floats in size per
// platform, to whatever is the native wide char format there. UCS4Ch is
// fixed at 32 bits. The types we defined them in terms of are defined per
// compiler, using whatever types are the right ones for them to get these
// 16/32 bit sizes.
// ---------------------------------------------------------------------------
typedef unsigned char XMLByte;
typedef XMLUInt16 UTF16Ch;
typedef XMLUInt32 UCS4Ch;
// ---------------------------------------------------------------------------
// Handle boolean. If the platform can handle booleans itself, then we
// map our boolean type to the native type. Otherwise we create a default
// one as an int and define const values for true and false.
//
// This flag will be set in the per-development environment stuff above.
// ---------------------------------------------------------------------------
//#if defined(NO_NATIVE_BOOL)
// #ifndef bool
// typedef int bool;
// #endif
// #ifndef true
// #define true 1
// #endif
// #ifndef false
// #define false 0
// #endif
//#endif
// ---------------------------------------------------------------------------
// According to whether the compiler suports L"" type strings, we define
// the XMLStrL() macro one way or another.
// ---------------------------------------------------------------------------
//#if defined(XML_LSTRSUPPORT)
//#define XMLStrL(str) L##str
//#else
//#define XMLStrL(str) str
//#endif
// ---------------------------------------------------------------------------
// Set up the import/export keyword for our core projects. The
// PLATFORM_XXXX keywords are set in the per-development environment
// include above.
// ---------------------------------------------------------------------------
//#if defined(PROJ_XMLUTIL)
//#define XMLUTIL_EXPORT PLATFORM_EXPORT
//#else
//#define XMLUTIL_EXPORT PLATFORM_IMPORT
//#endif
//#if defined(PROJ_XMLPARSER)
//#define XMLPARSER_EXPORT PLATFORM_EXPORT
//#else
//#define XMLPARSER_EXPORT PLATFORM_IMPORT
//#endif
//#if defined(PROJ_SAX4C)
//#define SAX_EXPORT PLATFORM_EXPORT
//#else
//#define SAX_EXPORT PLATFORM_IMPORT
//#endif
//#if defined(PROJ_SAX2)
//#define SAX2_EXPORT PLATFORM_EXPORT
//#else
//#define SAX2_EXPORT PLATFORM_IMPORT
//#endif
//#if defined(PROJ_DOM)
//#define CDOM_EXPORT PLATFORM_EXPORT
//#else
//#define CDOM_EXPORT PLATFORM_IMPORT
//#endif
//#if defined(PROJ_PARSERS)
//#define PARSERS_EXPORT PLATFORM_EXPORT
//#else
//#define PARSERS_EXPORT PLATFORM_IMPORT
//#endif
//#if defined(PROJ_VALIDATORS)
//#define VALIDATORS_EXPORT PLATFORM_EXPORT
//#else
//#define VALIDATORS_EXPORT PLATFORM_IMPORT
//#endif
//#endif