mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 08:10:27 +08:00
Add some org packages.
From-SVN: r43922
This commit is contained in:
parent
608fe35b1a
commit
9556f88777
@ -1,3 +1,46 @@
|
||||
2001-07-10 Anthony Green <green@redhat.com>
|
||||
|
||||
* Makefile.in: Rebuilt.
|
||||
* Makefile.am: Add new files.
|
||||
* org/w3c/dom/Attr.java, org/w3c/dom/CDATASection.java,
|
||||
org/w3c/dom/CharacterData.java, org/w3c/dom/Comment.java,
|
||||
org/w3c/dom/DOMException.java, org/w3c/dom/DOMImplementation.java,
|
||||
org/w3c/dom/Document.java, org/w3c/dom/DocumentFragment.java,
|
||||
org/w3c/dom/DocumentType.java, org/w3c/dom/Element.java,
|
||||
org/w3c/dom/Entity.java, org/w3c/dom/EntityReference.java,
|
||||
org/w3c/dom/NamedNodeMap.java, org/w3c/dom/Node.java,
|
||||
org/w3c/dom/NodeList.java, org/w3c/dom/Notation.java,
|
||||
org/w3c/dom/ProcessingInstruction.java, org/w3c/dom/Text.java,
|
||||
org/w3c/dom/ranges/DocumentRange.java,
|
||||
org/w3c/dom/ranges/Range.java,
|
||||
org/w3c/dom/ranges/RangeException.java,
|
||||
org/w3c/dom/traversal/DocumentTraversal.java,
|
||||
org/w3c/dom/traversal/NodeFilter.java,
|
||||
org/w3c/dom/traversal/NodeIterator.java,
|
||||
org/w3c/dom/traversal/TreeWalker.java,
|
||||
org/xml/sax/ext/DeclHandler.java,
|
||||
org/xml/sax/ext/LexicalHandler.java,
|
||||
org/xml/sax/helpers/AttributeListImpl.java,
|
||||
org/xml/sax/helpers/AttributesImpl.java,
|
||||
org/xml/sax/helpers/DefaultHandler.java,
|
||||
org/xml/sax/helpers/LocatorImpl.java,
|
||||
org/xml/sax/helpers/NamespaceSupport.java,
|
||||
org/xml/sax/helpers/ParserAdapter.java,
|
||||
org/xml/sax/helpers/ParserFactory.java,
|
||||
org/xml/sax/helpers/XMLFilterImpl.java,
|
||||
org/xml/sax/helpers/XMLReaderAdapter.java,
|
||||
org/xml/sax/helpers/XMLReaderFactory.java,
|
||||
org/xml/sax/AttributeList.java, org/xml/sax/Attributes.java,
|
||||
org/xml/sax/ContentHandler.java, org/xml/sax/DTDHandler.java,
|
||||
org/xml/sax/DocumentHandler.java, org/xml/sax/EntityResolver.java,
|
||||
org/xml/sax/ErrorHandler.java, org/xml/sax/HandlerBase.java,
|
||||
org/xml/sax/InputSource.java, org/xml/sax/Locator.java,
|
||||
org/xml/sax/Parser.java, org/xml/sax/SAXException.java,
|
||||
org/xml/sax/SAXNotRecognizedException.java,
|
||||
org/xml/sax/SAXNotSupportedException.java,
|
||||
org/xml/sax/SAXParseException.java, org/xml/sax/XMLFilter.java,
|
||||
org/xml/sax/XMLReader.java: New files.
|
||||
|
||||
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
|
||||
|
||||
* Makefile.am: Added `java/lang/ThreadLocal.java'.
|
||||
|
@ -188,7 +188,7 @@ libgcj.jar: $(built_java_source_files) $(java_source_files) $(x_java_source_file
|
||||
test "$$fail" = no
|
||||
-@rm -f tmp-list libgcj.jar
|
||||
## Note that we explicitly want to include directory information.
|
||||
find java gnu -type d -o -type f -name '*.class' | \
|
||||
find java gnu org -type d -o -type f -name '*.class' | \
|
||||
sed -e '/\/\./d' -e '/\/xlib/d' | \
|
||||
$(ZIP) cfM0E@ $@
|
||||
|
||||
@ -977,7 +977,6 @@ java/util/TooManyListenersException.java \
|
||||
java/util/Vector.java \
|
||||
java/util/WeakHashMap.java
|
||||
|
||||
|
||||
## List of all .java files to be compiled. Please keep this list
|
||||
## alphabetical. Please put files from java/lang, java/io, and java/util
|
||||
## into core_java_source_files. Please put files from gnu/gcj/convert
|
||||
@ -1252,6 +1251,60 @@ java/util/zip/ZipException.java \
|
||||
java/util/zip/ZipFile.java \
|
||||
java/util/zip/ZipInputStream.java \
|
||||
java/util/zip/ZipOutputStream.java \
|
||||
org/w3c/dom/Attr.java \
|
||||
org/w3c/dom/CDATASection.java \
|
||||
org/w3c/dom/CharacterData.java \
|
||||
org/w3c/dom/Comment.java \
|
||||
org/w3c/dom/DOMException.java \
|
||||
org/w3c/dom/DOMImplementation.java \
|
||||
org/w3c/dom/Document.java \
|
||||
org/w3c/dom/DocumentFragment.java \
|
||||
org/w3c/dom/DocumentType.java \
|
||||
org/w3c/dom/Element.java \
|
||||
org/w3c/dom/Entity.java \
|
||||
org/w3c/dom/EntityReference.java \
|
||||
org/w3c/dom/NamedNodeMap.java \
|
||||
org/w3c/dom/Node.java \
|
||||
org/w3c/dom/NodeList.java \
|
||||
org/w3c/dom/Notation.java \
|
||||
org/w3c/dom/ProcessingInstruction.java \
|
||||
org/w3c/dom/Text.java \
|
||||
org/w3c/dom/ranges/DocumentRange.java \
|
||||
org/w3c/dom/ranges/Range.java \
|
||||
org/w3c/dom/ranges/RangeException.java \
|
||||
org/w3c/dom/traversal/DocumentTraversal.java \
|
||||
org/w3c/dom/traversal/NodeFilter.java \
|
||||
org/w3c/dom/traversal/NodeIterator.java \
|
||||
org/w3c/dom/traversal/TreeWalker.java \
|
||||
org/xml/sax/ext/DeclHandler.java \
|
||||
org/xml/sax/ext/LexicalHandler.java \
|
||||
org/xml/sax/helpers/AttributeListImpl.java \
|
||||
org/xml/sax/helpers/AttributesImpl.java \
|
||||
org/xml/sax/helpers/DefaultHandler.java \
|
||||
org/xml/sax/helpers/LocatorImpl.java \
|
||||
org/xml/sax/helpers/NamespaceSupport.java \
|
||||
org/xml/sax/helpers/ParserAdapter.java \
|
||||
org/xml/sax/helpers/ParserFactory.java \
|
||||
org/xml/sax/helpers/XMLFilterImpl.java \
|
||||
org/xml/sax/helpers/XMLReaderAdapter.java \
|
||||
org/xml/sax/helpers/XMLReaderFactory.java \
|
||||
org/xml/sax/AttributeList.java \
|
||||
org/xml/sax/Attributes.java \
|
||||
org/xml/sax/ContentHandler.java \
|
||||
org/xml/sax/DTDHandler.java \
|
||||
org/xml/sax/DocumentHandler.java \
|
||||
org/xml/sax/EntityResolver.java \
|
||||
org/xml/sax/ErrorHandler.java \
|
||||
org/xml/sax/HandlerBase.java \
|
||||
org/xml/sax/InputSource.java \
|
||||
org/xml/sax/Locator.java \
|
||||
org/xml/sax/Parser.java \
|
||||
org/xml/sax/SAXException.java \
|
||||
org/xml/sax/SAXNotRecognizedException.java \
|
||||
org/xml/sax/SAXNotSupportedException.java \
|
||||
org/xml/sax/SAXParseException.java \
|
||||
org/xml/sax/XMLFilter.java \
|
||||
org/xml/sax/XMLReader.java \
|
||||
$(awt_java_source_files) \
|
||||
$(convert_source_files)
|
||||
|
||||
|
1074
libjava/Makefile.in
1074
libjava/Makefile.in
File diff suppressed because one or more lines are too long
111
libjava/org/w3c/dom/Attr.java
Normal file
111
libjava/org/w3c/dom/Attr.java
Normal file
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* The <code>Attr</code> interface represents an attribute in an
|
||||
* <code>Element</code> object. Typically the allowable values for the
|
||||
* attribute are defined in a document type definition.
|
||||
* <p><code>Attr</code> objects inherit the <code>Node</code> interface, but
|
||||
* since they are not actually child nodes of the element they describe, the
|
||||
* DOM does not consider them part of the document tree. Thus, the
|
||||
* <code>Node</code> attributes <code>parentNode</code>,
|
||||
* <code>previousSibling</code>, and <code>nextSibling</code> have a
|
||||
* <code>null</code> value for <code>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,
|
||||
* <code>Attr</code> 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 and implementors 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.
|
||||
* <p> The attribute's effective value is determined as follows: if this
|
||||
* attribute has been explicitly assigned any value, that value is the
|
||||
* attribute's effective value; otherwise, if there is a declaration for
|
||||
* this attribute, and that declaration includes a default value, then that
|
||||
* default value is the attribute's effective value; otherwise, the
|
||||
* attribute does not exist on this element in the structure model until it
|
||||
* has been explicitly added. Note that the <code>nodeValue</code> attribute
|
||||
* on the <code>Attr</code> instance can also be used to retrieve the string
|
||||
* version of the attribute's value(s).
|
||||
* <p>In XML, where the value of an attribute can contain entity references,
|
||||
* the child nodes of the <code>Attr</code> node may be either
|
||||
* <code>Text</code> or <code>EntityReference</code> nodes (when these are
|
||||
* in use; see the description of <code>EntityReference</code> for
|
||||
* discussion). Because the DOM Core is not aware of attribute types, it
|
||||
* treats all attribute values as simple strings, even if the DTD or schema
|
||||
* declares them as having tokenized types.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Attr extends Node {
|
||||
/**
|
||||
* Returns the name of this attribute.
|
||||
*/
|
||||
public String getName();
|
||||
|
||||
/**
|
||||
* If this attribute was explicitly given a value in the original
|
||||
* document, this is <code>true</code>; otherwise, it is
|
||||
* <code>false</code>. Note that the implementation is in charge of this
|
||||
* attribute, not the user. If the user changes the value of the
|
||||
* attribute (even if it ends up having the same value as the default
|
||||
* value) then the <code>specified</code> flag is automatically flipped
|
||||
* to <code>true</code>. To re-specify the attribute as the default
|
||||
* value from the DTD, the user must delete the attribute. The
|
||||
* implementation will then make a new attribute available with
|
||||
* <code>specified</code> set to <code>false</code> and the default
|
||||
* value (if one exists).
|
||||
* <br>In summary: If the attribute has an assigned value in the document
|
||||
* then <code>specified</code> is <code>true</code>, and the value is
|
||||
* the assigned value. If the attribute has no assigned value in the
|
||||
* document and has a default value in the DTD, then
|
||||
* <code>specified</code> is <code>false</code>, and the value is the
|
||||
* default value in the DTD. If the attribute has no assigned value in
|
||||
* the document and has a value of #IMPLIED in the DTD, then the
|
||||
* attribute does not appear in the structure model of the document. If
|
||||
* the <code>ownerElement</code> attribute is <code>null</code> (i.e.
|
||||
* because it was just created or was set to <code>null</code> by the
|
||||
* various removal and cloning operations) <code>specified</code> is
|
||||
* <code>true</code>.
|
||||
*/
|
||||
public boolean getSpecified();
|
||||
|
||||
/**
|
||||
* On retrieval, the value of the attribute is returned as a string.
|
||||
* Character and general entity references are replaced with their
|
||||
* values. See also the method <code>getAttribute</code> on the
|
||||
* <code>Element</code> interface.
|
||||
* <br>On setting, this creates a <code>Text</code> node with the unparsed
|
||||
* contents of the string. I.e. any characters that an XML processor
|
||||
* would recognize as markup are instead treated as literal text. See
|
||||
* also the method <code>setAttribute</code> on the <code>Element</code>
|
||||
* interface.
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
|
||||
*/
|
||||
public String getValue();
|
||||
public void setValue(String value)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* The <code>Element</code> node this attribute is attached to or
|
||||
* <code>null</code> if this attribute is not in use.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Element getOwnerElement();
|
||||
|
||||
}
|
48
libjava/org/w3c/dom/CDATASection.java
Normal file
48
libjava/org/w3c/dom/CDATASection.java
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* CDATA sections are used to escape blocks of text containing characters that
|
||||
* would otherwise be regarded as markup. The only delimiter that is
|
||||
* recognized in a CDATA section is the "]]>" string that ends the CDATA
|
||||
* section. CDATA sections cannot be nested. Their primary purpose is for
|
||||
* including material such as XML fragments, without needing to escape all
|
||||
* the delimiters.
|
||||
* <p>The <code>DOMString</code> attribute of the <code>Text</code> node holds
|
||||
* the text that is contained by the CDATA section. Note that this may
|
||||
* contain characters that need to be escaped outside of CDATA sections and
|
||||
* that, depending on the character encoding ("charset") chosen for
|
||||
* serialization, it may be impossible to write out some characters as part
|
||||
* of a CDATA section.
|
||||
* <p> The <code>CDATASection</code> interface inherits from the
|
||||
* <code>CharacterData</code> interface through the <code>Text</code>
|
||||
* interface. Adjacent <code>CDATASection</code> nodes are not merged by use
|
||||
* of the <code>normalize</code> method of the <code>Node</code> interface.
|
||||
* Because no markup is recognized within a <code>CDATASection</code>,
|
||||
* character numeric references cannot be used as an escape mechanism when
|
||||
* serializing. Therefore, action needs to be taken when serializing a
|
||||
* <code>CDATASection</code> with a character encoding where some of the
|
||||
* contained characters cannot be represented. Failure to do so would not
|
||||
* produce well-formed XML.One potential solution in the serialization
|
||||
* process is to end the CDATA section before the character, output the
|
||||
* character using a character reference or entity reference, and open a new
|
||||
* CDATA section for any further characters in the text node. Note, however,
|
||||
* that some code conversion libraries at the time of writing do not return
|
||||
* an error or exception when a character is missing from the encoding,
|
||||
* making the task of ensuring that data is not corrupted on serialization
|
||||
* more difficult.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface CDATASection extends Text {
|
||||
}
|
144
libjava/org/w3c/dom/CharacterData.java
Normal file
144
libjava/org/w3c/dom/CharacterData.java
Normal file
@ -0,0 +1,144 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* The <code>CharacterData</code> interface extends Node with a set of
|
||||
* attributes and methods for accessing character data in the DOM. For
|
||||
* clarity this set is defined here rather than on each object that uses
|
||||
* these attributes and methods. No DOM objects correspond directly to
|
||||
* <code>CharacterData</code>, though <code>Text</code> and others do
|
||||
* inherit the interface from it. All <code>offsets</code> in this interface
|
||||
* start from <code>0</code>.
|
||||
* <p>As explained in the <code>DOMString</code> interface, text strings in
|
||||
* the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In
|
||||
* the following, the term 16-bit units is used whenever necessary to
|
||||
* indicate that indexing on CharacterData is done in 16-bit units.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface CharacterData extends Node {
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
public String getData()
|
||||
throws DOMException;
|
||||
public void setData(String data)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* The number of 16-bit units 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.
|
||||
*/
|
||||
public int getLength();
|
||||
|
||||
/**
|
||||
* Extracts a range of data from the node.
|
||||
* @param offsetStart offset of substring to extract.
|
||||
* @param countThe number of 16-bit units to extract.
|
||||
* @return The specified substring. If the sum of <code>offset</code> and
|
||||
* <code>count</code> exceeds the <code>length</code>, then all 16-bit
|
||||
* units to the end of the data are returned.
|
||||
* @exception DOMException
|
||||
* INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
|
||||
* negative or greater than the number of 16-bit units 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>.
|
||||
*/
|
||||
public String substringData(int offset,
|
||||
int count)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* 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 argThe <code>DOMString</code> to append.
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
||||
*/
|
||||
public void appendData(String arg)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Insert a string at the specified 16-bit unit offset.
|
||||
* @param offsetThe character offset at which to insert.
|
||||
* @param argThe <code>DOMString</code> to insert.
|
||||
* @exception DOMException
|
||||
* INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
|
||||
* negative or greater than the number of 16-bit units in
|
||||
* <code>data</code>.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
||||
*/
|
||||
public void insertData(int offset,
|
||||
String arg)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Remove a range of 16-bit units from the node. Upon success,
|
||||
* <code>data</code> and <code>length</code> reflect the change.
|
||||
* @param offsetThe offset from which to start removing.
|
||||
* @param countThe number of 16-bit units to delete. If the sum of
|
||||
* <code>offset</code> and <code>count</code> exceeds
|
||||
* <code>length</code> then all 16-bit units from <code>offset</code>
|
||||
* to the end of the data are deleted.
|
||||
* @exception DOMException
|
||||
* INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
|
||||
* negative or greater than the number of 16-bit units in
|
||||
* <code>data</code>, or if the specified <code>count</code> is
|
||||
* negative.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
||||
*/
|
||||
public void deleteData(int offset,
|
||||
int count)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Replace the characters starting at the specified 16-bit unit offset
|
||||
* with the specified string.
|
||||
* @param offsetThe offset from which to start replacing.
|
||||
* @param countThe number of 16-bit units to replace. If the sum of
|
||||
* <code>offset</code> and <code>count</code> exceeds
|
||||
* <code>length</code>, then all 16-bit units 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 argThe <code>DOMString</code> with which the range must be
|
||||
* replaced.
|
||||
* @exception DOMException
|
||||
* INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
|
||||
* negative or greater than the number of 16-bit units in
|
||||
* <code>data</code>, or if the specified <code>count</code> is
|
||||
* negative.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
||||
*/
|
||||
public void replaceData(int offset,
|
||||
int count,
|
||||
String arg)
|
||||
throws DOMException;
|
||||
|
||||
}
|
24
libjava/org/w3c/dom/Comment.java
Normal file
24
libjava/org/w3c/dom/Comment.java
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* This interface inherits from <code>CharacterData</code> and represents the
|
||||
* content of a comment, i.e., all the characters between the starting '
|
||||
* <code><!--</code>' and ending '<code>--></code>'. Note that this is
|
||||
* the definition of a comment in XML, and, in practice, HTML, although some
|
||||
* HTML tools may implement the full SGML comment structure.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Comment extends CharacterData {
|
||||
}
|
117
libjava/org/w3c/dom/DOMException.java
Normal file
117
libjava/org/w3c/dom/DOMException.java
Normal file
@ -0,0 +1,117 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* DOM operations only raise exceptions in "exceptional" circumstances, i.e.,
|
||||
* when an operation is impossible to perform (either for logical reasons,
|
||||
* because data is lost, or because the implementation has become unstable).
|
||||
* In general, DOM methods return specific error values in ordinary
|
||||
* processing situations, such as out-of-bound errors when using
|
||||
* <code>NodeList</code>.
|
||||
* <p>Implementations should raise other exceptions under other circumstances.
|
||||
* For example, implementations should raise an implementation-dependent
|
||||
* exception if a <code>null</code> argument is passed.
|
||||
* <p>Some languages and object systems do not support the concept of
|
||||
* exceptions. For such systems, error conditions may be indicated using
|
||||
* native error reporting mechanisms. For some bindings, for example,
|
||||
* methods may return error codes similar to those listed in the
|
||||
* corresponding method descriptions.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public class DOMException extends RuntimeException {
|
||||
public DOMException(short code, String message) {
|
||||
super(message);
|
||||
this.code = code;
|
||||
}
|
||||
/** @serial */
|
||||
public short code;
|
||||
// ExceptionCode
|
||||
/**
|
||||
* If index or size is negative, or greater than the allowed value
|
||||
*/
|
||||
public static final short INDEX_SIZE_ERR = 1;
|
||||
/**
|
||||
* If the specified range of text does not fit into a DOMString
|
||||
*/
|
||||
public static final short DOMSTRING_SIZE_ERR = 2;
|
||||
/**
|
||||
* If any node is inserted somewhere it doesn't belong
|
||||
*/
|
||||
public static final short HIERARCHY_REQUEST_ERR = 3;
|
||||
/**
|
||||
* If a node is used in a different document than the one that created it
|
||||
* (that doesn't support it)
|
||||
*/
|
||||
public static final short WRONG_DOCUMENT_ERR = 4;
|
||||
/**
|
||||
* If an invalid or illegal character is specified, such as in a name. See
|
||||
* production 2 in the XML specification for the definition of a legal
|
||||
* character, and production 5 for the definition of a legal name
|
||||
* character.
|
||||
*/
|
||||
public static final short INVALID_CHARACTER_ERR = 5;
|
||||
/**
|
||||
* If data is specified for a node which does not support data
|
||||
*/
|
||||
public static final short NO_DATA_ALLOWED_ERR = 6;
|
||||
/**
|
||||
* If an attempt is made to modify an object where modifications are not
|
||||
* allowed
|
||||
*/
|
||||
public static final short NO_MODIFICATION_ALLOWED_ERR = 7;
|
||||
/**
|
||||
* If an attempt is made to reference a node in a context where it does
|
||||
* not exist
|
||||
*/
|
||||
public static final short NOT_FOUND_ERR = 8;
|
||||
/**
|
||||
* If the implementation does not support the requested type of object or
|
||||
* operation.
|
||||
*/
|
||||
public static final short NOT_SUPPORTED_ERR = 9;
|
||||
/**
|
||||
* If an attempt is made to add an attribute that is already in use
|
||||
* elsewhere
|
||||
*/
|
||||
public static final short INUSE_ATTRIBUTE_ERR = 10;
|
||||
/**
|
||||
* If an attempt is made to use an object that is not, or is no longer,
|
||||
* usable.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public static final short INVALID_STATE_ERR = 11;
|
||||
/**
|
||||
* If an invalid or illegal string is specified.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public static final short SYNTAX_ERR = 12;
|
||||
/**
|
||||
* If an attempt is made to modify the type of the underlying object.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public static final short INVALID_MODIFICATION_ERR = 13;
|
||||
/**
|
||||
* If an attempt is made to create or change an object in a way which is
|
||||
* incorrect with regard to namespaces.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public static final short NAMESPACE_ERR = 14;
|
||||
/**
|
||||
* If a parameter or an operation is not supported by the underlying
|
||||
* object.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public static final short INVALID_ACCESS_ERR = 15;
|
||||
|
||||
}
|
100
libjava/org/w3c/dom/DOMImplementation.java
Normal file
100
libjava/org/w3c/dom/DOMImplementation.java
Normal file
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* The <code>DOMImplementation</code> interface provides a number of methods
|
||||
* for performing operations that are independent of any particular instance
|
||||
* of the document object model.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface DOMImplementation {
|
||||
/**
|
||||
* Test if the DOM implementation implements a specific feature.
|
||||
* @param featureThe name of the feature to test (case-insensitive). The
|
||||
* values used by DOM features are defined throughout the DOM Level 2
|
||||
* specifications and listed in the section. The name must be an XML
|
||||
* name. To avoid possible conflicts, as a convention, names referring
|
||||
* to features defined outside the DOM specification should be made
|
||||
* unique by reversing the name of the Internet domain name of the
|
||||
* person (or the organization that the person belongs to) who defines
|
||||
* the feature, component by component, and using this as a prefix.
|
||||
* For instance, the W3C SVG Working Group defines the feature
|
||||
* "org.w3c.dom.svg".
|
||||
* @param versionThis is the version number of the feature to test. In
|
||||
* Level 2, the string can be either "2.0" or "1.0". If the version is
|
||||
* not specified, supporting any version of the feature causes the
|
||||
* method to return <code>true</code>.
|
||||
* @return <code>true</code> if the feature is implemented in the
|
||||
* specified version, <code>false</code> otherwise.
|
||||
*/
|
||||
public boolean hasFeature(String feature,
|
||||
String version);
|
||||
|
||||
/**
|
||||
* Creates an empty <code>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>DocumentType</code>.
|
||||
* <br>HTML-only DOM implementations do not need to implement this method.
|
||||
* @param qualifiedNameThe qualified name of the document type to be
|
||||
* created.
|
||||
* @param publicIdThe external subset public identifier.
|
||||
* @param systemIdThe external subset system identifier.
|
||||
* @return A new <code>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.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public DocumentType createDocumentType(String qualifiedName,
|
||||
String publicId,
|
||||
String systemId)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Creates an XML <code>Document</code> object of the specified type with
|
||||
* its document element. HTML-only DOM implementations do not need to
|
||||
* implement this method.
|
||||
* @param namespaceURIThe namespace URI of the document element to create.
|
||||
* @param qualifiedNameThe qualified name of the document element to be
|
||||
* created.
|
||||
* @param doctypeThe type of document to be created or <code>null</code>.
|
||||
* 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>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, if the <code>qualifiedName</code> has a prefix and the
|
||||
* <code>namespaceURI</code> is <code>null</code>, 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 or was created from a different
|
||||
* implementation.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Document createDocument(String namespaceURI,
|
||||
String qualifiedName,
|
||||
DocumentType doctype)
|
||||
throws DOMException;
|
||||
|
||||
}
|
365
libjava/org/w3c/dom/Document.java
Normal file
365
libjava/org/w3c/dom/Document.java
Normal file
@ -0,0 +1,365 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* The <code>Document</code> interface represents the entire HTML or XML
|
||||
* document. Conceptually, it 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.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Document extends Node {
|
||||
/**
|
||||
* The Document Type Declaration (see <code>DocumentType</code>)
|
||||
* associated with this document. For HTML documents as well as XML
|
||||
* documents without a document type declaration this returns
|
||||
* <code>null</code>. The DOM Level 2 does not support editing the
|
||||
* Document Type Declaration. <code>docType</code> cannot be altered in
|
||||
* any way, including through the use of methods inherited from the
|
||||
* <code>Node</code> interface, such as <code>insertNode</code> or
|
||||
* <code>removeNode</code>.
|
||||
*/
|
||||
public DocumentType getDoctype();
|
||||
|
||||
/**
|
||||
* The <code>DOMImplementation</code> object that handles this document. A
|
||||
* DOM application may use objects from multiple implementations.
|
||||
*/
|
||||
public DOMImplementation getImplementation();
|
||||
|
||||
/**
|
||||
* This is a convenience attribute that allows direct access to the child
|
||||
* node that is the root element of the document. For HTML documents,
|
||||
* this is the element with the tagName "HTML".
|
||||
*/
|
||||
public Element getDocumentElement();
|
||||
|
||||
/**
|
||||
* Creates an element of the type specified. Note that the instance
|
||||
* returned implements the <code>Element</code> interface, so attributes
|
||||
* can be specified directly on the returned object.
|
||||
* <br>In addition, if there are known attributes with default values,
|
||||
* <code>Attr</code> nodes representing them are automatically created
|
||||
* and attached to the element.
|
||||
* <br>To create an element with a qualified name and namespace URI, use
|
||||
* the <code>createElementNS</code> method.
|
||||
* @param tagNameThe name of the element type to instantiate. For XML,
|
||||
* this is case-sensitive. For HTML, the <code>tagName</code>
|
||||
* parameter may be provided in any case, but it must be mapped to the
|
||||
* canonical uppercase form by the DOM implementation.
|
||||
* @return A new <code>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>.
|
||||
* @exception DOMException
|
||||
* INVALID_CHARACTER_ERR: Raised if the specified name contains an
|
||||
* illegal character.
|
||||
*/
|
||||
public Element createElement(String tagName)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Creates an empty <code>DocumentFragment</code> object.
|
||||
* @return A new <code>DocumentFragment</code>.
|
||||
*/
|
||||
public DocumentFragment createDocumentFragment();
|
||||
|
||||
/**
|
||||
* Creates a <code>Text</code> node given the specified string.
|
||||
* @param dataThe data for the node.
|
||||
* @return The new <code>Text</code> object.
|
||||
*/
|
||||
public Text createTextNode(String data);
|
||||
|
||||
/**
|
||||
* Creates a <code>Comment</code> node given the specified string.
|
||||
* @param dataThe data for the node.
|
||||
* @return The new <code>Comment</code> object.
|
||||
*/
|
||||
public Comment createComment(String data);
|
||||
|
||||
/**
|
||||
* Creates a <code>CDATASection</code> node whose value is the specified
|
||||
* string.
|
||||
* @param dataThe data for the <code>CDATASection</code> contents.
|
||||
* @return The new <code>CDATASection</code> object.
|
||||
* @exception DOMException
|
||||
* NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
|
||||
*/
|
||||
public CDATASection createCDATASection(String data)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Creates a <code>ProcessingInstruction</code> node given the specified
|
||||
* name and data strings.
|
||||
* @param targetThe target part of the processing instruction.
|
||||
* @param dataThe data for the node.
|
||||
* @return The new <code>ProcessingInstruction</code> object.
|
||||
* @exception DOMException
|
||||
* INVALID_CHARACTER_ERR: Raised if the specified target contains an
|
||||
* illegal character.
|
||||
* <br>NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
|
||||
*/
|
||||
public ProcessingInstruction createProcessingInstruction(String target,
|
||||
String data)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Creates an <code>Attr</code> of the given name. Note that the
|
||||
* <code>Attr</code> instance can then be set on an <code>Element</code>
|
||||
* using the <code>setAttributeNode</code> method.
|
||||
* <br>To create an attribute with a qualified name and namespace URI, use
|
||||
* the <code>createAttributeNS</code> method.
|
||||
* @param nameThe name of the attribute.
|
||||
* @return A new <code>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>. The value of the attribute is the empty string.
|
||||
* @exception DOMException
|
||||
* INVALID_CHARACTER_ERR: Raised if the specified name contains an
|
||||
* illegal character.
|
||||
*/
|
||||
public Attr createAttribute(String name)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Creates an <code>EntityReference</code> object. In addition, if the
|
||||
* referenced entity is known, the child list of the
|
||||
* <code>EntityReference</code> node is made the same as that of the
|
||||
* corresponding <code>Entity</code> node.If any descendant of the
|
||||
* <code>Entity</code> node has an unbound namespace prefix, the
|
||||
* corresponding descendant of the created <code>EntityReference</code>
|
||||
* node is also unbound; (its <code>namespaceURI</code> is
|
||||
* <code>null</code>). The DOM Level 2 does not support any mechanism to
|
||||
* resolve namespace prefixes.
|
||||
* @param nameThe name of the entity to reference.
|
||||
* @return The new <code>EntityReference</code> object.
|
||||
* @exception DOMException
|
||||
* INVALID_CHARACTER_ERR: Raised if the specified name contains an
|
||||
* illegal character.
|
||||
* <br>NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
|
||||
*/
|
||||
public EntityReference createEntityReference(String name)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns a <code>NodeList</code> of all the <code>Elements</code> with a
|
||||
* given tag name in the order in which they are encountered in a
|
||||
* preorder traversal of the <code>Document</code> tree.
|
||||
* @param tagnameThe name of the tag to match on. The special value "*"
|
||||
* matches all tags.
|
||||
* @return A new <code>NodeList</code> object containing all the matched
|
||||
* <code>Elements</code>.
|
||||
*/
|
||||
public NodeList getElementsByTagName(String tagname);
|
||||
|
||||
/**
|
||||
* 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 (<code>prefix</code>,
|
||||
* <code>localName</code>, and <code>namespaceURI</code>). As in the
|
||||
* <code>cloneNode</code> operation on a <code>Node</code>, the source
|
||||
* node is not altered.
|
||||
* <br>Additional information is copied as appropriate to the
|
||||
* <code>nodeType</code>, attempting to mirror the behavior expected if
|
||||
* a fragment of XML or HTML source was copied from one document to
|
||||
* another, recognizing that the two documents may have different DTDs
|
||||
* in the XML case. The following list describes the specifics for each
|
||||
* type of node.
|
||||
* <dl>
|
||||
* <dt>ATTRIBUTE_NODE</dt>
|
||||
* <dd>The <code>ownerElement</code> attribute
|
||||
* is set to <code>null</code> and the <code>specified</code> flag is
|
||||
* set to <code>true</code> on the generated <code>Attr</code>. The
|
||||
* descendants of the source <code>Attr</code> are recursively imported
|
||||
* and the resulting nodes reassembled to form the corresponding subtree.
|
||||
* Note that the <code>deep</code> parameter has no effect on
|
||||
* <code>Attr</code> nodes; they always carry their children with them
|
||||
* when imported.</dd>
|
||||
* <dt>DOCUMENT_FRAGMENT_NODE</dt>
|
||||
* <dd>If the <code>deep</code> option
|
||||
* was set to <code>true</code>, the descendants of the source element
|
||||
* are recursively imported and the resulting nodes reassembled to form
|
||||
* the corresponding subtree. Otherwise, this simply generates an empty
|
||||
* <code>DocumentFragment</code>.</dd>
|
||||
* <dt>DOCUMENT_NODE</dt>
|
||||
* <dd><code>Document</code>
|
||||
* nodes cannot be imported.</dd>
|
||||
* <dt>DOCUMENT_TYPE_NODE</dt>
|
||||
* <dd><code>DocumentType</code>
|
||||
* nodes cannot be imported.</dd>
|
||||
* <dt>ELEMENT_NODE</dt>
|
||||
* <dd>Specified attribute nodes of the
|
||||
* source element are imported, and the generated <code>Attr</code>
|
||||
* nodes are attached to the generated <code>Element</code>. Default
|
||||
* attributes are not copied, though if the document being imported into
|
||||
* defines default attributes for this element name, those are assigned.
|
||||
* If the <code>importNode</code> <code>deep</code> parameter was set to
|
||||
* <code>true</code>, the descendants of the source element are
|
||||
* recursively imported and the resulting nodes reassembled to form the
|
||||
* corresponding subtree.</dd>
|
||||
* <dt>ENTITY_NODE</dt>
|
||||
* <dd><code>Entity</code> nodes can be
|
||||
* imported, however in the current release of the DOM the
|
||||
* <code>DocumentType</code> is readonly. Ability to add these imported
|
||||
* nodes to a <code>DocumentType</code> will be considered for addition
|
||||
* to a future release of the DOM.On import, the <code>publicId</code>,
|
||||
* <code>systemId</code>, and <code>notationName</code> attributes are
|
||||
* copied. If a <code>deep</code> import is requested, the descendants
|
||||
* of the the source <code>Entity</code> are recursively imported and
|
||||
* the resulting nodes reassembled to form the corresponding subtree.</dd>
|
||||
* <dt>
|
||||
* ENTITY_REFERENCE_NODE</dt>
|
||||
* <dd>Only the <code>EntityReference</code> itself is
|
||||
* copied, even if a <code>deep</code> import is requested, since the
|
||||
* source and destination documents might have defined the entity
|
||||
* differently. If the document being imported into provides a
|
||||
* definition for this entity name, its value is assigned.</dd>
|
||||
* <dt>NOTATION_NODE</dt>
|
||||
* <dd>
|
||||
* <code>Notation</code> nodes can be imported, however in the current
|
||||
* release of the DOM the <code>DocumentType</code> is readonly. Ability
|
||||
* to add these imported nodes to a <code>DocumentType</code> will be
|
||||
* considered for addition to a future release of the DOM.On import, the
|
||||
* <code>publicId</code> and <code>systemId</code> attributes are copied.
|
||||
* Note that the <code>deep</code> parameter has no effect on
|
||||
* <code>Notation</code> nodes since they never have any children.</dd>
|
||||
* <dt>
|
||||
* PROCESSING_INSTRUCTION_NODE</dt>
|
||||
* <dd>The imported node copies its
|
||||
* <code>target</code> and <code>data</code> values from those of the
|
||||
* source node.</dd>
|
||||
* <dt>TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE</dt>
|
||||
* <dd>These three
|
||||
* types of nodes inheriting from <code>CharacterData</code> copy their
|
||||
* <code>data</code> and <code>length</code> attributes from those of
|
||||
* the source node.</dd>
|
||||
*
|
||||
* @param importedNodeThe node to import.
|
||||
* @param deepIf <code>true</code>, recursively import the subtree under
|
||||
* the specified node; if <code>false</code>, import only the node
|
||||
* itself, as explained above. This has no effect on <code>Attr</code>
|
||||
* , <code>EntityReference</code>, and <code>Notation</code> nodes.
|
||||
* @return The imported node that belongs to this <code>Document</code>.
|
||||
* @exception DOMException
|
||||
* NOT_SUPPORTED_ERR: Raised if the type of node being imported is not
|
||||
* supported.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Node importNode(Node importedNode,
|
||||
boolean deep)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Creates an element of the given qualified name and namespace URI.
|
||||
* HTML-only DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the element to create.
|
||||
* @param qualifiedNameThe qualified name of the element type to
|
||||
* instantiate.
|
||||
* @return A new <code>Element</code> object with the following
|
||||
* attributes:AttributeValue<code>Node.nodeName</code>
|
||||
* <code>qualifiedName</code><code>Node.namespaceURI</code>
|
||||
* <code>namespaceURI</code><code>Node.prefix</code>prefix, extracted
|
||||
* from <code>qualifiedName</code>, or <code>null</code> if there is
|
||||
* no prefix<code>Node.localName</code>local name, extracted from
|
||||
* <code>qualifiedName</code><code>Element.tagName</code>
|
||||
* <code>qualifiedName</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, if the <code>qualifiedName</code> has a prefix and the
|
||||
* <code>namespaceURI</code> is <code>null</code>, 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" .
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Element createElementNS(String namespaceURI,
|
||||
String qualifiedName)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Creates an attribute of the given qualified name and namespace URI.
|
||||
* HTML-only DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the attribute to create.
|
||||
* @param qualifiedNameThe qualified name of the attribute to instantiate.
|
||||
* @return A new <code>Attr</code> object with the following attributes:
|
||||
* AttributeValue<code>Node.nodeName</code>qualifiedName
|
||||
* <code>Node.namespaceURI</code><code>namespaceURI</code>
|
||||
* <code>Node.prefix</code>prefix, extracted from
|
||||
* <code>qualifiedName</code>, or <code>null</code> if there is no
|
||||
* prefix<code>Node.localName</code>local name, extracted from
|
||||
* <code>qualifiedName</code><code>Attr.name</code>
|
||||
* <code>qualifiedName</code><code>Node.nodeValue</code>the empty
|
||||
* string
|
||||
* @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>, 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", or if the
|
||||
* <code>qualifiedName</code> is "xmlns" and the
|
||||
* <code>namespaceURI</code> is different from "
|
||||
* http://www.w3.org/2000/xmlns/".
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Attr createAttributeNS(String namespaceURI,
|
||||
String qualifiedName)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns a <code>NodeList</code> of all the <code>Elements</code> with a
|
||||
* given local name and namespace URI in the order in which they are
|
||||
* encountered in a preorder traversal of the <code>Document</code> tree.
|
||||
* @param namespaceURIThe namespace URI of the elements to match on. The
|
||||
* special value "*" matches all namespaces.
|
||||
* @param localNameThe local name of the elements to match on. The
|
||||
* special value "*" matches all local names.
|
||||
* @return A new <code>NodeList</code> object containing all the matched
|
||||
* <code>Elements</code>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public NodeList getElementsByTagNameNS(String namespaceURI,
|
||||
String localName);
|
||||
|
||||
/**
|
||||
* Returns the <code>Element</code> whose <code>ID</code> 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>. 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>.
|
||||
* @param elementIdThe unique <code>id</code> value for an element.
|
||||
* @return The matching element.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Element getElementById(String elementId);
|
||||
|
||||
}
|
52
libjava/org/w3c/dom/DocumentFragment.java
Normal file
52
libjava/org/w3c/dom/DocumentFragment.java
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* <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
|
||||
* fulfill 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>.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface DocumentFragment extends Node {
|
||||
}
|
79
libjava/org/w3c/dom/DocumentType.java
Normal file
79
libjava/org/w3c/dom/DocumentType.java
Normal file
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* Each <code>Document</code> has a <code>doctype</code> attribute whose value
|
||||
* is either <code>null</code> or a <code>DocumentType</code> object. The
|
||||
* <code>DocumentType</code> interface in the DOM Core provides an interface
|
||||
* to the list of entities that are defined for the document, and little
|
||||
* else because the effect of namespaces and the various XML schema efforts
|
||||
* on DTD representation are not clearly understood as of this writing.
|
||||
* <p>The DOM Level 2 doesn't support editing <code>DocumentType</code> nodes.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface DocumentType extends Node {
|
||||
/**
|
||||
* The name of DTD; i.e., the name immediately following the
|
||||
* <code>DOCTYPE</code> keyword.
|
||||
*/
|
||||
public String getName();
|
||||
|
||||
/**
|
||||
* A <code>NamedNodeMap</code> containing the general entities, both
|
||||
* external and internal, declared in the DTD. Parameter entities are
|
||||
* not contained. Duplicates are discarded. For example in:
|
||||
* <pre><!DOCTYPE
|
||||
* ex SYSTEM "ex.dtd" [ <!ENTITY foo "foo"> <!ENTITY bar
|
||||
* "bar"> <!ENTITY bar "bar2"> <!ENTITY % baz "baz">
|
||||
* ]> <ex/></pre>
|
||||
* the interface provides access to <code>foo</code>
|
||||
* and the first declaration of <code>bar</code> but not the second
|
||||
* declaration of <code>bar</code> or <code>baz</code>. Every node in
|
||||
* this map also implements the <code>Entity</code> interface.
|
||||
* <br>The DOM Level 2 does not support editing entities, therefore
|
||||
* <code>entities</code> cannot be altered in any way.
|
||||
*/
|
||||
public NamedNodeMap getEntities();
|
||||
|
||||
/**
|
||||
* A <code>NamedNodeMap</code> containing the notations declared in the
|
||||
* DTD. Duplicates are discarded. Every node in this map also implements
|
||||
* the <code>Notation</code> interface.
|
||||
* <br>The DOM Level 2 does not support editing notations, therefore
|
||||
* <code>notations</code> cannot be altered in any way.
|
||||
*/
|
||||
public NamedNodeMap getNotations();
|
||||
|
||||
/**
|
||||
* The public identifier of the external subset.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public String getPublicId();
|
||||
|
||||
/**
|
||||
* The system identifier of the external subset.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public String getSystemId();
|
||||
|
||||
/**
|
||||
* The internal subset as a string.The actual content returned depends on
|
||||
* how much information is available to the implementation. This may
|
||||
* vary depending on various parameters, including the XML processor
|
||||
* used to build the document.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public String getInternalSubset();
|
||||
|
||||
}
|
302
libjava/org/w3c/dom/Element.java
Normal file
302
libjava/org/w3c/dom/Element.java
Normal file
@ -0,0 +1,302 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* The <code>Element</code> interface represents an element in an HTML or XML
|
||||
* document. Elements may have attributes associated with them; since the
|
||||
* <code>Element</code> interface inherits from <code>Node</code>, the
|
||||
* generic <code>Node</code> interface attribute <code>attributes</code> may
|
||||
* be used to retrieve the set of all attributes for an element. There are
|
||||
* methods on the <code>Element</code> interface to retrieve either an
|
||||
* <code>Attr</code> object by name or an attribute value by name. In XML,
|
||||
* where an attribute value may contain entity references, an
|
||||
* <code>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.In
|
||||
* DOM Level 2, the method <code>normalize</code> is inherited from the
|
||||
* <code>Node</code> interface where it was moved.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Element extends Node {
|
||||
/**
|
||||
* The name of the element. For example, in:
|
||||
* <pre> <elementExample
|
||||
* id="demo"> ... </elementExample> , </pre>
|
||||
* <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. The
|
||||
* HTML DOM returns the <code>tagName</code> of an HTML element in the
|
||||
* canonical uppercase form, regardless of the case in the source HTML
|
||||
* document.
|
||||
*/
|
||||
public String getTagName();
|
||||
|
||||
/**
|
||||
* Retrieves an attribute value by name.
|
||||
* @param nameThe name of the attribute to retrieve.
|
||||
* @return The <code>Attr</code> value as a string, or the empty string
|
||||
* if that attribute does not have a specified or default value.
|
||||
*/
|
||||
public String getAttribute(String name);
|
||||
|
||||
/**
|
||||
* 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>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.
|
||||
* <br>To set an attribute with a qualified name and namespace URI, use
|
||||
* the <code>setAttributeNS</code> method.
|
||||
* @param nameThe name of the attribute to create or alter.
|
||||
* @param valueValue 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.
|
||||
*/
|
||||
public void setAttribute(String name,
|
||||
String value)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* 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 nameThe name of the attribute to remove.
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
||||
*/
|
||||
public void removeAttribute(String name)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Retrieves an attribute node by name.
|
||||
* <br>To retrieve an attribute node by qualified name and namespace URI,
|
||||
* use the <code>getAttributeNodeNS</code> method.
|
||||
* @param nameThe name (<code>nodeName</code>) of the attribute to
|
||||
* retrieve.
|
||||
* @return The <code>Attr</code> node with the specified name (
|
||||
* <code>nodeName</code>) or <code>null</code> if there is no such
|
||||
* attribute.
|
||||
*/
|
||||
public Attr getAttributeNode(String name);
|
||||
|
||||
/**
|
||||
* Adds a new attribute node. If an attribute with that name (
|
||||
* <code>nodeName</code>) is already present in the element, it is
|
||||
* replaced by the new one.
|
||||
* <br>To add a new attribute node with a qualified name and namespace
|
||||
* URI, use the <code>setAttributeNodeNS</code> method.
|
||||
* @param newAttrThe <code>Attr</code> node to add to the attribute list.
|
||||
* @return If the <code>newAttr</code> attribute replaces an existing
|
||||
* attribute, the replaced <code>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>Element</code> object. The DOM user must
|
||||
* explicitly clone <code>Attr</code> nodes to re-use them in other
|
||||
* elements.
|
||||
*/
|
||||
public Attr setAttributeNode(Attr newAttr)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Removes the specified attribute node. If the removed <code>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 oldAttrThe <code>Attr</code> node to remove from the attribute
|
||||
* list.
|
||||
* @return The <code>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.
|
||||
*/
|
||||
public Attr removeAttributeNode(Attr oldAttr)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns a <code>NodeList</code> of all descendant <code>Elements</code>
|
||||
* with a given tag name, in the order in which they are encountered in
|
||||
* a preorder traversal of this <code>Element</code> tree.
|
||||
* @param nameThe name of the tag to match on. The special value "*"
|
||||
* matches all tags.
|
||||
* @return A list of matching <code>Element</code> nodes.
|
||||
*/
|
||||
public NodeList getElementsByTagName(String name);
|
||||
|
||||
/**
|
||||
* Retrieves an attribute value by local name and namespace URI. HTML-only
|
||||
* DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the attribute to retrieve.
|
||||
* @param localNameThe local name of the attribute to retrieve.
|
||||
* @return The <code>Attr</code> value as a string, or the empty string
|
||||
* if that attribute does not have a specified or default value.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public String getAttributeNS(String namespaceURI,
|
||||
String localName);
|
||||
|
||||
/**
|
||||
* 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>Attr</code> node plus any <code>Text</code> and
|
||||
* <code>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.
|
||||
* <br>HTML-only DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the attribute to create or
|
||||
* alter.
|
||||
* @param qualifiedNameThe qualified name of the attribute to create or
|
||||
* alter.
|
||||
* @param valueThe 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>, 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", or if the
|
||||
* <code>qualifiedName</code> is "xmlns" and the
|
||||
* <code>namespaceURI</code> is different from "
|
||||
* http://www.w3.org/2000/xmlns/".
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public void setAttributeNS(String namespaceURI,
|
||||
String qualifiedName,
|
||||
String value)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* <br>HTML-only DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the attribute to remove.
|
||||
* @param localNameThe local name of the attribute to remove.
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public void removeAttributeNS(String namespaceURI,
|
||||
String localName)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Retrieves an <code>Attr</code> node by local name and namespace URI.
|
||||
* HTML-only DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the attribute to retrieve.
|
||||
* @param localNameThe local name of the attribute to retrieve.
|
||||
* @return The <code>Attr</code> node with the specified attribute local
|
||||
* name and namespace URI or <code>null</code> if there is no such
|
||||
* attribute.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Attr getAttributeNodeNS(String namespaceURI,
|
||||
String localName);
|
||||
|
||||
/**
|
||||
* Adds a new attribute. If an attribute with that local name and that
|
||||
* namespace URI is already present in the element, it is replaced by
|
||||
* the new one.
|
||||
* <br>HTML-only DOM implementations do not need to implement this method.
|
||||
* @param newAttrThe <code>Attr</code> node to add to the attribute list.
|
||||
* @return If the <code>newAttr</code> attribute replaces an existing
|
||||
* attribute with the same local name and namespace URI, the replaced
|
||||
* <code>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>Element</code> object. The DOM user must
|
||||
* explicitly clone <code>Attr</code> nodes to re-use them in other
|
||||
* elements.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Attr setAttributeNodeNS(Attr newAttr)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns a <code>NodeList</code> of all the descendant
|
||||
* <code>Elements</code> with a given local name and namespace URI in
|
||||
* the order in which they are encountered in a preorder traversal of
|
||||
* this <code>Element</code> tree.
|
||||
* <br>HTML-only DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the elements to match on. The
|
||||
* special value "*" matches all namespaces.
|
||||
* @param localNameThe local name of the elements to match on. The
|
||||
* special value "*" matches all local names.
|
||||
* @return A new <code>NodeList</code> object containing all the matched
|
||||
* <code>Elements</code>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public NodeList getElementsByTagNameNS(String namespaceURI,
|
||||
String localName);
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> when an attribute with a given name is
|
||||
* specified on this element or has a default value, <code>false</code>
|
||||
* otherwise.
|
||||
* @param nameThe name of the attribute to look for.
|
||||
* @return <code>true</code> if an attribute with the given name is
|
||||
* specified on this element or has a default value, <code>false</code>
|
||||
* otherwise.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public boolean hasAttribute(String name);
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> when an attribute with a given local name and
|
||||
* namespace URI is specified on this element or has a default value,
|
||||
* <code>false</code> otherwise. HTML-only DOM implementations do not
|
||||
* need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the attribute to look for.
|
||||
* @param localNameThe local name of the attribute to look for.
|
||||
* @return <code>true</code> if an attribute with the given local name
|
||||
* and namespace URI is specified or has a default value on this
|
||||
* element, <code>false</code> otherwise.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public boolean hasAttributeNS(String namespaceURI,
|
||||
String localName);
|
||||
|
||||
}
|
68
libjava/org/w3c/dom/Entity.java
Normal file
68
libjava/org/w3c/dom/Entity.java
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* 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>XML does not mandate that a non-validating XML processor read and
|
||||
* process entity declarations made in the external subset or declared in
|
||||
* external parameter entities. This means that parsed entities declared in
|
||||
* the external subset need not be expanded by some classes of applications,
|
||||
* and that the replacement value of the entity may not be available. When
|
||||
* the replacement value is available, the corresponding <code>Entity</code>
|
||||
* node's child list represents the structure of that replacement text.
|
||||
* Otherwise, the child list is empty.
|
||||
* <p>The DOM Level 2 does not support editing <code>Entity</code> nodes; if a
|
||||
* user wants to make changes to the contents of an <code>Entity</code>,
|
||||
* every related <code>EntityReference</code> node has to be replaced in the
|
||||
* structure model by a clone of the <code>Entity</code>'s contents, and
|
||||
* then the desired changes must be made to each of those clones instead.
|
||||
* <code>Entity</code> nodes and all their descendants are readonly.
|
||||
* <p>An <code>Entity</code> node does not have any parent.If the entity
|
||||
* contains an unbound namespace prefix, the <code>namespaceURI</code> of
|
||||
* the corresponding node in the <code>Entity</code> node subtree is
|
||||
* <code>null</code>. The same is true for <code>EntityReference</code>
|
||||
* nodes that refer to this entity, when they are created using the
|
||||
* <code>createEntityReference</code> method of the <code>Document</code>
|
||||
* interface. The DOM Level 2 does not support any mechanism to resolve
|
||||
* namespace prefixes.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Entity extends Node {
|
||||
/**
|
||||
* The public identifier associated with the entity, if specified. If the
|
||||
* public identifier was not specified, this is <code>null</code>.
|
||||
*/
|
||||
public String getPublicId();
|
||||
|
||||
/**
|
||||
* The system identifier associated with the entity, if specified. If the
|
||||
* system identifier was not specified, this is <code>null</code>.
|
||||
*/
|
||||
public String getSystemId();
|
||||
|
||||
/**
|
||||
* For unparsed entities, the name of the notation for the entity. For
|
||||
* parsed entities, this is <code>null</code>.
|
||||
*/
|
||||
public String getNotationName();
|
||||
|
||||
}
|
39
libjava/org/w3c/dom/EntityReference.java
Normal file
39
libjava/org/w3c/dom/EntityReference.java
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* <code>EntityReference</code> objects may be inserted into the structure
|
||||
* model when an entity reference is in the source document, or when the
|
||||
* user wishes to insert an entity reference. Note that character references
|
||||
* and references to predefined entities are considered to be expanded by
|
||||
* the HTML or XML processor so that characters are represented by their
|
||||
* Unicode equivalent rather than by an entity reference. Moreover, the XML
|
||||
* processor may completely expand references to entities while building the
|
||||
* structure model, instead of providing <code>EntityReference</code>
|
||||
* objects. If it does provide such objects, then for a given
|
||||
* <code>EntityReference</code> node, it may be that there is no
|
||||
* <code>Entity</code> node representing the referenced entity. If such an
|
||||
* <code>Entity</code> exists, then the subtree of the
|
||||
* <code>EntityReference</code> node is in general a copy of the
|
||||
* <code>Entity</code> node subtree. However, this may not be true when an
|
||||
* entity contains an unbound namespace prefix. In such a case, because the
|
||||
* namespace prefix resolution depends on where the entity reference is, the
|
||||
* descendants of the <code>EntityReference</code> node may be bound to
|
||||
* different namespace URIs.
|
||||
* <p>As for <code>Entity</code> nodes, <code>EntityReference</code> nodes and
|
||||
* all their descendants are readonly.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface EntityReference extends Node {
|
||||
}
|
156
libjava/org/w3c/dom/NamedNodeMap.java
Normal file
156
libjava/org/w3c/dom/NamedNodeMap.java
Normal file
@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* Objects implementing the <code>NamedNodeMap</code> interface 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>NamedNodeMaps</code> are not maintained in any particular order.
|
||||
* Objects contained in an object implementing <code>NamedNodeMap</code> may
|
||||
* also be accessed by an ordinal index, but this is simply to allow
|
||||
* convenient enumeration of the contents of a <code>NamedNodeMap</code>,
|
||||
* and does not imply that the DOM specifies an order to these Nodes.
|
||||
* <p><code>NamedNodeMap</code> objects in the DOM are live.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface NamedNodeMap {
|
||||
/**
|
||||
* Retrieves a node specified by name.
|
||||
* @param nameThe <code>nodeName</code> of a node to retrieve.
|
||||
* @return A <code>Node</code> (of any type) with the specified
|
||||
* <code>nodeName</code>, or <code>null</code> if it does not identify
|
||||
* any node in this map.
|
||||
*/
|
||||
public Node getNamedItem(String name);
|
||||
|
||||
/**
|
||||
* Adds a node using its <code>nodeName</code> attribute. If a node with
|
||||
* that name is already present in this map, it is replaced by the new
|
||||
* one.
|
||||
* <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 argA node to store in this map. The node will later be
|
||||
* accessible using the value of its <code>nodeName</code> attribute.
|
||||
* @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 this map.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this map 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.
|
||||
*/
|
||||
public Node setNamedItem(Node arg)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Removes a node specified by name. When this map contains the attributes
|
||||
* attached to an element, 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.
|
||||
* @param nameThe <code>nodeName</code> of the node to remove.
|
||||
* @return The node removed from this map if a node with such a name
|
||||
* exists.
|
||||
* @exception DOMException
|
||||
* NOT_FOUND_ERR: Raised if there is no node named <code>name</code> in
|
||||
* this map.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
|
||||
*/
|
||||
public Node removeNamedItem(String name)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* 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 this map, this
|
||||
* returns <code>null</code>.
|
||||
* @param indexIndex into this map.
|
||||
* @return The node at the <code>index</code>th position in the map, or
|
||||
* <code>null</code> if that is not a valid index.
|
||||
*/
|
||||
public Node item(int index);
|
||||
|
||||
/**
|
||||
* The number of nodes in this map. The range of valid child node indices
|
||||
* is <code>0</code> to <code>length-1</code> inclusive.
|
||||
*/
|
||||
public int getLength();
|
||||
|
||||
/**
|
||||
* Retrieves a node specified by local name and namespace URI. HTML-only
|
||||
* DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the node to retrieve.
|
||||
* @param localNameThe local name of the node to retrieve.
|
||||
* @return A <code>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 this map.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Node getNamedItemNS(String namespaceURI,
|
||||
String localName);
|
||||
|
||||
/**
|
||||
* Adds a node using its <code>namespaceURI</code> and
|
||||
* <code>localName</code>. If a node with that namespace URI and that
|
||||
* local name is already present in this map, it is replaced by the new
|
||||
* one.
|
||||
* <br>HTML-only DOM implementations do not need to implement this method.
|
||||
* @param argA node to store in this map. The node will later be
|
||||
* accessible using the value of its <code>namespaceURI</code> and
|
||||
* <code>localName</code> attributes.
|
||||
* @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 this map.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this map 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.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Node setNamedItemNS(Node arg)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Removes a node specified by local name and namespace URI. A removed
|
||||
* attribute may be known to have a default value when this map contains
|
||||
* the attributes attached to an element, as returned by the attributes
|
||||
* attribute of the <code>Node</code> interface. If so, an attribute
|
||||
* immediately appears containing the default value as well as the
|
||||
* corresponding namespace URI, local name, and prefix when applicable.
|
||||
* <br>HTML-only DOM implementations do not need to implement this method.
|
||||
* @param namespaceURIThe namespace URI of the node to remove.
|
||||
* @param localNameThe local name of the node to remove.
|
||||
* @return The node removed from this map if a node with such a local
|
||||
* name and namespace URI exists.
|
||||
* @exception DOMException
|
||||
* NOT_FOUND_ERR: Raised if there is no node with the specified
|
||||
* <code>namespaceURI</code> and <code>localName</code> in this map.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public Node removeNamedItemNS(String namespaceURI,
|
||||
String localName)
|
||||
throws DOMException;
|
||||
|
||||
}
|
390
libjava/org/w3c/dom/Node.java
Normal file
390
libjava/org/w3c/dom/Node.java
Normal file
@ -0,0 +1,390 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* 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
|
||||
* <code>Element</code> or <code>attributes</code> for a <code>Comment</code>
|
||||
* ), this returns <code>null</code>. Note that the specialized interfaces
|
||||
* may contain additional and more convenient mechanisms to get and set the
|
||||
* relevant information.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Node {
|
||||
// NodeType
|
||||
/**
|
||||
* The node is an <code>Element</code>.
|
||||
*/
|
||||
public static final short ELEMENT_NODE = 1;
|
||||
/**
|
||||
* The node is an <code>Attr</code>.
|
||||
*/
|
||||
public static final short ATTRIBUTE_NODE = 2;
|
||||
/**
|
||||
* The node is a <code>Text</code> node.
|
||||
*/
|
||||
public static final short TEXT_NODE = 3;
|
||||
/**
|
||||
* The node is a <code>CDATASection</code>.
|
||||
*/
|
||||
public static final short CDATA_SECTION_NODE = 4;
|
||||
/**
|
||||
* The node is an <code>EntityReference</code>.
|
||||
*/
|
||||
public static final short ENTITY_REFERENCE_NODE = 5;
|
||||
/**
|
||||
* The node is an <code>Entity</code>.
|
||||
*/
|
||||
public static final short ENTITY_NODE = 6;
|
||||
/**
|
||||
* The node is a <code>ProcessingInstruction</code>.
|
||||
*/
|
||||
public static final short PROCESSING_INSTRUCTION_NODE = 7;
|
||||
/**
|
||||
* The node is a <code>Comment</code>.
|
||||
*/
|
||||
public static final short COMMENT_NODE = 8;
|
||||
/**
|
||||
* The node is a <code>Document</code>.
|
||||
*/
|
||||
public static final short DOCUMENT_NODE = 9;
|
||||
/**
|
||||
* The node is a <code>DocumentType</code>.
|
||||
*/
|
||||
public static final short DOCUMENT_TYPE_NODE = 10;
|
||||
/**
|
||||
* The node is a <code>DocumentFragment</code>.
|
||||
*/
|
||||
public static final short DOCUMENT_FRAGMENT_NODE = 11;
|
||||
/**
|
||||
* The node is a <code>Notation</code>.
|
||||
*/
|
||||
public static final short NOTATION_NODE = 12;
|
||||
|
||||
/**
|
||||
* The name of this node, depending on its type; see the table above.
|
||||
*/
|
||||
public String getNodeName();
|
||||
|
||||
/**
|
||||
* The value of this node, depending on its type; see the table above.
|
||||
* When it is defined to be <code>null</code>, setting it has no effect.
|
||||
* @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.
|
||||
*/
|
||||
public String getNodeValue()
|
||||
throws DOMException;
|
||||
public void setNodeValue(String nodeValue)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* A code representing the type of the underlying object, as defined above.
|
||||
*/
|
||||
public short getNodeType();
|
||||
|
||||
/**
|
||||
* The parent of this node. All nodes, except <code>Attr</code>,
|
||||
* <code>Document</code>, <code>DocumentFragment</code>,
|
||||
* <code>Entity</code>, and <code>Notation</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, this is
|
||||
* <code>null</code>.
|
||||
*/
|
||||
public Node getParentNode();
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
public NodeList getChildNodes();
|
||||
|
||||
/**
|
||||
* The first child of this node. If there is no such node, this returns
|
||||
* <code>null</code>.
|
||||
*/
|
||||
public Node getFirstChild();
|
||||
|
||||
/**
|
||||
* The last child of this node. If there is no such node, this returns
|
||||
* <code>null</code>.
|
||||
*/
|
||||
public Node getLastChild();
|
||||
|
||||
/**
|
||||
* The node immediately preceding this node. If there is no such node,
|
||||
* this returns <code>null</code>.
|
||||
*/
|
||||
public Node getPreviousSibling();
|
||||
|
||||
/**
|
||||
* The node immediately following this node. If there is no such node,
|
||||
* this returns <code>null</code>.
|
||||
*/
|
||||
public Node getNextSibling();
|
||||
|
||||
/**
|
||||
* A <code>NamedNodeMap</code> containing the attributes of this node (if
|
||||
* it is an <code>Element</code>) or <code>null</code> otherwise.
|
||||
*/
|
||||
public NamedNodeMap getAttributes();
|
||||
|
||||
/**
|
||||
* The <code>Document</code> object associated with this node. This is
|
||||
* also the <code>Document</code> object used to create new nodes. When
|
||||
* this node is a <code>Document</code> or a <code>DocumentType</code>
|
||||
* which is not used with any <code>Document</code> yet, this is
|
||||
* <code>null</code>.
|
||||
* @version DOM Level 2
|
||||
*/
|
||||
public Document getOwnerDocument();
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* @param newChildThe node to insert.
|
||||
* @param refChildThe 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 is readonly or
|
||||
* if the parent of the node being inserted is readonly.
|
||||
* <br>NOT_FOUND_ERR: Raised if <code>refChild</code> is not a child of
|
||||
* this node.
|
||||
*/
|
||||
public Node insertBefore(Node newChild,
|
||||
Node refChild)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Replaces the child node <code>oldChild</code> with <code>newChild</code>
|
||||
* in the list of children, and returns the <code>oldChild</code> node.
|
||||
* <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
|
||||
* <code>oldChild</code> is replaced by all of the
|
||||
* <code>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 newChildThe new node to put in the child list.
|
||||
* @param oldChildThe 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 if
|
||||
* 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 parent of
|
||||
* the new node is readonly.
|
||||
* <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
|
||||
* this node.
|
||||
*/
|
||||
public Node replaceChild(Node newChild,
|
||||
Node oldChild)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Removes the child node indicated by <code>oldChild</code> from the list
|
||||
* of children, and returns it.
|
||||
* @param oldChildThe 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.
|
||||
*/
|
||||
public Node removeChild(Node oldChild)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* 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 newChildThe 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 is readonly.
|
||||
*/
|
||||
public Node appendChild(Node newChild)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns whether this node has any children.
|
||||
* @return <code>true</code> if this node has any children,
|
||||
* <code>false</code> otherwise.
|
||||
*/
|
||||
public boolean hasChildNodes();
|
||||
|
||||
/**
|
||||
* Returns a duplicate of this node, i.e., serves as a generic copy
|
||||
* constructor for nodes. The duplicate node has no parent; (
|
||||
* <code>parentNode</code> is <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 an <code>Attribute</code>
|
||||
* directly, as opposed to be cloned as part of an <code>Element</code>
|
||||
* cloning operation, returns a specified attribute (
|
||||
* <code>specified</code> is <code>true</code>). Cloning any other type
|
||||
* of node simply returns a copy of this node.
|
||||
* <br>Note that cloning an immutable subtree results in a mutable copy,
|
||||
* but the children of an <code>EntityReference</code> clone are readonly
|
||||
* . In addition, clones of unspecified <code>Attr</code> nodes are
|
||||
* specified. And, cloning <code>Document</code>,
|
||||
* <code>DocumentType</code>, <code>Entity</code>, and
|
||||
* <code>Notation</code> nodes is implementation dependent.
|
||||
* @param deepIf <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.
|
||||
*/
|
||||
public Node cloneNode(boolean deep);
|
||||
|
||||
/**
|
||||
* Puts all <code>Text</code> nodes in the full depth of the sub-tree
|
||||
* underneath this <code>Node</code>, including attribute nodes, into a
|
||||
* "normal" form where only structure (e.g., elements, comments,
|
||||
* processing instructions, CDATA sections, and entity references)
|
||||
* separates <code>Text</code> nodes, i.e., there are neither adjacent
|
||||
* <code>Text</code> nodes nor empty <code>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.In cases where the document contains
|
||||
* <code>CDATASections</code>, the normalize operation alone may not be
|
||||
* sufficient, since XPointers do not differentiate between
|
||||
* <code>Text</code> nodes and <code>CDATASection</code> nodes.
|
||||
* @version DOM Level 2
|
||||
*/
|
||||
public void normalize();
|
||||
|
||||
/**
|
||||
* Tests whether the DOM implementation implements a specific feature and
|
||||
* that feature is supported by this node.
|
||||
* @param featureThe name of the feature to test. This is the same name
|
||||
* which can be passed to the method <code>hasFeature</code> on
|
||||
* <code>DOMImplementation</code>.
|
||||
* @param versionThis 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.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public boolean isSupported(String feature,
|
||||
String version);
|
||||
|
||||
/**
|
||||
* The namespace URI of this node, or <code>null</code> if it is
|
||||
* unspecified.
|
||||
* <br>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.
|
||||
* <br>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>Document</code> interface, this is always <code>null</code>.Per
|
||||
* the Namespaces in XML Specification an attribute does not inherit
|
||||
* its namespace from the element it is attached to. If an attribute is
|
||||
* not explicitly given a namespace, it simply has no namespace.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public String getNamespaceURI();
|
||||
|
||||
/**
|
||||
* The namespace prefix of this node, or <code>null</code> if it is
|
||||
* unspecified.
|
||||
* <br>Note that setting this attribute, when permitted, changes the
|
||||
* <code>nodeName</code> attribute, which holds the qualified name, as
|
||||
* well as the <code>tagName</code> and <code>name</code> attributes of
|
||||
* the <code>Element</code> and <code>Attr</code> interfaces, when
|
||||
* applicable.
|
||||
* <br>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.
|
||||
* <br>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>Document</code> interface, this is always <code>null</code>.
|
||||
* @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" .
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public String getPrefix();
|
||||
public void setPrefix(String prefix)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns the local part of the qualified name of this node.
|
||||
* <br>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>Document</code> interface, this is always <code>null</code>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public String getLocalName();
|
||||
|
||||
/**
|
||||
* Returns whether this node (if it is an element) has any attributes.
|
||||
* @return <code>true</code> if this node has any attributes,
|
||||
* <code>false</code> otherwise.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public boolean hasAttributes();
|
||||
|
||||
}
|
41
libjava/org/w3c/dom/NodeList.java
Normal file
41
libjava/org/w3c/dom/NodeList.java
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* The <code>NodeList</code> interface provides the abstraction of an ordered
|
||||
* collection of nodes, without defining or constraining how this collection
|
||||
* is implemented. <code>NodeList</code> objects in the DOM are live.
|
||||
* <p>The items in the <code>NodeList</code> are accessible via an integral
|
||||
* index, starting from 0.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface NodeList {
|
||||
/**
|
||||
* 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 indexIndex 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.
|
||||
*/
|
||||
public Node item(int index);
|
||||
|
||||
/**
|
||||
* The number of nodes in the list. The range of valid child node indices
|
||||
* is 0 to <code>length-1</code> inclusive.
|
||||
*/
|
||||
public int getLength();
|
||||
|
||||
}
|
40
libjava/org/w3c/dom/Notation.java
Normal file
40
libjava/org/w3c/dom/Notation.java
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Notation extends Node {
|
||||
/**
|
||||
* The public identifier of this notation. If the public identifier was
|
||||
* not specified, this is <code>null</code>.
|
||||
*/
|
||||
public String getPublicId();
|
||||
|
||||
/**
|
||||
* The system identifier of this notation. If the system identifier was
|
||||
* not specified, this is <code>null</code>.
|
||||
*/
|
||||
public String getSystemId();
|
||||
|
||||
}
|
40
libjava/org/w3c/dom/ProcessingInstruction.java
Normal file
40
libjava/org/w3c/dom/ProcessingInstruction.java
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface ProcessingInstruction extends Node {
|
||||
/**
|
||||
* The target of this processing instruction. XML defines this as being
|
||||
* the first token following the markup that begins the processing
|
||||
* instruction.
|
||||
*/
|
||||
public String getTarget();
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
public String getData();
|
||||
public void setData(String data)
|
||||
throws DOMException;
|
||||
|
||||
}
|
56
libjava/org/w3c/dom/Text.java
Normal file
56
libjava/org/w3c/dom/Text.java
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom;
|
||||
|
||||
/**
|
||||
* The <code>Text</code> interface inherits from <code>CharacterData</code>
|
||||
* and 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 the information items
|
||||
* (elements, comments, etc.) 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 or HTML, so they
|
||||
* will not (in general) persist between DOM editing sessions. The
|
||||
* <code>normalize()</code> method on <code>Node</code> merges any such
|
||||
* adjacent <code>Text</code> objects into a single node for each block of
|
||||
* text.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
|
||||
*/
|
||||
public interface Text extends CharacterData {
|
||||
/**
|
||||
* Breaks this node into two nodes at the specified <code>offset</code>,
|
||||
* keeping both in the tree as siblings. After being split, this node
|
||||
* will contain all the content up to the <code>offset</code> point. A
|
||||
* new node of the same type, which contains all the content at and
|
||||
* after the <code>offset</code> point, is returned. If the original
|
||||
* node had a parent node, the new node is inserted as the next sibling
|
||||
* of the original node. When the <code>offset</code> is equal to the
|
||||
* length of this node, the new node has no data.
|
||||
* @param offsetThe 16-bit unit offset at which to split, starting from
|
||||
* <code>0</code>.
|
||||
* @return The new node, of the same type as this node.
|
||||
* @exception DOMException
|
||||
* INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
|
||||
* than the number of 16-bit units in <code>data</code>.
|
||||
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
||||
*/
|
||||
public Text splitText(int offset)
|
||||
throws DOMException;
|
||||
|
||||
}
|
33
libjava/org/w3c/dom/ranges/DocumentRange.java
Normal file
33
libjava/org/w3c/dom/ranges/DocumentRange.java
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom.ranges;
|
||||
|
||||
/**
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public interface DocumentRange {
|
||||
/**
|
||||
* This interface can be obtained from the object implementing the
|
||||
* <code>Document</code> interface using binding-specific casting
|
||||
* methods.
|
||||
* @return The initial state of the Range returned from this method is
|
||||
* such that both of its boundary-points are positioned at the
|
||||
* beginning of the corresponding 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 <code>ownerDocument</code>.
|
||||
*/
|
||||
public Range createRange();
|
||||
|
||||
}
|
399
libjava/org/w3c/dom/ranges/Range.java
Normal file
399
libjava/org/w3c/dom/ranges/Range.java
Normal file
@ -0,0 +1,399 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom.ranges;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.DocumentFragment;
|
||||
import org.w3c.dom.DOMException;
|
||||
|
||||
/**
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public interface Range {
|
||||
/**
|
||||
* Node within which the Range begins
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public Node getStartContainer()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Offset within the starting node of the Range.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public int getStartOffset()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Node within which the Range ends
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public Node getEndContainer()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Offset within the ending node of the Range.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public int getEndOffset()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* TRUE if the Range is collapsed
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public boolean getCollapsed()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* The deepest common ancestor container of the Range's two
|
||||
* boundary-points.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public Node getCommonAncestorContainer()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Sets the attributes describing the start of the Range.
|
||||
* @param refNodeThe <code>refNode</code> value. This parameter must be
|
||||
* different from <code>null</code>.
|
||||
* @param offsetThe <code>startOffset</code> value.
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if <code>refNode</code> or an ancestor
|
||||
* of <code>refNode</code> is an Entity, Notation, or DocumentType
|
||||
* node.
|
||||
* @exception DOMException
|
||||
* INDEX_SIZE_ERR: Raised if <code>offset</code> is negative or greater
|
||||
* than the number of child units in <code>refNode</code>. Child units
|
||||
* are 16-bit units if <code>refNode</code> is a type of CharacterData
|
||||
* node (e.g., a Text or Comment node) or a ProcessingInstruction
|
||||
* node. Child units are Nodes in all other cases.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
*/
|
||||
public void setStart(Node refNode,
|
||||
int offset)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
/**
|
||||
* Sets the attributes describing the end of a Range.
|
||||
* @param refNodeThe <code>refNode</code> value. This parameter must be
|
||||
* different from <code>null</code>.
|
||||
* @param offsetThe <code>endOffset</code> value.
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if <code>refNode</code> or an ancestor
|
||||
* of <code>refNode</code> is an Entity, Notation, or DocumentType
|
||||
* node.
|
||||
* @exception DOMException
|
||||
* INDEX_SIZE_ERR: Raised if <code>offset</code> is negative or greater
|
||||
* than the number of child units in <code>refNode</code>. Child units
|
||||
* are 16-bit units if <code>refNode</code> is a type of CharacterData
|
||||
* node (e.g., a Text or Comment node) or a ProcessingInstruction
|
||||
* node. Child units are Nodes in all other cases.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
*/
|
||||
public void setEnd(Node refNode,
|
||||
int offset)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
/**
|
||||
* Sets the start position to be before a node
|
||||
* @param refNodeRange starts before <code>refNode</code>
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if the root container of
|
||||
* <code>refNode</code> is not an Attr, Document, or DocumentFragment
|
||||
* node or if <code>refNode</code> is a Document, DocumentFragment,
|
||||
* Attr, Entity, or Notation node.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void setStartBefore(Node refNode)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
/**
|
||||
* Sets the start position to be after a node
|
||||
* @param refNodeRange starts after <code>refNode</code>
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if the root container of
|
||||
* <code>refNode</code> is not an Attr, Document, or DocumentFragment
|
||||
* node or if <code>refNode</code> is a Document, DocumentFragment,
|
||||
* Attr, Entity, or Notation node.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void setStartAfter(Node refNode)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
/**
|
||||
* Sets the end position to be before a node.
|
||||
* @param refNodeRange ends before <code>refNode</code>
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if the root container of
|
||||
* <code>refNode</code> is not an Attr, Document, or DocumentFragment
|
||||
* node or if <code>refNode</code> is a Document, DocumentFragment,
|
||||
* Attr, Entity, or Notation node.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void setEndBefore(Node refNode)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
/**
|
||||
* Sets the end of a Range to be after a node
|
||||
* @param refNodeRange ends after <code>refNode</code>.
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if the root container of
|
||||
* <code>refNode</code> is not an Attr, Document or DocumentFragment
|
||||
* node or if <code>refNode</code> is a Document, DocumentFragment,
|
||||
* Attr, Entity, or Notation node.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void setEndAfter(Node refNode)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
/**
|
||||
* Collapse a Range onto one of its boundary-points
|
||||
* @param toStartIf TRUE, collapses the Range onto its start; if FALSE,
|
||||
* collapses it onto its end.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void collapse(boolean toStart)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Select a node and its contents
|
||||
* @param refNodeThe node to select.
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if an ancestor of <code>refNode</code>
|
||||
* is an Entity, Notation or DocumentType node or if
|
||||
* <code>refNode</code> is a Document, DocumentFragment, Attr, Entity,
|
||||
* or Notation node.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void selectNode(Node refNode)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
/**
|
||||
* Select the contents within a node
|
||||
* @param refNodeNode to select from
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if <code>refNode</code> or an ancestor
|
||||
* of <code>refNode</code> is an Entity, Notation or DocumentType node.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void selectNodeContents(Node refNode)
|
||||
throws RangeException, DOMException;
|
||||
|
||||
// CompareHow
|
||||
/**
|
||||
* Compare start boundary-point of <code>sourceRange</code> to start
|
||||
* boundary-point of Range on which <code>compareBoundaryPoints</code>
|
||||
* is invoked.
|
||||
*/
|
||||
public static final short START_TO_START = 0;
|
||||
/**
|
||||
* Compare start boundary-point of <code>sourceRange</code> to end
|
||||
* boundary-point of Range on which <code>compareBoundaryPoints</code>
|
||||
* is invoked.
|
||||
*/
|
||||
public static final short START_TO_END = 1;
|
||||
/**
|
||||
* Compare end boundary-point of <code>sourceRange</code> to end
|
||||
* boundary-point of Range on which <code>compareBoundaryPoints</code>
|
||||
* is invoked.
|
||||
*/
|
||||
public static final short END_TO_END = 2;
|
||||
/**
|
||||
* Compare end boundary-point of <code>sourceRange</code> to start
|
||||
* boundary-point of Range on which <code>compareBoundaryPoints</code>
|
||||
* is invoked.
|
||||
*/
|
||||
public static final short END_TO_START = 3;
|
||||
|
||||
/**
|
||||
* Compare the boundary-points of two Ranges in a document.
|
||||
* @param howA code representing the type of comparison, as defined above.
|
||||
* @param sourceRangeThe <code>Range</code> on which this current
|
||||
* <code>Range</code> is compared to.
|
||||
* @return -1, 0 or 1 depending on whether the corresponding
|
||||
* boundary-point of the Range is respectively before, equal to, or
|
||||
* after the corresponding boundary-point of <code>sourceRange</code>.
|
||||
* @exception DOMException
|
||||
* WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same
|
||||
* Document or DocumentFragment.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
*/
|
||||
public short compareBoundaryPoints(short how,
|
||||
Range sourceRange)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Removes the contents of a Range from the containing document or
|
||||
* document fragment without returning a reference to the removed
|
||||
* content.
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of
|
||||
* the Range is read-only or any of the nodes that contain any of the
|
||||
* content of the Range are read-only.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
*/
|
||||
public void deleteContents()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Moves the contents of a Range from the containing document or document
|
||||
* fragment to a new DocumentFragment.
|
||||
* @return A DocumentFragment containing the extracted contents.
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of
|
||||
* the Range is read-only or any of the nodes which contain any of the
|
||||
* content of the Range are read-only.
|
||||
* <br>HIERARCHY_REQUEST_ERR: Raised if a DocumentType node would be
|
||||
* extracted into the new DocumentFragment.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
*/
|
||||
public DocumentFragment extractContents()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Duplicates the contents of a Range
|
||||
* @return A DocumentFragment that contains content equivalent to this
|
||||
* Range.
|
||||
* @exception DOMException
|
||||
* HIERARCHY_REQUEST_ERR: Raised if a DocumentType node would be
|
||||
* extracted into the new DocumentFragment.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
*/
|
||||
public DocumentFragment cloneContents()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Inserts a node into the Document or DocumentFragment at the start of
|
||||
* the Range. If the container is a Text node, this will be split at the
|
||||
* start of the Range (as if the Text node's splitText method was
|
||||
* performed at the insertion point) and the insertion will occur
|
||||
* between the two resulting Text nodes. Adjacent Text nodes will not be
|
||||
* automatically merged. If the node to be inserted is a
|
||||
* DocumentFragment node, the children will be inserted rather than the
|
||||
* DocumentFragment node itself.
|
||||
* @param newNodeThe node to insert at the start of the Range
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the
|
||||
* start of the Range is read-only.
|
||||
* <br>WRONG_DOCUMENT_ERR: Raised if <code>newNode</code> and the
|
||||
* container of the start of the Range were not created from the same
|
||||
* document.
|
||||
* <br>HIERARCHY_REQUEST_ERR: Raised if the container of the start of
|
||||
* the Range is of a type that does not allow children of the type of
|
||||
* <code>newNode</code> or if <code>newNode</code> is an ancestor of
|
||||
* the container.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
* @exception RangeException
|
||||
* INVALID_NODE_TYPE_ERR: Raised if <code>newNode</code> is an Attr,
|
||||
* Entity, Notation, or Document node.
|
||||
*/
|
||||
public void insertNode(Node newNode)
|
||||
throws DOMException, RangeException;
|
||||
|
||||
/**
|
||||
* Reparents the contents of the Range to the given node and inserts the
|
||||
* node at the position of the start of the Range.
|
||||
* @param newParentThe node to surround the contents with.
|
||||
* @exception DOMException
|
||||
* NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of
|
||||
* either boundary-point of the Range is read-only.
|
||||
* <br>WRONG_DOCUMENT_ERR: Raised if <code> newParent</code> and the
|
||||
* container of the start of the Range were not created from the same
|
||||
* document.
|
||||
* <br>HIERARCHY_REQUEST_ERR: Raised if the container of the start of
|
||||
* the Range is of a type that does not allow children of the type of
|
||||
* <code>newParent</code> or if <code>newParent</code> is an ancestor
|
||||
* of the container or if <code>node</code> would end up with a child
|
||||
* node of a type not allowed by the type of <code>node</code>.
|
||||
* <br>INVALID_STATE_ERR: Raised if <code>detach()</code> has already
|
||||
* been invoked on this object.
|
||||
* @exception RangeException
|
||||
* BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a
|
||||
* non-text node.
|
||||
* <br>INVALID_NODE_TYPE_ERR: Raised if <code> node</code> is an Attr,
|
||||
* Entity, DocumentType, Notation, Document, or DocumentFragment node.
|
||||
*/
|
||||
public void surroundContents(Node newParent)
|
||||
throws DOMException, RangeException;
|
||||
|
||||
/**
|
||||
* Produces a new Range whose boundary-points are equal to the
|
||||
* boundary-points of the Range.
|
||||
* @return The duplicated Range.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public Range cloneRange()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns the contents of a Range as a string. This string contains only
|
||||
* the data characters, not any markup.
|
||||
* @return The contents of the Range.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public String toString()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Called to indicate that the Range is no longer in use and that the
|
||||
* implementation may relinquish any resources associated with this
|
||||
* Range. Subsequent calls to any methods or attribute getters on this
|
||||
* Range will result in a <code>DOMException</code> being thrown with an
|
||||
* error code of <code>INVALID_STATE_ERR</code>.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if <code>detach()</code> has already been
|
||||
* invoked on this object.
|
||||
*/
|
||||
public void detach()
|
||||
throws DOMException;
|
||||
|
||||
}
|
39
libjava/org/w3c/dom/ranges/RangeException.java
Normal file
39
libjava/org/w3c/dom/ranges/RangeException.java
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom.ranges;
|
||||
|
||||
/**
|
||||
* Range operations may throw a <code>RangeException</code> as specified in
|
||||
* their method descriptions.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public class RangeException extends RuntimeException {
|
||||
public RangeException(short code, String message) {
|
||||
super(message);
|
||||
this.code = code;
|
||||
}
|
||||
public short code;
|
||||
// RangeExceptionCode
|
||||
/**
|
||||
* If the boundary-points of a Range do not meet specific requirements.
|
||||
*/
|
||||
public static final short BAD_BOUNDARYPOINTS_ERR = 1;
|
||||
/**
|
||||
* If the container of an boundary-point of a Range is being set to either
|
||||
* a node of an invalid type or a node with an ancestor of an invalid
|
||||
* type.
|
||||
*/
|
||||
public static final short INVALID_NODE_TYPE_ERR = 2;
|
||||
|
||||
}
|
90
libjava/org/w3c/dom/traversal/DocumentTraversal.java
Normal file
90
libjava/org/w3c/dom/traversal/DocumentTraversal.java
Normal file
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom.traversal;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.DOMException;
|
||||
|
||||
/**
|
||||
* <code>DocumentTraversal</code> contains methods that create iterators and
|
||||
* tree-walkers to traverse a node and its children in document order (depth
|
||||
* first, pre-order traversal, which is equivalent to the order in which the
|
||||
* start tags occur in the text representation of the document). In DOMs
|
||||
* which support the Traversal feature, <code>DocumentTraversal</code> will
|
||||
* be implemented by the same objects that implement the Document interface.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public interface DocumentTraversal {
|
||||
/**
|
||||
* Create a new <code>NodeIterator</code> over the subtree rooted at the
|
||||
* specified node.
|
||||
* @param rootThe node which will be iterated together with its children.
|
||||
* The iterator is initially positioned just before this node. The
|
||||
* <code>whatToShow</code> flags and the filter, if any, are not
|
||||
* considered when setting this position. The root must not be
|
||||
* <code>null</code>.
|
||||
* @param whatToShowThis flag specifies which node types may appear in
|
||||
* the logical view of the tree presented by the iterator. See the
|
||||
* description of <code>NodeFilter</code> for the set of possible
|
||||
* <code>SHOW_</code> values.These flags can be combined using
|
||||
* <code>OR</code>.
|
||||
* @param filterThe <code>NodeFilter</code> to be used with this
|
||||
* <code>TreeWalker</code>, or <code>null</code> to indicate no filter.
|
||||
* @param entityReferenceExpansionThe value of this flag determines
|
||||
* whether entity reference nodes are expanded.
|
||||
* @return The newly created <code>NodeIterator</code>.
|
||||
* @exception DOMException
|
||||
* NOT_SUPPORTED_ERR: Raised if the specified <code>root</code> is
|
||||
* <code>null</code>.
|
||||
*/
|
||||
public NodeIterator createNodeIterator(Node root,
|
||||
int whatToShow,
|
||||
NodeFilter filter,
|
||||
boolean entityReferenceExpansion)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Create a new <code>TreeWalker</code> over the subtree rooted at the
|
||||
* specified node.
|
||||
* @param rootThe node which will serve as the <code>root</code> for the
|
||||
* <code>TreeWalker</code>. The <code>whatToShow</code> flags and the
|
||||
* <code>NodeFilter</code> are not considered when setting this value;
|
||||
* any node type will be accepted as the <code>root</code>. The
|
||||
* <code>currentNode</code> of the <code>TreeWalker</code> is
|
||||
* initialized to this node, whether or not it is visible. The
|
||||
* <code>root</code> functions as a stopping point for traversal
|
||||
* methods that look upward in the document structure, such as
|
||||
* <code>parentNode</code> and nextNode. The <code>root</code> must
|
||||
* not be <code>null</code>.
|
||||
* @param whatToShowThis flag specifies which node types may appear in
|
||||
* the logical view of the tree presented by the tree-walker. See the
|
||||
* description of <code>NodeFilter</code> for the set of possible
|
||||
* SHOW_ values.These flags can be combined using <code>OR</code>.
|
||||
* @param filterThe <code>NodeFilter</code> to be used with this
|
||||
* <code>TreeWalker</code>, or <code>null</code> to indicate no filter.
|
||||
* @param entityReferenceExpansionIf this flag is false, the contents of
|
||||
* <code>EntityReference</code> nodes are not presented in the logical
|
||||
* view.
|
||||
* @return The newly created <code>TreeWalker</code>.
|
||||
* @exception DOMException
|
||||
* NOT_SUPPORTED_ERR: Raised if the specified <code>root</code> is
|
||||
* <code>null</code>.
|
||||
*/
|
||||
public TreeWalker createTreeWalker(Node root,
|
||||
int whatToShow,
|
||||
NodeFilter filter,
|
||||
boolean entityReferenceExpansion)
|
||||
throws DOMException;
|
||||
|
||||
}
|
142
libjava/org/w3c/dom/traversal/NodeFilter.java
Normal file
142
libjava/org/w3c/dom/traversal/NodeFilter.java
Normal file
@ -0,0 +1,142 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom.traversal;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
/**
|
||||
* Filters are objects that know how to "filter out" nodes. If a
|
||||
* <code>NodeIterator</code> or <code>TreeWalker</code> is given a
|
||||
* <code>NodeFilter</code>, it applies the filter before it returns the next
|
||||
* node. If the filter says to accept the node, the traversal logic returns
|
||||
* it; otherwise, traversal looks for the next node and pretends that the
|
||||
* node that was rejected was not there.
|
||||
* <p>The DOM does not provide any filters. <code>NodeFilter</code> is just an
|
||||
* interface that users can implement to provide their own filters.
|
||||
* <p><code>NodeFilters</code> do not need to know how to traverse from node
|
||||
* to node, nor do they need to know anything about the data structure that
|
||||
* is being traversed. 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 traversals,
|
||||
* encouraging code reuse.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public interface NodeFilter {
|
||||
// Constants returned by acceptNode
|
||||
/**
|
||||
* Accept the node. Navigation methods defined for
|
||||
* <code>NodeIterator</code> or <code>TreeWalker</code> will return this
|
||||
* node.
|
||||
*/
|
||||
public static final short FILTER_ACCEPT = 1;
|
||||
/**
|
||||
* Reject the node. Navigation methods defined for
|
||||
* <code>NodeIterator</code> or <code>TreeWalker</code> will not return
|
||||
* this node. For <code>TreeWalker</code>, the children of this node
|
||||
* will also be rejected. <code>NodeIterators</code> treat this as a
|
||||
* synonym for <code>FILTER_SKIP</code>.
|
||||
*/
|
||||
public static final short FILTER_REJECT = 2;
|
||||
/**
|
||||
* Skip this single node. Navigation methods defined for
|
||||
* <code>NodeIterator</code> or <code>TreeWalker</code> will not return
|
||||
* this node. For both <code>NodeIterator</code> and
|
||||
* <code>TreeWalker</code>, the children of this node will still be
|
||||
* considered.
|
||||
*/
|
||||
public static final short FILTER_SKIP = 3;
|
||||
|
||||
// Constants for whatToShow
|
||||
/**
|
||||
* Show all <code>Nodes</code>.
|
||||
*/
|
||||
public static final int SHOW_ALL = 0xFFFFFFFF;
|
||||
/**
|
||||
* Show <code>Element</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_ELEMENT = 0x00000001;
|
||||
/**
|
||||
* Show <code>Attr</code> nodes. This is meaningful only when creating an
|
||||
* iterator or tree-walker with an attribute node as its
|
||||
* <code>root</code>; in this case, it means that the attribute node
|
||||
* will appear in the first position of the iteration or traversal.
|
||||
* Since attributes are never children of other nodes, they do not
|
||||
* appear when traversing over the document tree.
|
||||
*/
|
||||
public static final int SHOW_ATTRIBUTE = 0x00000002;
|
||||
/**
|
||||
* Show <code>Text</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_TEXT = 0x00000004;
|
||||
/**
|
||||
* Show <code>CDATASection</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_CDATA_SECTION = 0x00000008;
|
||||
/**
|
||||
* Show <code>EntityReference</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_ENTITY_REFERENCE = 0x00000010;
|
||||
/**
|
||||
* Show <code>Entity</code> nodes. This is meaningful only when creating
|
||||
* an iterator or tree-walker with an<code> Entity</code> node as its
|
||||
* <code>root</code>; in this case, it means that the <code>Entity</code>
|
||||
* node will appear in the first position of the traversal. Since
|
||||
* entities are not part of the document tree, they do not appear when
|
||||
* traversing over the document tree.
|
||||
*/
|
||||
public static final int SHOW_ENTITY = 0x00000020;
|
||||
/**
|
||||
* Show <code>ProcessingInstruction</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_PROCESSING_INSTRUCTION = 0x00000040;
|
||||
/**
|
||||
* Show <code>Comment</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_COMMENT = 0x00000080;
|
||||
/**
|
||||
* Show <code>Document</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_DOCUMENT = 0x00000100;
|
||||
/**
|
||||
* Show <code>DocumentType</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_DOCUMENT_TYPE = 0x00000200;
|
||||
/**
|
||||
* Show <code>DocumentFragment</code> nodes.
|
||||
*/
|
||||
public static final int SHOW_DOCUMENT_FRAGMENT = 0x00000400;
|
||||
/**
|
||||
* Show <code>Notation</code> nodes. This is meaningful only when creating
|
||||
* an iterator or tree-walker with a <code>Notation</code> node as its
|
||||
* <code>root</code>; in this case, it means that the
|
||||
* <code>Notation</code> node will appear in the first position of the
|
||||
* traversal. Since notations are not part of the document tree, they do
|
||||
* not appear when traversing over the document tree.
|
||||
*/
|
||||
public static final int SHOW_NOTATION = 0x00000800;
|
||||
|
||||
/**
|
||||
* Test whether a specified node is visible in the logical view of a
|
||||
* <code>TreeWalker</code> or <code>NodeIterator</code>. This function
|
||||
* will be called by the implementation of <code>TreeWalker</code> and
|
||||
* <code>NodeIterator</code>; it is not normally called directly from
|
||||
* user code. (Though you could do so if you wanted to use the same
|
||||
* filter to guide your own application logic.)
|
||||
* @param nThe 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, as defined above.
|
||||
*/
|
||||
public short acceptNode(Node n);
|
||||
|
||||
}
|
108
libjava/org/w3c/dom/traversal/NodeIterator.java
Normal file
108
libjava/org/w3c/dom/traversal/NodeIterator.java
Normal file
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom.traversal;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.DOMException;
|
||||
|
||||
/**
|
||||
* <code>Iterators</code> are used to step through a set of nodes, e.g. the
|
||||
* set of nodes in a <code>NodeList</code>, the document subtree governed by
|
||||
* a particular <code>Node</code>, 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 <code>NodeIterator</code>. DOM Level 2 specifies a
|
||||
* single <code>NodeIterator</code> implementation for document-order
|
||||
* traversal of a document subtree. Instances of these iterators are created
|
||||
* by calling <code>DocumentTraversal</code>
|
||||
* <code>.createNodeIterator()</code>.
|
||||
* <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public interface NodeIterator {
|
||||
/**
|
||||
* The root node of the <code>NodeIterator</code>, as specified when it
|
||||
* was created.
|
||||
*/
|
||||
public Node getRoot();
|
||||
|
||||
/**
|
||||
* This attribute determines which node types are presented via the
|
||||
* iterator. The available set of constants is defined in the
|
||||
* <code>NodeFilter</code> interface. Nodes not accepted by
|
||||
* <code>whatToShow</code> will be skipped, but their children may still
|
||||
* be considered. Note that this skip takes precedence over the filter,
|
||||
* if any.
|
||||
*/
|
||||
public int getWhatToShow();
|
||||
|
||||
/**
|
||||
* The <code>NodeFilter</code> used to screen nodes.
|
||||
*/
|
||||
public NodeFilter getFilter();
|
||||
|
||||
/**
|
||||
* The value of this flag determines whether the children of entity
|
||||
* reference nodes are visible to the iterator. If false, they and
|
||||
* their descendants will be rejected. Note that this rejection takes
|
||||
* precedence over <code>whatToShow</code> and the filter. Also note
|
||||
* that this is currently the only situation where
|
||||
* <code>NodeIterators</code> may reject a complete subtree rather than
|
||||
* skipping individual nodes.
|
||||
* <br>
|
||||
* <br> 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 <code>expandEntityReferences</code> 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
|
||||
* <code>expandEntityReferences</code> to false.
|
||||
*/
|
||||
public boolean getExpandEntityReferences();
|
||||
|
||||
/**
|
||||
* Returns the next node in the set and advances the position of the
|
||||
* iterator in the set. After a <code>NodeIterator</code> is created,
|
||||
* the first call to <code>nextNode()</code> returns the first node in
|
||||
* the set.
|
||||
* @return The next <code>Node</code> in the set being iterated over, or
|
||||
* <code>null</code> if there are no more members in that set.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if this method is called after the
|
||||
* <code>detach</code> method was invoked.
|
||||
*/
|
||||
public Node nextNode()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Returns the previous node in the set and moves the position of the
|
||||
* <code>NodeIterator</code> backwards in the set.
|
||||
* @return The previous <code>Node</code> in the set being iterated over,
|
||||
* or <code>null</code> if there are no more members in that set.
|
||||
* @exception DOMException
|
||||
* INVALID_STATE_ERR: Raised if this method is called after the
|
||||
* <code>detach</code> method was invoked.
|
||||
*/
|
||||
public Node previousNode()
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Detaches the <code>NodeIterator</code> 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.
|
||||
*/
|
||||
public void detach();
|
||||
|
||||
}
|
167
libjava/org/w3c/dom/traversal/TreeWalker.java
Normal file
167
libjava/org/w3c/dom/traversal/TreeWalker.java
Normal file
@ -0,0 +1,167 @@
|
||||
/*
|
||||
* Copyright (c) 2000 World Wide Web Consortium,
|
||||
* (Massachusetts Institute of Technology, Institut National de
|
||||
* Recherche en Informatique et en Automatique, Keio University). All
|
||||
* Rights Reserved. This program is distributed under the W3C's Software
|
||||
* Intellectual Property License. This program is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
|
||||
*/
|
||||
|
||||
package org.w3c.dom.traversal;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.DOMException;
|
||||
|
||||
/**
|
||||
* <code>TreeWalker</code> objects are used to navigate a document tree or
|
||||
* subtree using the view of the document defined by their
|
||||
* <code>whatToShow</code> flags and filter (if any). Any function which
|
||||
* performs navigation using a <code>TreeWalker</code> will automatically
|
||||
* support any view defined by a <code>TreeWalker</code>.
|
||||
* <p>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
|
||||
* <code>TreeWalker</code> view may be children of different, widely
|
||||
* separated nodes in the original view. For instance, consider a
|
||||
* <code>NodeFilter</code> 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>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification</a>.
|
||||
* @since DOM Level 2
|
||||
*/
|
||||
public interface TreeWalker {
|
||||
/**
|
||||
* The <code>root</code> node of the <code>TreeWalker</code>, as specified
|
||||
* when it was created.
|
||||
*/
|
||||
public Node getRoot();
|
||||
|
||||
/**
|
||||
* This attribute determines which node types are presented via the
|
||||
* <code>TreeWalker</code>. The available set of constants is defined in
|
||||
* the <code>NodeFilter</code> interface. Nodes not accepted by
|
||||
* <code>whatToShow</code> will be skipped, but their children may still
|
||||
* be considered. Note that this skip takes precedence over the filter,
|
||||
* if any.
|
||||
*/
|
||||
public int getWhatToShow();
|
||||
|
||||
/**
|
||||
* The filter used to screen nodes.
|
||||
*/
|
||||
public NodeFilter getFilter();
|
||||
|
||||
/**
|
||||
* The value of this flag determines whether the children of entity
|
||||
* reference nodes are visible to the <code>TreeWalker</code>. If false,
|
||||
* they and their descendants will be rejected. Note that this
|
||||
* rejection takes precedence over <code>whatToShow</code> and the
|
||||
* filter, if any.
|
||||
* <br> 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 <code>expandEntityReferences</code> to true when creating the
|
||||
* <code>TreeWalker</code>. 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.
|
||||
*/
|
||||
public boolean getExpandEntityReferences();
|
||||
|
||||
/**
|
||||
* The node at which the <code>TreeWalker</code> is currently positioned.
|
||||
* <br>Alterations to the DOM tree may cause the current node to no longer
|
||||
* be accepted by the <code>TreeWalker</code>'s associated filter.
|
||||
* <code>currentNode</code> may also be explicitly set to any node,
|
||||
* whether or not it is within the subtree specified by the
|
||||
* <code>root</code> node or would be accepted by the filter and
|
||||
* <code>whatToShow</code> flags. Further traversal occurs relative to
|
||||
* <code>currentNode</code> even if it is not part of the current view,
|
||||
* by applying the filters in the requested direction; if no traversal
|
||||
* is possible, <code>currentNode</code> is not changed.
|
||||
* @exception DOMException
|
||||
* NOT_SUPPORTED_ERR: Raised if an attempt is made to set
|
||||
* <code>currentNode</code> to <code>null</code>.
|
||||
*/
|
||||
public Node getCurrentNode();
|
||||
public void setCurrentNode(Node currentNode)
|
||||
throws DOMException;
|
||||
|
||||
/**
|
||||
* Moves to and returns the closest visible ancestor node of the current
|
||||
* node. If the search for <code>parentNode</code> attempts to step
|
||||
* upward from the <code>TreeWalker</code>'s <code>root</code> node, or
|
||||
* if it fails to find a visible ancestor node, this method retains the
|
||||
* current position and returns <code>null</code>.
|
||||
* @return The new parent node, or <code>null</code> if the current node
|
||||
* has no parent in the <code>TreeWalker</code>'s logical view.
|
||||
*/
|
||||
public Node parentNode();
|
||||
|
||||
/**
|
||||
* Moves the <code>TreeWalker</code> to the first visible child of the
|
||||
* current node, and returns the new node. If the current node has no
|
||||
* visible children, returns <code>null</code>, and retains the current
|
||||
* node.
|
||||
* @return The new node, or <code>null</code> if the current node has no
|
||||
* visible children in the <code>TreeWalker</code>'s logical view.
|
||||
*/
|
||||
public Node firstChild();
|
||||
|
||||
/**
|
||||
* Moves the <code>TreeWalker</code> to the last visible child of the
|
||||
* current node, and returns the new node. If the current node has no
|
||||
* visible children, returns <code>null</code>, and retains the current
|
||||
* node.
|
||||
* @return The new node, or <code>null</code> if the current node has no
|
||||
* children in the <code>TreeWalker</code>'s logical view.
|
||||
*/
|
||||
public Node lastChild();
|
||||
|
||||
/**
|
||||
* Moves the <code>TreeWalker</code> to the previous sibling of the
|
||||
* current node, and returns the new node. If the current node has no
|
||||
* visible previous sibling, returns <code>null</code>, and retains the
|
||||
* current node.
|
||||
* @return The new node, or <code>null</code> if the current node has no
|
||||
* previous sibling. in the <code>TreeWalker</code>'s logical view.
|
||||
*/
|
||||
public Node previousSibling();
|
||||
|
||||
/**
|
||||
* Moves the <code>TreeWalker</code> to the next sibling of the current
|
||||
* node, and returns the new node. If the current node has no visible
|
||||
* next sibling, returns <code>null</code>, and retains the current node.
|
||||
* @return The new node, or <code>null</code> if the current node has no
|
||||
* next sibling. in the <code>TreeWalker</code>'s logical view.
|
||||
*/
|
||||
public Node nextSibling();
|
||||
|
||||
/**
|
||||
* Moves the <code>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
|
||||
* <code>previousNode</code> attempts to step upward from the
|
||||
* <code>TreeWalker</code>'s <code>root</code> node, returns
|
||||
* <code>null</code>, and retains the current node.
|
||||
* @return The new node, or <code>null</code> if the current node has no
|
||||
* previous node in the <code>TreeWalker</code>'s logical view.
|
||||
*/
|
||||
public Node previousNode();
|
||||
|
||||
/**
|
||||
* Moves the <code>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 <code>TreeWalker</code>'s <code>root</code>
|
||||
* node, returns <code>null</code>, and retains the current node.
|
||||
* @return The new node, or <code>null</code> if the current node has no
|
||||
* next node in the <code>TreeWalker</code>'s logical view.
|
||||
*/
|
||||
public Node nextNode();
|
||||
|
||||
}
|
191
libjava/org/xml/sax/AttributeList.java
Normal file
191
libjava/org/xml/sax/AttributeList.java
Normal file
@ -0,0 +1,191 @@
|
||||
// SAX Attribute List Interface.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: AttributeList.java,v 1.1 2000/10/02 02:43:16 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
/**
|
||||
* Interface for an element's attribute specifications.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This is the original SAX1 interface for reporting an element's
|
||||
* attributes. Unlike the new {@link org.xml.sax.Attributes Attributes}
|
||||
* interface, it does not support Namespace-related information.</p>
|
||||
*
|
||||
* <p>When an attribute list is supplied as part of a
|
||||
* {@link org.xml.sax.DocumentHandler#startElement startElement}
|
||||
* event, the list will return valid results only during the
|
||||
* scope of the event; once the event handler returns control
|
||||
* to the parser, the attribute list is invalid. To save a
|
||||
* persistent copy of the attribute list, use the SAX1
|
||||
* {@link org.xml.sax.helpers.AttributeListImpl AttributeListImpl}
|
||||
* helper class.</p>
|
||||
*
|
||||
* <p>An attribute list includes only attributes that have been
|
||||
* specified or defaulted: #IMPLIED attributes will not be included.</p>
|
||||
*
|
||||
* <p>There are two ways for the SAX application to obtain information
|
||||
* from the AttributeList. First, it can iterate through the entire
|
||||
* list:</p>
|
||||
*
|
||||
* <pre>
|
||||
* public void startElement (String name, AttributeList atts) {
|
||||
* for (int i = 0; i < atts.getLength(); i++) {
|
||||
* String name = atts.getName(i);
|
||||
* String type = atts.getType(i);
|
||||
* String value = atts.getValue(i);
|
||||
* [...]
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* <p>(Note that the result of getLength() will be zero if there
|
||||
* are no attributes.)
|
||||
*
|
||||
* <p>As an alternative, the application can request the value or
|
||||
* type of specific attributes:</p>
|
||||
*
|
||||
* <pre>
|
||||
* public void startElement (String name, AttributeList atts) {
|
||||
* String identifier = atts.getValue("id");
|
||||
* String label = atts.getValue("label");
|
||||
* [...]
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @deprecated This interface has been replaced by the SAX2
|
||||
* {@link org.xml.sax.Attributes Attributes}
|
||||
* interface, which includes Namespace support.
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.DocumentHandler#startElement startElement
|
||||
* @see org.xml.sax.helpers.AttributeListImpl AttributeListImpl
|
||||
*/
|
||||
public interface AttributeList {
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Iteration methods.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Return the number of attributes in this list.
|
||||
*
|
||||
* <p>The SAX parser may provide attributes in any
|
||||
* arbitrary order, regardless of the order in which they were
|
||||
* declared or specified. The number of attributes may be
|
||||
* zero.</p>
|
||||
*
|
||||
* @return The number of attributes in the list.
|
||||
*/
|
||||
public abstract int getLength ();
|
||||
|
||||
|
||||
/**
|
||||
* Return the name of an attribute in this list (by position).
|
||||
*
|
||||
* <p>The names must be unique: the SAX parser shall not include the
|
||||
* same attribute twice. Attributes without values (those declared
|
||||
* #IMPLIED without a value specified in the start tag) will be
|
||||
* omitted from the list.</p>
|
||||
*
|
||||
* <p>If the attribute name has a namespace prefix, the prefix
|
||||
* will still be attached.</p>
|
||||
*
|
||||
* @param i The index of the attribute in the list (starting at 0).
|
||||
* @return The name of the indexed attribute, or null
|
||||
* if the index is out of range.
|
||||
* @see #getLength
|
||||
*/
|
||||
public abstract String getName (int i);
|
||||
|
||||
|
||||
/**
|
||||
* Return the type of an attribute in the list (by position).
|
||||
*
|
||||
* <p>The attribute type is one of the strings "CDATA", "ID",
|
||||
* "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
|
||||
* or "NOTATION" (always in upper case).</p>
|
||||
*
|
||||
* <p>If the parser has not read a declaration for the attribute,
|
||||
* or if the parser does not report attribute types, then it must
|
||||
* return the value "CDATA" as stated in the XML 1.0 Recommentation
|
||||
* (clause 3.3.3, "Attribute-Value Normalization").</p>
|
||||
*
|
||||
* <p>For an enumerated attribute that is not a notation, the
|
||||
* parser will report the type as "NMTOKEN".</p>
|
||||
*
|
||||
* @param i The index of the attribute in the list (starting at 0).
|
||||
* @return The attribute type as a string, or
|
||||
* null if the index is out of range.
|
||||
* @see #getLength
|
||||
* @see #getType(java.lang.String)
|
||||
*/
|
||||
public abstract String getType (int i);
|
||||
|
||||
|
||||
/**
|
||||
* Return the value of an attribute in the list (by position).
|
||||
*
|
||||
* <p>If the attribute value is a list of tokens (IDREFS,
|
||||
* ENTITIES, or NMTOKENS), the tokens will be concatenated
|
||||
* into a single string separated by whitespace.</p>
|
||||
*
|
||||
* @param i The index of the attribute in the list (starting at 0).
|
||||
* @return The attribute value as a string, or
|
||||
* null if the index is out of range.
|
||||
* @see #getLength
|
||||
* @see #getValue(java.lang.String)
|
||||
*/
|
||||
public abstract String getValue (int i);
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Lookup methods.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Return the type of an attribute in the list (by name).
|
||||
*
|
||||
* <p>The return value is the same as the return value for
|
||||
* getType(int).</p>
|
||||
*
|
||||
* <p>If the attribute name has a namespace prefix in the document,
|
||||
* the application must include the prefix here.</p>
|
||||
*
|
||||
* @param name The name of the attribute.
|
||||
* @return The attribute type as a string, or null if no
|
||||
* such attribute exists.
|
||||
* @see #getType(int)
|
||||
*/
|
||||
public abstract String getType (String name);
|
||||
|
||||
|
||||
/**
|
||||
* Return the value of an attribute in the list (by name).
|
||||
*
|
||||
* <p>The return value is the same as the return value for
|
||||
* getValue(int).</p>
|
||||
*
|
||||
* <p>If the attribute name has a namespace prefix in the document,
|
||||
* the application must include the prefix here.</p>
|
||||
*
|
||||
* @param i The index of the attribute in the list.
|
||||
* @return The attribute value as a string, or null if
|
||||
* no such attribute exists.
|
||||
* @see #getValue(int)
|
||||
*/
|
||||
public abstract String getValue (String name);
|
||||
|
||||
}
|
||||
|
||||
// end of AttributeList.java
|
243
libjava/org/xml/sax/Attributes.java
Normal file
243
libjava/org/xml/sax/Attributes.java
Normal file
@ -0,0 +1,243 @@
|
||||
// Attributes.java - attribute list with Namespace support
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the public domain.
|
||||
|
||||
// $Id: Attributes.java,v 1.1 2000/10/02 02:43:16 sboag Exp $
|
||||
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
|
||||
/**
|
||||
* Interface for a list of XML attributes.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This interface allows access to a list of attributes in
|
||||
* three different ways:</p>
|
||||
*
|
||||
* <ol>
|
||||
* <li>by attribute index;</li>
|
||||
* <li>by Namespace-qualified name; or</li>
|
||||
* <li>by qualified (prefixed) name.</li>
|
||||
* </ol>
|
||||
*
|
||||
* <p>The list will not contain attributes that were declared
|
||||
* #IMPLIED but not specified in the start tag. It will also not
|
||||
* contain attributes used as Namespace declarations (xmlns*) unless
|
||||
* the <code>http://xml.org/sax/features/namespace-prefixes</code>
|
||||
* feature is set to <var>true</var> (it is <var>false</var> by
|
||||
* default).</p>
|
||||
*
|
||||
* <p>If the namespace-prefixes feature (see above) is <var>false</var>,
|
||||
* access by qualified name may not be available; if the
|
||||
* <code>http://xml.org/sax/features/namespaces</code>
|
||||
* feature is <var>false</var>, access by Namespace-qualified names
|
||||
* may not be available.</p>
|
||||
*
|
||||
* <p>This interface replaces the now-deprecated SAX1 {@link
|
||||
* org.xml.sax.AttributeList AttributeList} interface, which does not
|
||||
* contain Namespace support. In addition to Namespace support, it
|
||||
* adds the <var>getIndex</var> methods (below).</p>
|
||||
*
|
||||
* <p>The order of attributes in the list is unspecified, and will
|
||||
* vary from implementation to implementation.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.helpers.AttributeListImpl
|
||||
*/
|
||||
public interface Attributes
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Indexed access.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Return the number of attributes in the list.
|
||||
*
|
||||
* <p>Once you know the number of attributes, you can iterate
|
||||
* through the list.</p>
|
||||
*
|
||||
* @return The number of attributes in the list.
|
||||
* @see #getURI(int)
|
||||
* @see #getLocalName(int)
|
||||
* @see #getQName(int)
|
||||
* @see #getType(int)
|
||||
* @see #getValue(int)
|
||||
*/
|
||||
public abstract int getLength ();
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's Namespace URI by index.
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return The Namespace URI, or the empty string if none
|
||||
* is available, or null if the index is out of
|
||||
* range.
|
||||
* @see #getLength
|
||||
*/
|
||||
public abstract String getURI (int index);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's local name by index.
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return The local name, or the empty string if Namespace
|
||||
* processing is not being performed, or null
|
||||
* if the index is out of range.
|
||||
* @see #getLength
|
||||
*/
|
||||
public abstract String getLocalName (int index);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's XML 1.0 qualified name by index.
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return The XML 1.0 qualified name, or the empty string
|
||||
* if none is available, or null if the index
|
||||
* is out of range.
|
||||
* @see #getLength
|
||||
*/
|
||||
public abstract String getQName (int index);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's type by index.
|
||||
*
|
||||
* <p>The attribute type is one of the strings "CDATA", "ID",
|
||||
* "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
|
||||
* or "NOTATION" (always in upper case).</p>
|
||||
*
|
||||
* <p>If the parser has not read a declaration for the attribute,
|
||||
* or if the parser does not report attribute types, then it must
|
||||
* return the value "CDATA" as stated in the XML 1.0 Recommentation
|
||||
* (clause 3.3.3, "Attribute-Value Normalization").</p>
|
||||
*
|
||||
* <p>For an enumerated attribute that is not a notation, the
|
||||
* parser will report the type as "NMTOKEN".</p>
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return The attribute's type as a string, or null if the
|
||||
* index is out of range.
|
||||
* @see #getLength
|
||||
*/
|
||||
public abstract String getType (int index);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's value by index.
|
||||
*
|
||||
* <p>If the attribute value is a list of tokens (IDREFS,
|
||||
* ENTITIES, or NMTOKENS), the tokens will be concatenated
|
||||
* into a single string with each token separated by a
|
||||
* single space.</p>
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return The attribute's value as a string, or null if the
|
||||
* index is out of range.
|
||||
* @see #getLength
|
||||
*/
|
||||
public abstract String getValue (int index);
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Name-based query.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Look up the index of an attribute by Namespace name.
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string if
|
||||
* the name has no Namespace URI.
|
||||
* @param localName The attribute's local name.
|
||||
* @return The index of the attribute, or -1 if it does not
|
||||
* appear in the list.
|
||||
*/
|
||||
public int getIndex (String uri, String localPart);
|
||||
|
||||
|
||||
/**
|
||||
* Look up the index of an attribute by XML 1.0 qualified name.
|
||||
*
|
||||
* @param qName The qualified (prefixed) name.
|
||||
* @return The index of the attribute, or -1 if it does not
|
||||
* appear in the list.
|
||||
*/
|
||||
public int getIndex (String qName);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's type by Namespace name.
|
||||
*
|
||||
* <p>See {@link #getType(int) getType(int)} for a description
|
||||
* of the possible types.</p>
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty String if the
|
||||
* name has no Namespace URI.
|
||||
* @param localName The local name of the attribute.
|
||||
* @return The attribute type as a string, or null if the
|
||||
* attribute is not in the list or if Namespace
|
||||
* processing is not being performed.
|
||||
*/
|
||||
public abstract String getType (String uri, String localName);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's type by XML 1.0 qualified name.
|
||||
*
|
||||
* <p>See {@link #getType(int) getType(int)} for a description
|
||||
* of the possible types.</p>
|
||||
*
|
||||
* @param qName The XML 1.0 qualified name.
|
||||
* @return The attribute type as a string, or null if the
|
||||
* attribute is not in the list or if qualified names
|
||||
* are not available.
|
||||
*/
|
||||
public abstract String getType (String qName);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's value by Namespace name.
|
||||
*
|
||||
* <p>See {@link #getValue(int) getValue(int)} for a description
|
||||
* of the possible values.</p>
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty String if the
|
||||
* name has no Namespace URI.
|
||||
* @param localName The local name of the attribute.
|
||||
* @return The attribute value as a string, or null if the
|
||||
* attribute is not in the list.
|
||||
*/
|
||||
public abstract String getValue (String uri, String localName);
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's value by XML 1.0 qualified name.
|
||||
*
|
||||
* <p>See {@link #getValue(int) getValue(int)} for a description
|
||||
* of the possible values.</p>
|
||||
*
|
||||
* @param qName The XML 1.0 qualified name.
|
||||
* @return The attribute value as a string, or null if the
|
||||
* attribute is not in the list or if qualified names
|
||||
* are not available.
|
||||
*/
|
||||
public abstract String getValue (String qName);
|
||||
|
||||
}
|
||||
|
||||
// end of Attributes.java
|
374
libjava/org/xml/sax/ContentHandler.java
Normal file
374
libjava/org/xml/sax/ContentHandler.java
Normal file
@ -0,0 +1,374 @@
|
||||
// ContentHandler.java - handle main document content.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the public domain.
|
||||
|
||||
// $Id: ContentHandler.java,v 1.1 2000/10/02 02:43:16 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the logical content of a document.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This is the main interface that most SAX applications
|
||||
* implement: if the application needs to be informed of basic parsing
|
||||
* events, it implements this interface and registers an instance with
|
||||
* the SAX parser using the {@link org.xml.sax.XMLReader#setContentHandler
|
||||
* setContentHandler} method. The parser uses the instance to report
|
||||
* basic document-related events like the start and end of elements
|
||||
* and character data.</p>
|
||||
*
|
||||
* <p>The order of events in this interface is very important, and
|
||||
* mirrors the order of information in the document itself. For
|
||||
* example, all of an element's content (character data, processing
|
||||
* instructions, and/or subelements) will appear, in order, between
|
||||
* the startElement event and the corresponding endElement event.</p>
|
||||
*
|
||||
* <p>This interface is similar to the now-deprecated SAX 1.0
|
||||
* DocumentHandler interface, but it adds support for Namespaces
|
||||
* and for reporting skipped entities (in non-validating XML
|
||||
* processors).</p>
|
||||
*
|
||||
* <p>Implementors should note that there is also a Java class
|
||||
* {@link java.net.ContentHandler ContentHandler} in the java.net
|
||||
* package; that means that it's probably a bad idea to do</p>
|
||||
*
|
||||
* <blockquote>
|
||||
* import java.net.*;
|
||||
* import org.xml.sax.*;
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>In fact, "import ...*" is usually a sign of sloppy programming
|
||||
* anyway, so the user should consider this a feature rather than a
|
||||
* bug.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.XMLReader
|
||||
* @see org.xml.sax.DTDHandler
|
||||
* @see org.xml.sax.ErrorHandler
|
||||
*/
|
||||
public interface ContentHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* Receive an object for locating the origin of SAX document events.
|
||||
*
|
||||
* <p>SAX parsers are strongly encouraged (though not absolutely
|
||||
* required) to supply a locator: if it does so, it must supply
|
||||
* the locator to the application by invoking this method before
|
||||
* invoking any of the other methods in the ContentHandler
|
||||
* interface.</p>
|
||||
*
|
||||
* <p>The locator allows the application to determine the end
|
||||
* position of any document-related event, even if the parser is
|
||||
* not reporting an error. Typically, the application will
|
||||
* use this information for reporting its own errors (such as
|
||||
* character content that does not match an application's
|
||||
* business rules). The information returned by the locator
|
||||
* is probably not sufficient for use with a search engine.</p>
|
||||
*
|
||||
* <p>Note that the locator will return correct information only
|
||||
* during the invocation of the events in this interface. The
|
||||
* application should not attempt to use it at any other time.</p>
|
||||
*
|
||||
* @param locator An object that can return the location of
|
||||
* any SAX document event.
|
||||
* @see org.xml.sax.Locator
|
||||
*/
|
||||
public void setDocumentLocator (Locator locator);
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the beginning of a document.
|
||||
*
|
||||
* <p>The SAX parser will invoke this method only once, before any
|
||||
* other methods in this interface or in {@link org.xml.sax.DTDHandler
|
||||
* DTDHandler} (except for {@link #setDocumentLocator
|
||||
* setDocumentLocator}).</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #endDocument
|
||||
*/
|
||||
public void startDocument ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of a document.
|
||||
*
|
||||
* <p>The SAX parser will invoke this method only once, and it will
|
||||
* be the last method invoked during the parse. The parser shall
|
||||
* not invoke this method until it has either abandoned parsing
|
||||
* (because of an unrecoverable error) or reached the end of
|
||||
* input.</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #startDocument
|
||||
*/
|
||||
public void endDocument()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Begin the scope of a prefix-URI Namespace mapping.
|
||||
*
|
||||
* <p>The information from this event is not necessary for
|
||||
* normal Namespace processing: the SAX XML reader will
|
||||
* automatically replace prefixes for element and attribute
|
||||
* names when the <code>http://xml.org/sax/features/namespaces</code>
|
||||
* feature is <var>true</var> (the default).</p>
|
||||
*
|
||||
* <p>There are cases, however, when applications need to
|
||||
* use prefixes in character data or in attribute values,
|
||||
* where they cannot safely be expanded automatically; the
|
||||
* start/endPrefixMapping event supplies the information
|
||||
* to the application to expand prefixes in those contexts
|
||||
* itself, if necessary.</p>
|
||||
*
|
||||
* <p>Note that start/endPrefixMapping events are not
|
||||
* guaranteed to be properly nested relative to each-other:
|
||||
* all startPrefixMapping events will occur before the
|
||||
* corresponding {@link #startElement startElement} event,
|
||||
* and all {@link #endPrefixMapping endPrefixMapping}
|
||||
* events will occur after the corresponding {@link #endElement
|
||||
* endElement} event, but their order is not otherwise
|
||||
* guaranteed.</p>
|
||||
*
|
||||
* <p>There should never be start/endPrefixMapping events for the
|
||||
* "xml" prefix, since it is predeclared and immutable.</p>
|
||||
*
|
||||
* @param prefix The Namespace prefix being declared.
|
||||
* @param uri The Namespace URI the prefix is mapped to.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see #endPrefixMapping
|
||||
* @see #startElement
|
||||
*/
|
||||
public void startPrefixMapping (String prefix, String uri)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* End the scope of a prefix-URI mapping.
|
||||
*
|
||||
* <p>See {@link #startPrefixMapping startPrefixMapping} for
|
||||
* details. This event will always occur after the corresponding
|
||||
* {@link #endElement endElement} event, but the order of
|
||||
* {@link #endPrefixMapping endPrefixMapping} events is not otherwise
|
||||
* guaranteed.</p>
|
||||
*
|
||||
* @param prefix The prefix that was being mapping.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see #startPrefixMapping
|
||||
* @see #endElement
|
||||
*/
|
||||
public void endPrefixMapping (String prefix)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the beginning of an element.
|
||||
*
|
||||
* <p>The Parser will invoke this method at the beginning of every
|
||||
* element in the XML document; there will be a corresponding
|
||||
* {@link #endElement endElement} event for every startElement event
|
||||
* (even when the element is empty). All of the element's content will be
|
||||
* reported, in order, before the corresponding endElement
|
||||
* event.</p>
|
||||
*
|
||||
* <p>This event allows up to three name components for each
|
||||
* element:</p>
|
||||
*
|
||||
* <ol>
|
||||
* <li>the Namespace URI;</li>
|
||||
* <li>the local name; and</li>
|
||||
* <li>the qualified (prefixed) name.</li>
|
||||
* </ol>
|
||||
*
|
||||
* <p>Any or all of these may be provided, depending on the
|
||||
* values of the <var>http://xml.org/sax/features/namespaces</var>
|
||||
* and the <var>http://xml.org/sax/features/namespace-prefixes</var>
|
||||
* properties:</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>the Namespace URI and local name are required when
|
||||
* the namespaces property is <var>true</var> (the default), and are
|
||||
* optional when the namespaces property is <var>false</var> (if one is
|
||||
* specified, both must be);</li>
|
||||
* <li>the qualified name is required when the namespace-prefixes property
|
||||
* is <var>true</var>, and is optional when the namespace-prefixes property
|
||||
* is <var>false</var> (the default).</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>Note that the attribute list provided will contain only
|
||||
* attributes with explicit values (specified or defaulted):
|
||||
* #IMPLIED attributes will be omitted. The attribute list
|
||||
* will contain attributes used for Namespace declarations
|
||||
* (xmlns* attributes) only if the
|
||||
* <code>http://xml.org/sax/features/namespace-prefixes</code>
|
||||
* property is true (it is false by default, and support for a
|
||||
* true value is optional).</p>
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string if the
|
||||
* element has no Namespace URI or if Namespace
|
||||
* processing is not being performed.
|
||||
* @param localName The local name (without prefix), or the
|
||||
* empty string if Namespace processing is not being
|
||||
* performed.
|
||||
* @param qName The qualified name (with prefix), or the
|
||||
* empty string if qualified names are not available.
|
||||
* @param atts The attributes attached to the element. If
|
||||
* there are no attributes, it shall be an empty
|
||||
* Attributes object.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #endElement
|
||||
* @see org.xml.sax.Attributes
|
||||
*/
|
||||
public void startElement (String namespaceURI, String localName,
|
||||
String qName, Attributes atts)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of an element.
|
||||
*
|
||||
* <p>The SAX parser will invoke this method at the end of every
|
||||
* element in the XML document; there will be a corresponding
|
||||
* {@link #startElement startElement} event for every endElement
|
||||
* event (even when the element is empty).</p>
|
||||
*
|
||||
* <p>For information on the names, see startElement.</p>
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string if the
|
||||
* element has no Namespace URI or if Namespace
|
||||
* processing is not being performed.
|
||||
* @param localName The local name (without prefix), or the
|
||||
* empty string if Namespace processing is not being
|
||||
* performed.
|
||||
* @param qName The qualified XML 1.0 name (with prefix), or the
|
||||
* empty string if qualified names are not available.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
*/
|
||||
public void endElement (String namespaceURI, String localName,
|
||||
String qName)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of character data.
|
||||
*
|
||||
* <p>The Parser will call this method to report each chunk of
|
||||
* character data. SAX parsers may return all contiguous character
|
||||
* data in a single chunk, or they may split it into several
|
||||
* chunks; however, all of the characters in any single event
|
||||
* must come from the same external entity so that the Locator
|
||||
* provides useful information.</p>
|
||||
*
|
||||
* <p>The application must not attempt to read from the array
|
||||
* outside of the specified range.</p>
|
||||
*
|
||||
* <p>Note that some parsers will report whitespace in element
|
||||
* content using the {@link #ignorableWhitespace ignorableWhitespace}
|
||||
* method rather than this one (validating parsers <em>must</em>
|
||||
* do so).</p>
|
||||
*
|
||||
* @param ch The characters from the XML document.
|
||||
* @param start The start position in the array.
|
||||
* @param length The number of characters to read from the array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #ignorableWhitespace
|
||||
* @see org.xml.sax.Locator
|
||||
*/
|
||||
public void characters (char ch[], int start, int length)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of ignorable whitespace in element content.
|
||||
*
|
||||
* <p>Validating Parsers must use this method to report each chunk
|
||||
* of whitespace in element content (see the W3C XML 1.0 recommendation,
|
||||
* section 2.10): non-validating parsers may also use this method
|
||||
* if they are capable of parsing and using content models.</p>
|
||||
*
|
||||
* <p>SAX parsers may return all contiguous whitespace in a single
|
||||
* chunk, or they may split it into several chunks; however, all of
|
||||
* the characters in any single event must come from the same
|
||||
* external entity, so that the Locator provides useful
|
||||
* information.</p>
|
||||
*
|
||||
* <p>The application must not attempt to read from the array
|
||||
* outside of the specified range.</p>
|
||||
*
|
||||
* @param ch The characters from the XML document.
|
||||
* @param start The start position in the array.
|
||||
* @param length The number of characters to read from the array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #characters
|
||||
*/
|
||||
public void ignorableWhitespace (char ch[], int start, int length)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a processing instruction.
|
||||
*
|
||||
* <p>The Parser will invoke this method once for each processing
|
||||
* instruction found: note that processing instructions may occur
|
||||
* before or after the main document element.</p>
|
||||
*
|
||||
* <p>A SAX parser must never report an XML declaration (XML 1.0,
|
||||
* section 2.8) or a text declaration (XML 1.0, section 4.3.1)
|
||||
* using this method.</p>
|
||||
*
|
||||
* @param target The processing instruction target.
|
||||
* @param data The processing instruction data, or null if
|
||||
* none was supplied. The data does not include any
|
||||
* whitespace separating it from the target.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
*/
|
||||
public void processingInstruction (String target, String data)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a skipped entity.
|
||||
*
|
||||
* <p>The Parser will invoke this method once for each entity
|
||||
* skipped. Non-validating processors may skip entities if they
|
||||
* have not seen the declarations (because, for example, the
|
||||
* entity was declared in an external DTD subset). All processors
|
||||
* may skip external entities, depending on the values of the
|
||||
* <code>http://xml.org/sax/features/external-general-entities</code>
|
||||
* and the
|
||||
* <code>http://xml.org/sax/features/external-parameter-entities</code>
|
||||
* properties.</p>
|
||||
*
|
||||
* @param name The name of the skipped entity. If it is a
|
||||
* parameter entity, the name will begin with '%', and if
|
||||
* it is the external DTD subset, it will be the string
|
||||
* "[dtd]".
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
*/
|
||||
public void skippedEntity (String name)
|
||||
throws SAXException;
|
||||
}
|
||||
|
||||
// end of ContentHandler.java
|
108
libjava/org/xml/sax/DTDHandler.java
Normal file
108
libjava/org/xml/sax/DTDHandler.java
Normal file
@ -0,0 +1,108 @@
|
||||
// SAX DTD handler.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: DTDHandler.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
/**
|
||||
* Receive notification of basic DTD-related events.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>If a SAX application needs information about notations and
|
||||
* unparsed entities, then the application implements this
|
||||
* interface and registers an instance with the SAX parser using
|
||||
* the parser's setDTDHandler method. The parser uses the
|
||||
* instance to report notation and unparsed entity declarations to
|
||||
* the application.</p>
|
||||
*
|
||||
* <p>Note that this interface includes only those DTD events that
|
||||
* the XML recommendation <em>requires</em> processors to report:
|
||||
* notation and unparsed entity declarations.</p>
|
||||
*
|
||||
* <p>The SAX parser may report these events in any order, regardless
|
||||
* of the order in which the notations and unparsed entities were
|
||||
* declared; however, all DTD events must be reported after the
|
||||
* document handler's startDocument event, and before the first
|
||||
* startElement event.</p>
|
||||
*
|
||||
* <p>It is up to the application to store the information for
|
||||
* future use (perhaps in a hash table or object tree).
|
||||
* If the application encounters attributes of type "NOTATION",
|
||||
* "ENTITY", or "ENTITIES", it can use the information that it
|
||||
* obtained through this interface to find the entity and/or
|
||||
* notation corresponding with the attribute value.</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Parser#setDTDHandler
|
||||
* @see org.xml.sax.HandlerBase
|
||||
*/
|
||||
public interface DTDHandler {
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a notation declaration event.
|
||||
*
|
||||
* <p>It is up to the application to record the notation for later
|
||||
* reference, if necessary.</p>
|
||||
*
|
||||
* <p>At least one of publicId and systemId must be non-null.
|
||||
* If a system identifier is present, and it is a URL, the SAX
|
||||
* parser must resolve it fully before passing it to the
|
||||
* application through this event.</p>
|
||||
*
|
||||
* <p>There is no guarantee that the notation declaration will be
|
||||
* reported before any unparsed entities that use it.</p>
|
||||
*
|
||||
* @param name The notation name.
|
||||
* @param publicId The notation's public identifier, or null if
|
||||
* none was given.
|
||||
* @param systemId The notation's system identifier, or null if
|
||||
* none was given.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #unparsedEntityDecl
|
||||
* @see org.xml.sax.AttributeList
|
||||
*/
|
||||
public abstract void notationDecl (String name,
|
||||
String publicId,
|
||||
String systemId)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of an unparsed entity declaration event.
|
||||
*
|
||||
* <p>Note that the notation name corresponds to a notation
|
||||
* reported by the {@link #notationDecl notationDecl} event.
|
||||
* It is up to the application to record the entity for later
|
||||
* reference, if necessary.</p>
|
||||
*
|
||||
* <p>If the system identifier is a URL, the parser must resolve it
|
||||
* fully before passing it to the application.</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @param name The unparsed entity's name.
|
||||
* @param publicId The entity's public identifier, or null if none
|
||||
* was given.
|
||||
* @param systemId The entity's system identifier.
|
||||
* @param notation name The name of the associated notation.
|
||||
* @see #notationDecl
|
||||
* @see org.xml.sax.AttributeList
|
||||
*/
|
||||
public abstract void unparsedEntityDecl (String name,
|
||||
String publicId,
|
||||
String systemId,
|
||||
String notationName)
|
||||
throws SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of DTDHandler.java
|
230
libjava/org/xml/sax/DocumentHandler.java
Normal file
230
libjava/org/xml/sax/DocumentHandler.java
Normal file
@ -0,0 +1,230 @@
|
||||
// SAX document handler.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: DocumentHandler.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
/**
|
||||
* Receive notification of general document events.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This was the main event-handling interface for SAX1; in
|
||||
* SAX2, it has been replaced by {@link org.xml.sax.ContentHandler
|
||||
* ContentHandler}, which provides Namespace support and reporting
|
||||
* of skipped entities. This interface is included in SAX2 only
|
||||
* to support legacy SAX1 applications.</p>
|
||||
*
|
||||
* <p>The order of events in this interface is very important, and
|
||||
* mirrors the order of information in the document itself. For
|
||||
* example, all of an element's content (character data, processing
|
||||
* instructions, and/or subelements) will appear, in order, between
|
||||
* the startElement event and the corresponding endElement event.</p>
|
||||
*
|
||||
* <p>Application writers who do not want to implement the entire
|
||||
* interface can derive a class from HandlerBase, which implements
|
||||
* the default functionality; parser writers can instantiate
|
||||
* HandlerBase to obtain a default handler. The application can find
|
||||
* the location of any document event using the Locator interface
|
||||
* supplied by the Parser through the setDocumentLocator method.</p>
|
||||
*
|
||||
* @deprecated This interface has been replaced by the SAX2
|
||||
* {@link org.xml.sax.ContentHandler ContentHandler}
|
||||
* interface, which includes Namespace support.
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Parser#setDocumentHandler
|
||||
* @see org.xml.sax.Locator
|
||||
* @see org.xml.sax.HandlerBase
|
||||
*/
|
||||
public interface DocumentHandler {
|
||||
|
||||
|
||||
/**
|
||||
* Receive an object for locating the origin of SAX document events.
|
||||
*
|
||||
* <p>SAX parsers are strongly encouraged (though not absolutely
|
||||
* required) to supply a locator: if it does so, it must supply
|
||||
* the locator to the application by invoking this method before
|
||||
* invoking any of the other methods in the DocumentHandler
|
||||
* interface.</p>
|
||||
*
|
||||
* <p>The locator allows the application to determine the end
|
||||
* position of any document-related event, even if the parser is
|
||||
* not reporting an error. Typically, the application will
|
||||
* use this information for reporting its own errors (such as
|
||||
* character content that does not match an application's
|
||||
* business rules). The information returned by the locator
|
||||
* is probably not sufficient for use with a search engine.</p>
|
||||
*
|
||||
* <p>Note that the locator will return correct information only
|
||||
* during the invocation of the events in this interface. The
|
||||
* application should not attempt to use it at any other time.</p>
|
||||
*
|
||||
* @param locator An object that can return the location of
|
||||
* any SAX document event.
|
||||
* @see org.xml.sax.Locator
|
||||
*/
|
||||
public abstract void setDocumentLocator (Locator locator);
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the beginning of a document.
|
||||
*
|
||||
* <p>The SAX parser will invoke this method only once, before any
|
||||
* other methods in this interface or in DTDHandler (except for
|
||||
* setDocumentLocator).</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
*/
|
||||
public abstract void startDocument ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of a document.
|
||||
*
|
||||
* <p>The SAX parser will invoke this method only once, and it will
|
||||
* be the last method invoked during the parse. The parser shall
|
||||
* not invoke this method until it has either abandoned parsing
|
||||
* (because of an unrecoverable error) or reached the end of
|
||||
* input.</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
*/
|
||||
public abstract void endDocument ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the beginning of an element.
|
||||
*
|
||||
* <p>The Parser will invoke this method at the beginning of every
|
||||
* element in the XML document; there will be a corresponding
|
||||
* endElement() event for every startElement() event (even when the
|
||||
* element is empty). All of the element's content will be
|
||||
* reported, in order, before the corresponding endElement()
|
||||
* event.</p>
|
||||
*
|
||||
* <p>If the element name has a namespace prefix, the prefix will
|
||||
* still be attached. Note that the attribute list provided will
|
||||
* contain only attributes with explicit values (specified or
|
||||
* defaulted): #IMPLIED attributes will be omitted.</p>
|
||||
*
|
||||
* @param name The element type name.
|
||||
* @param atts The attributes attached to the element, if any.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #endElement
|
||||
* @see org.xml.sax.AttributeList
|
||||
*/
|
||||
public abstract void startElement (String name, AttributeList atts)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of an element.
|
||||
*
|
||||
* <p>The SAX parser will invoke this method at the end of every
|
||||
* element in the XML document; there will be a corresponding
|
||||
* startElement() event for every endElement() event (even when the
|
||||
* element is empty).</p>
|
||||
*
|
||||
* <p>If the element name has a namespace prefix, the prefix will
|
||||
* still be attached to the name.</p>
|
||||
*
|
||||
* @param name The element type name
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
*/
|
||||
public abstract void endElement (String name)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of character data.
|
||||
*
|
||||
* <p>The Parser will call this method to report each chunk of
|
||||
* character data. SAX parsers may return all contiguous character
|
||||
* data in a single chunk, or they may split it into several
|
||||
* chunks; however, all of the characters in any single event
|
||||
* must come from the same external entity, so that the Locator
|
||||
* provides useful information.</p>
|
||||
*
|
||||
* <p>The application must not attempt to read from the array
|
||||
* outside of the specified range.</p>
|
||||
*
|
||||
* <p>Note that some parsers will report whitespace using the
|
||||
* ignorableWhitespace() method rather than this one (validating
|
||||
* parsers must do so).</p>
|
||||
*
|
||||
* @param ch The characters from the XML document.
|
||||
* @param start The start position in the array.
|
||||
* @param length The number of characters to read from the array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #ignorableWhitespace
|
||||
* @see org.xml.sax.Locator
|
||||
*/
|
||||
public abstract void characters (char ch[], int start, int length)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of ignorable whitespace in element content.
|
||||
*
|
||||
* <p>Validating Parsers must use this method to report each chunk
|
||||
* of ignorable whitespace (see the W3C XML 1.0 recommendation,
|
||||
* section 2.10): non-validating parsers may also use this method
|
||||
* if they are capable of parsing and using content models.</p>
|
||||
*
|
||||
* <p>SAX parsers may return all contiguous whitespace in a single
|
||||
* chunk, or they may split it into several chunks; however, all of
|
||||
* the characters in any single event must come from the same
|
||||
* external entity, so that the Locator provides useful
|
||||
* information.</p>
|
||||
*
|
||||
* <p>The application must not attempt to read from the array
|
||||
* outside of the specified range.</p>
|
||||
*
|
||||
* @param ch The characters from the XML document.
|
||||
* @param start The start position in the array.
|
||||
* @param length The number of characters to read from the array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see #characters
|
||||
*/
|
||||
public abstract void ignorableWhitespace (char ch[], int start, int length)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a processing instruction.
|
||||
*
|
||||
* <p>The Parser will invoke this method once for each processing
|
||||
* instruction found: note that processing instructions may occur
|
||||
* before or after the main document element.</p>
|
||||
*
|
||||
* <p>A SAX parser should never report an XML declaration (XML 1.0,
|
||||
* section 2.8) or a text declaration (XML 1.0, section 4.3.1)
|
||||
* using this method.</p>
|
||||
*
|
||||
* @param target The processing instruction target.
|
||||
* @param data The processing instruction data, or null if
|
||||
* none was supplied.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
*/
|
||||
public abstract void processingInstruction (String target, String data)
|
||||
throws SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of DocumentHandler.java
|
110
libjava/org/xml/sax/EntityResolver.java
Normal file
110
libjava/org/xml/sax/EntityResolver.java
Normal file
@ -0,0 +1,110 @@
|
||||
// SAX entity resolver.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: EntityResolver.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
/**
|
||||
* Basic interface for resolving entities.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>If a SAX application needs to implement customized handling
|
||||
* for external entities, it must implement this interface and
|
||||
* register an instance with the SAX driver using the
|
||||
* {@link org.xml.sax.XMLReader#setEntityResolver setEntityResolver}
|
||||
* method.</p>
|
||||
*
|
||||
* <p>The XML reader will then allow the application to intercept any
|
||||
* external entities (including the external DTD subset and external
|
||||
* parameter entities, if any) before including them.</p>
|
||||
*
|
||||
* <p>Many SAX applications will not need to implement this interface,
|
||||
* but it will be especially useful for applications that build
|
||||
* XML documents from databases or other specialised input sources,
|
||||
* or for applications that use URI types other than URLs.</p>
|
||||
*
|
||||
* <p>The following resolver would provide the application
|
||||
* with a special character stream for the entity with the system
|
||||
* identifier "http://www.myhost.com/today":</p>
|
||||
*
|
||||
* <pre>
|
||||
* import org.xml.sax.EntityResolver;
|
||||
* import org.xml.sax.InputSource;
|
||||
*
|
||||
* public class MyResolver implements EntityResolver {
|
||||
* public InputSource resolveEntity (String publicId, String systemId)
|
||||
* {
|
||||
* if (systemId.equals("http://www.myhost.com/today")) {
|
||||
* // return a special input source
|
||||
* MyReader reader = new MyReader();
|
||||
* return new InputSource(reader);
|
||||
* } else {
|
||||
* // use the default behaviour
|
||||
* return null;
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* <p>The application can also use this interface to redirect system
|
||||
* identifiers to local URIs or to look up replacements in a catalog
|
||||
* (possibly by using the public identifier).</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Parser#setEntityResolver
|
||||
* @see org.xml.sax.InputSource
|
||||
*/
|
||||
public interface EntityResolver {
|
||||
|
||||
|
||||
/**
|
||||
* Allow the application to resolve external entities.
|
||||
*
|
||||
* <p>The Parser will call this method before opening any external
|
||||
* entity except the top-level document entity (including the
|
||||
* external DTD subset, external entities referenced within the
|
||||
* DTD, and external entities referenced within the document
|
||||
* element): the application may request that the parser resolve
|
||||
* the entity itself, that it use an alternative URI, or that it
|
||||
* use an entirely different input source.</p>
|
||||
*
|
||||
* <p>Application writers can use this method to redirect external
|
||||
* system identifiers to secure and/or local URIs, to look up
|
||||
* public identifiers in a catalogue, or to read an entity from a
|
||||
* database or other input source (including, for example, a dialog
|
||||
* box).</p>
|
||||
*
|
||||
* <p>If the system identifier is a URL, the SAX parser must
|
||||
* resolve it fully before reporting it to the application.</p>
|
||||
*
|
||||
* @param publicId The public identifier of the external entity
|
||||
* being referenced, or null if none was supplied.
|
||||
* @param systemId The system identifier of the external entity
|
||||
* being referenced.
|
||||
* @return An InputSource object describing the new input source,
|
||||
* or null to request that the parser open a regular
|
||||
* URI connection to the system identifier.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @exception java.io.IOException A Java-specific IO exception,
|
||||
* possibly the result of creating a new InputStream
|
||||
* or Reader for the InputSource.
|
||||
* @see org.xml.sax.InputSource
|
||||
*/
|
||||
public abstract InputSource resolveEntity (String publicId,
|
||||
String systemId)
|
||||
throws SAXException, IOException;
|
||||
|
||||
}
|
||||
|
||||
// end of EntityResolver.java
|
123
libjava/org/xml/sax/ErrorHandler.java
Normal file
123
libjava/org/xml/sax/ErrorHandler.java
Normal file
@ -0,0 +1,123 @@
|
||||
// SAX error handler.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: ErrorHandler.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
|
||||
/**
|
||||
* Basic interface for SAX error handlers.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>If a SAX application needs to implement customized error
|
||||
* handling, it must implement this interface and then register an
|
||||
* instance with the XML reader using the
|
||||
* {@link org.xml.sax.XMLReader#setErrorHandler setErrorHandler}
|
||||
* method. The parser will then report all errors and warnings
|
||||
* through this interface.</p>
|
||||
*
|
||||
* <p><strong>WARNING:</strong> If an application does <em>not</em>
|
||||
* register an ErrorHandler, XML parsing errors will go unreported
|
||||
* and bizarre behaviour may result.</p>
|
||||
*
|
||||
* <p>For XML processing errors, a SAX driver must use this interface
|
||||
* instead of throwing an exception: it is up to the application
|
||||
* to decide 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
|
||||
* {@link #fatalError fatalError} (in other words, a SAX driver class
|
||||
* could catch an exception and report a fatalError).</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Parser#setErrorHandler
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public interface ErrorHandler {
|
||||
|
||||
|
||||
/**
|
||||
* 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>
|
||||
*
|
||||
* <p>Filters may use this method to report other, non-XML warnings
|
||||
* as well.</p>
|
||||
*
|
||||
* @param exception The warning information encapsulated in a
|
||||
* SAX parse exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public abstract void warning (SAXParseException exception)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* 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>
|
||||
*
|
||||
* <p>Filters may use this method to report other, non-XML errors
|
||||
* as well.</p>
|
||||
*
|
||||
* @param exception The error information encapsulated in a
|
||||
* SAX parse exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public abstract void error (SAXParseException exception)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* 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 org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public abstract void fatalError (SAXParseException exception)
|
||||
throws SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of ErrorHandler.java
|
368
libjava/org/xml/sax/HandlerBase.java
Normal file
368
libjava/org/xml/sax/HandlerBase.java
Normal file
@ -0,0 +1,368 @@
|
||||
// SAX default handler base class.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: HandlerBase.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
/**
|
||||
* Default base class for handlers.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class implements the default behaviour for four SAX1
|
||||
* interfaces: EntityResolver, DTDHandler, DocumentHandler,
|
||||
* and ErrorHandler. It is now obsolete, but is included in SAX2 to
|
||||
* support legacy SAX1 applications. SAX2 applications should use
|
||||
* the {@link org.xml.sax.helpers.DefaultHandler DefaultHandler}
|
||||
* class instead.</p>
|
||||
*
|
||||
* <p>Application writers can extend this class when they need to
|
||||
* implement only part of an interface; parser writers can
|
||||
* instantiate this class to provide default handlers when the
|
||||
* application has not supplied its own.</p>
|
||||
*
|
||||
* <p>Note that the use of this class is optional.</p>
|
||||
*
|
||||
* @deprecated This class works with the deprecated
|
||||
* {@link org.xml.sax.DocumentHandler DocumentHandler}
|
||||
* interface. It has been replaced by the SAX2
|
||||
* {@link org.xml.sax.helpers.DefaultHandler DefaultHandler}
|
||||
* class.
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.EntityResolver
|
||||
* @see org.xml.sax.DTDHandler
|
||||
* @see org.xml.sax.DocumentHandler
|
||||
* @see org.xml.sax.ErrorHandler
|
||||
*/
|
||||
public class HandlerBase
|
||||
implements EntityResolver, DTDHandler, DocumentHandler, ErrorHandler
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of the EntityResolver interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Resolve an external entity.
|
||||
*
|
||||
* <p>Always return null, so that the parser will use the system
|
||||
* identifier provided in the XML document. This method implements
|
||||
* the SAX default behaviour: application writers can override it
|
||||
* in a subclass to do special translations such as catalog lookups
|
||||
* or URI redirection.</p>
|
||||
*
|
||||
* @param publicId The public identifer, or null if none is
|
||||
* available.
|
||||
* @param systemId The system identifier provided in the XML
|
||||
* document.
|
||||
* @return The new input source, or null to require the
|
||||
* default behaviour.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.EntityResolver#resolveEntity
|
||||
*/
|
||||
public InputSource resolveEntity (String publicId, String systemId)
|
||||
throws SAXException
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of DTDHandler interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a notation declaration.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass if they wish to keep track of the notations
|
||||
* declared in a document.</p>
|
||||
*
|
||||
* @param name The notation name.
|
||||
* @param publicId The notation public identifier, or null if not
|
||||
* available.
|
||||
* @param systemId The notation system identifier.
|
||||
* @see org.xml.sax.DTDHandler#notationDecl
|
||||
*/
|
||||
public void notationDecl (String name, String publicId, String systemId)
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of an unparsed entity declaration.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to keep track of the unparsed entities
|
||||
* declared in a document.</p>
|
||||
*
|
||||
* @param name The entity name.
|
||||
* @param publicId The entity public identifier, or null if not
|
||||
* available.
|
||||
* @param systemId The entity system identifier.
|
||||
* @param notationName The name of the associated notation.
|
||||
* @see org.xml.sax.DTDHandler#unparsedEntityDecl
|
||||
*/
|
||||
public void unparsedEntityDecl (String name, String publicId,
|
||||
String systemId, String notationName)
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of DocumentHandler interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Receive a Locator object for document events.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass if they wish to store the locator for use
|
||||
* with other document events.</p>
|
||||
*
|
||||
* @param locator A locator for all SAX document events.
|
||||
* @see org.xml.sax.DocumentHandler#setDocumentLocator
|
||||
* @see org.xml.sax.Locator
|
||||
*/
|
||||
public void setDocumentLocator (Locator locator)
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the beginning of the document.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the beginning
|
||||
* of a document (such as allocating the root node of a tree or
|
||||
* creating an output file).</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DocumentHandler#startDocument
|
||||
*/
|
||||
public void startDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of the document.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the beginning
|
||||
* of a document (such as finalising a tree or closing an output
|
||||
* file).</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DocumentHandler#endDocument
|
||||
*/
|
||||
public void endDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the start of an element.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the start of
|
||||
* each element (such as allocating a new tree node or writing
|
||||
* output to a file).</p>
|
||||
*
|
||||
* @param name The element type name.
|
||||
* @param attributes The specified or defaulted attributes.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DocumentHandler#startElement
|
||||
*/
|
||||
public void startElement (String name, AttributeList attributes)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of an element.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the end of
|
||||
* each element (such as finalising a tree node or writing
|
||||
* output to a file).</p>
|
||||
*
|
||||
* @param name The element type name.
|
||||
* @param attributes The specified or defaulted attributes.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DocumentHandler#endElement
|
||||
*/
|
||||
public void endElement (String name)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of character data inside an element.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method to take specific actions for each chunk of character data
|
||||
* (such as adding the data to a node or buffer, or printing it to
|
||||
* a file).</p>
|
||||
*
|
||||
* @param ch The characters.
|
||||
* @param start The start position in the character array.
|
||||
* @param length The number of characters to use from the
|
||||
* character array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DocumentHandler#characters
|
||||
*/
|
||||
public void characters (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of ignorable whitespace in element content.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method to take specific actions for each chunk of ignorable
|
||||
* whitespace (such as adding data to a node or buffer, or printing
|
||||
* it to a file).</p>
|
||||
*
|
||||
* @param ch The whitespace characters.
|
||||
* @param start The start position in the character array.
|
||||
* @param length The number of characters to use from the
|
||||
* character array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DocumentHandler#ignorableWhitespace
|
||||
*/
|
||||
public void ignorableWhitespace (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a processing instruction.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions for each
|
||||
* processing instruction, such as setting status variables or
|
||||
* invoking other methods.</p>
|
||||
*
|
||||
* @param target The processing instruction target.
|
||||
* @param data The processing instruction data, or null if
|
||||
* none is supplied.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DocumentHandler#processingInstruction
|
||||
*/
|
||||
public void processingInstruction (String target, String data)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of the ErrorHandler interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a parser warning.
|
||||
*
|
||||
* <p>The default implementation does nothing. Application writers
|
||||
* may override this method in a subclass to take specific actions
|
||||
* for each warning, such as inserting the message in a log file or
|
||||
* printing it to the console.</p>
|
||||
*
|
||||
* @param e The warning information encoded as an exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ErrorHandler#warning
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public void warning (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a recoverable parser error.
|
||||
*
|
||||
* <p>The default implementation does nothing. Application writers
|
||||
* may override this method in a subclass to take specific actions
|
||||
* for each error, such as inserting the message in a log file or
|
||||
* printing it to the console.</p>
|
||||
*
|
||||
* @param e The warning information encoded as an exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ErrorHandler#warning
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public void error (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Report a fatal XML parsing error.
|
||||
*
|
||||
* <p>The default implementation throws a SAXParseException.
|
||||
* Application writers may override this method in a subclass if
|
||||
* they need to take specific actions for each fatal error (such as
|
||||
* collecting all of the errors into a single report): in any case,
|
||||
* the application must stop all regular processing when this
|
||||
* method is invoked, since the document is no longer reliable, and
|
||||
* the parser may no longer report parsing events.</p>
|
||||
*
|
||||
* @param e The error information encoded as an exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ErrorHandler#fatalError
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public void fatalError (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of HandlerBase.java
|
321
libjava/org/xml/sax/InputSource.java
Normal file
321
libjava/org/xml/sax/InputSource.java
Normal file
@ -0,0 +1,321 @@
|
||||
// SAX input source.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: InputSource.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* A single input source for an XML entity.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class allows a SAX application to encapsulate information
|
||||
* about an input source in a single object, which may include
|
||||
* a public identifier, a system identifier, a byte stream (possibly
|
||||
* with a specified encoding), and/or a character stream.</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>The SAX parser will use the InputSource object to determine how
|
||||
* to read XML input. If there is a character stream available, the
|
||||
* parser will read that stream directly; if not, the parser will use
|
||||
* a byte stream, if available; if neither a character stream nor a
|
||||
* byte stream is available, the parser will attempt to open a URI
|
||||
* connection to the resource identified by the system
|
||||
* identifier.</p>
|
||||
*
|
||||
* <p>An InputSource object belongs to the application: the SAX parser
|
||||
* shall never modify it in any way (it may modify a copy if
|
||||
* necessary).</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Parser#parse
|
||||
* @see org.xml.sax.EntityResolver#resolveEntity
|
||||
* @see java.io.InputStream
|
||||
* @see java.io.Reader
|
||||
*/
|
||||
public class InputSource {
|
||||
|
||||
/**
|
||||
* Zero-argument default constructor.
|
||||
*
|
||||
* @see #setPublicId
|
||||
* @see #setSystemId
|
||||
* @see #setByteStream
|
||||
* @see #setCharacterStream
|
||||
* @see #setEncoding
|
||||
*/
|
||||
public InputSource ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new input source with a system identifier.
|
||||
*
|
||||
* <p>Applications may use setPublicId to include a
|
||||
* public identifier as well, or setEncoding to specify
|
||||
* the character encoding, if known.</p>
|
||||
*
|
||||
* <p>If the system identifier is a URL, it must be full resolved.</p>
|
||||
*
|
||||
* @param systemId The system identifier (URI).
|
||||
* @see #setPublicId
|
||||
* @see #setSystemId
|
||||
* @see #setByteStream
|
||||
* @see #setEncoding
|
||||
* @see #setCharacterStream
|
||||
*/
|
||||
public InputSource (String systemId)
|
||||
{
|
||||
setSystemId(systemId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new input source with a byte stream.
|
||||
*
|
||||
* <p>Application writers may use setSystemId to provide a base
|
||||
* for resolving relative URIs, setPublicId to include a
|
||||
* public identifier, and/or setEncoding to specify the object's
|
||||
* character encoding.</p>
|
||||
*
|
||||
* @param byteStream The raw byte stream containing the document.
|
||||
* @see #setPublicId
|
||||
* @see #setSystemId
|
||||
* @see #setEncoding
|
||||
* @see #setByteStream
|
||||
* @see #setCharacterStream
|
||||
*/
|
||||
public InputSource (InputStream byteStream)
|
||||
{
|
||||
setByteStream(byteStream);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new input source with a character stream.
|
||||
*
|
||||
* <p>Application writers may use setSystemId() to provide a base
|
||||
* for resolving relative URIs, and setPublicId to include a
|
||||
* public identifier.</p>
|
||||
*
|
||||
* <p>The character stream shall not include a byte order mark.</p>
|
||||
*
|
||||
* @see #setPublicId
|
||||
* @see #setSystemId
|
||||
* @see #setByteStream
|
||||
* @see #setCharacterStream
|
||||
*/
|
||||
public InputSource (Reader characterStream)
|
||||
{
|
||||
setCharacterStream(characterStream);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 #getPublicId
|
||||
* @see org.xml.sax.Locator#getPublicId
|
||||
* @see org.xml.sax.SAXParseException#getPublicId
|
||||
*/
|
||||
public void setPublicId (String publicId)
|
||||
{
|
||||
this.publicId = publicId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the public identifier for this input source.
|
||||
*
|
||||
* @return The public identifier, or null if none was supplied.
|
||||
* @see #setPublicId
|
||||
*/
|
||||
public String getPublicId ()
|
||||
{
|
||||
return publicId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the system identifier for this input source.
|
||||
*
|
||||
* <p>The system identifier is optional if there is a byte stream
|
||||
* or a character stream, but it is still useful to provide one,
|
||||
* since the application can use it to resolve relative URIs
|
||||
* and can include it in error messages and warnings (the parser
|
||||
* will attempt to open a connection to the URI only if
|
||||
* there is no byte stream or character stream specified).</p>
|
||||
*
|
||||
* <p>If the application knows the character encoding of the
|
||||
* object pointed to by the system identifier, it can register
|
||||
* the encoding using the setEncoding method.</p>
|
||||
*
|
||||
* <p>If the system ID is a URL, it must be fully resolved.</p>
|
||||
*
|
||||
* @param systemId The system identifier as a string.
|
||||
* @see #setEncoding
|
||||
* @see #getSystemId
|
||||
* @see org.xml.sax.Locator#getSystemId
|
||||
* @see org.xml.sax.SAXParseException#getSystemId
|
||||
*/
|
||||
public void setSystemId (String systemId)
|
||||
{
|
||||
this.systemId = systemId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the system identifier for this input source.
|
||||
*
|
||||
* <p>The getEncoding method will return the character encoding
|
||||
* of the object pointed to, or null if unknown.</p>
|
||||
*
|
||||
* <p>If the system ID is a URL, it will be fully resolved.</p>
|
||||
*
|
||||
* @return The system identifier.
|
||||
* @see #setSystemId
|
||||
* @see #getEncoding
|
||||
*/
|
||||
public String getSystemId ()
|
||||
{
|
||||
return systemId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the byte stream for this input source.
|
||||
*
|
||||
* <p>The SAX parser will ignore this if there is also a character
|
||||
* stream specified, but it will use a byte stream in preference
|
||||
* to opening a URI connection itself.</p>
|
||||
*
|
||||
* <p>If the application knows the character encoding of the
|
||||
* byte stream, it should set it with the setEncoding method.</p>
|
||||
*
|
||||
* @param byteStream A byte stream containing an XML document or
|
||||
* other entity.
|
||||
* @see #setEncoding
|
||||
* @see #getByteStream
|
||||
* @see #getEncoding
|
||||
* @see java.io.InputStream
|
||||
*/
|
||||
public void setByteStream (InputStream byteStream)
|
||||
{
|
||||
this.byteStream = byteStream;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the byte stream for this input source.
|
||||
*
|
||||
* <p>The getEncoding method will return the character
|
||||
* encoding for this byte stream, or null if unknown.</p>
|
||||
*
|
||||
* @return The byte stream, or null if none was supplied.
|
||||
* @see #getEncoding
|
||||
* @see #setByteStream
|
||||
*/
|
||||
public InputStream getByteStream ()
|
||||
{
|
||||
return byteStream;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the character encoding, if known.
|
||||
*
|
||||
* <p>The encoding must be a string acceptable for an
|
||||
* XML encoding declaration (see section 4.3.3 of the XML 1.0
|
||||
* recommendation).</p>
|
||||
*
|
||||
* <p>This method has no effect when the application provides a
|
||||
* character stream.</p>
|
||||
*
|
||||
* @param encoding A string describing the character encoding.
|
||||
* @see #setSystemId
|
||||
* @see #setByteStream
|
||||
* @see #getEncoding
|
||||
*/
|
||||
public void setEncoding (String encoding)
|
||||
{
|
||||
this.encoding = encoding;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the character encoding for a byte stream or URI.
|
||||
*
|
||||
* @return The encoding, or null if none was supplied.
|
||||
* @see #setByteStream
|
||||
* @see #getSystemId
|
||||
* @see #getByteStream
|
||||
*/
|
||||
public String getEncoding ()
|
||||
{
|
||||
return encoding;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the character stream for this input source.
|
||||
*
|
||||
* <p>If there is a character stream specified, the SAX parser
|
||||
* will ignore any byte stream and will not attempt to open
|
||||
* a URI connection to the system identifier.</p>
|
||||
*
|
||||
* @param characterStream The character stream containing the
|
||||
* XML document or other entity.
|
||||
* @see #getCharacterStream
|
||||
* @see java.io.Reader
|
||||
*/
|
||||
public void setCharacterStream (Reader characterStream)
|
||||
{
|
||||
this.characterStream = characterStream;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the character stream for this input source.
|
||||
*
|
||||
* @return The character stream, or null if none was supplied.
|
||||
* @see #setCharacterStream
|
||||
*/
|
||||
public Reader getCharacterStream ()
|
||||
{
|
||||
return characterStream;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
private String publicId;
|
||||
private String systemId;
|
||||
private InputStream byteStream;
|
||||
private String encoding;
|
||||
private Reader characterStream;
|
||||
|
||||
}
|
||||
|
||||
// end of InputSource.java
|
126
libjava/org/xml/sax/Locator.java
Normal file
126
libjava/org/xml/sax/Locator.java
Normal file
@ -0,0 +1,126 @@
|
||||
// SAX locator interface for document events.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: Locator.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
|
||||
/**
|
||||
* Interface for associating a SAX event with a document location.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>If a SAX parser provides location information to the SAX
|
||||
* application, it does so by implementing this interface and then
|
||||
* passing an instance to the application using the content
|
||||
* handler's {@link org.xml.sax.ContentHandler#setDocumentLocator
|
||||
* setDocumentLocator} method. The application can use the
|
||||
* object to obtain the location of any other content handler event
|
||||
* in the XML source document.</p>
|
||||
*
|
||||
* <p>Note that the results returned by the object will be valid only
|
||||
* during the scope of each content handler method: the application
|
||||
* will receive unpredictable results if it attempts to use the
|
||||
* locator at any other time.</p>
|
||||
*
|
||||
* <p>SAX parsers are not required to supply a locator, but they are
|
||||
* very strongly encouraged to do so. If the parser supplies a
|
||||
* locator, it must do so before reporting any other document events.
|
||||
* If no locator has been set by the time the application receives
|
||||
* the {@link org.xml.sax.ContentHandler#startDocument startDocument}
|
||||
* event, the application should assume that a locator is not
|
||||
* available.</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.ContentHandler#setDocumentLocator
|
||||
*/
|
||||
public interface Locator {
|
||||
|
||||
|
||||
/**
|
||||
* Return the public identifier for the current document event.
|
||||
*
|
||||
* <p>The return value is the public identifier of the document
|
||||
* entity or of the external parsed entity in which the markup
|
||||
* triggering the event appears.</p>
|
||||
*
|
||||
* @return A string containing the public identifier, or
|
||||
* null if none is available.
|
||||
* @see #getSystemId
|
||||
*/
|
||||
public abstract String getPublicId ();
|
||||
|
||||
|
||||
/**
|
||||
* Return the system identifier for the current document event.
|
||||
*
|
||||
* <p>The return value is the system identifier of the document
|
||||
* entity or of the external parsed entity in which the markup
|
||||
* triggering the event appears.</p>
|
||||
*
|
||||
* <p>If the system identifier is a URL, the parser must resolve it
|
||||
* fully before passing it to the application.</p>
|
||||
*
|
||||
* @return A string containing the system identifier, or null
|
||||
* if none is available.
|
||||
* @see #getPublicId
|
||||
*/
|
||||
public abstract String getSystemId ();
|
||||
|
||||
|
||||
/**
|
||||
* Return the line number where the current document event ends.
|
||||
*
|
||||
* <p><strong>Warning:</strong> The return value from the method
|
||||
* is intended only as an approximation for the sake of error
|
||||
* reporting; it is not intended to provide sufficient information
|
||||
* to edit the character content of the original XML document.</p>
|
||||
*
|
||||
* <p>The return value is an approximation of the line number
|
||||
* in the document entity or external parsed entity where the
|
||||
* markup triggering the event appears.</p>
|
||||
*
|
||||
* <p>If possible, the SAX driver should provide the line position
|
||||
* of the first character after the text associated with the document
|
||||
* event. The first line in the document is line 1.</p>
|
||||
*
|
||||
* @return The line number, or -1 if none is available.
|
||||
* @see #getColumnNumber
|
||||
*/
|
||||
public abstract int getLineNumber ();
|
||||
|
||||
|
||||
/**
|
||||
* Return the column number where the current document event ends.
|
||||
*
|
||||
* <p><strong>Warning:</strong> The return value from the method
|
||||
* is intended only as an approximation for the sake of error
|
||||
* reporting; it is not intended to provide sufficient information
|
||||
* to edit the character content of the original XML document.</p>
|
||||
*
|
||||
* <p>The return value is an approximation of the column number
|
||||
* in the document entity or external parsed entity where the
|
||||
* markup triggering the event appears.</p>
|
||||
*
|
||||
* <p>If possible, the SAX driver should provide the line position
|
||||
* of the first character after the text associated with the document
|
||||
* event.</p>
|
||||
*
|
||||
* <p>If possible, the SAX driver should provide the line position
|
||||
* of the first character after the text associated with the document
|
||||
* event. The first column in each line is column 1.</p>
|
||||
*
|
||||
* @return The column number, or -1 if none is available.
|
||||
* @see #getLineNumber
|
||||
*/
|
||||
public abstract int getColumnNumber ();
|
||||
|
||||
}
|
||||
|
||||
// end of Locator.java
|
207
libjava/org/xml/sax/Parser.java
Normal file
207
libjava/org/xml/sax/Parser.java
Normal file
@ -0,0 +1,207 @@
|
||||
// SAX parser interface.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: Parser.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
|
||||
/**
|
||||
* Basic interface for SAX (Simple API for XML) parsers.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This was the main event supplier interface for SAX1; it has
|
||||
* been replaced in SAX2 by {@link org.xml.sax.XMLReader XMLReader},
|
||||
* which includes Namespace support and sophisticated configurability
|
||||
* and extensibility.</p>
|
||||
*
|
||||
* <p>All SAX1 parsers must implement this basic interface: it allows
|
||||
* applications to register handlers for different types of events
|
||||
* and to initiate a parse from a URI, or a character stream.</p>
|
||||
*
|
||||
* <p>All SAX1 parsers must also implement a zero-argument constructor
|
||||
* (though other constructors are also allowed).</p>
|
||||
*
|
||||
* <p>SAX1 parsers are reusable but not re-entrant: the application
|
||||
* may reuse a parser object (possibly with a different input source)
|
||||
* once the first parse has completed successfully, but it may not
|
||||
* invoke the parse() methods recursively within a parse.</p>
|
||||
*
|
||||
* @deprecated This interface has been replaced by the SAX2
|
||||
* {@link org.xml.sax.XMLReader XMLReader}
|
||||
* interface, which includes Namespace support.
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.EntityResolver
|
||||
* @see org.xml.sax.DTDHandler
|
||||
* @see org.xml.sax.DocumentHandler
|
||||
* @see org.xml.sax.ErrorHandler
|
||||
* @see org.xml.sax.HandlerBase
|
||||
* @see org.xml.sax.InputSource
|
||||
*/
|
||||
public interface Parser
|
||||
{
|
||||
|
||||
/**
|
||||
* Allow an application to request a locale for errors and warnings.
|
||||
*
|
||||
* <p>SAX parsers are not required to provide localisation for errors
|
||||
* and warnings; if they cannot support the requested locale,
|
||||
* however, they must throw a SAX exception. Applications may
|
||||
* not request a locale change in the middle of a parse.</p>
|
||||
*
|
||||
* @param locale A Java Locale object.
|
||||
* @exception org.xml.sax.SAXException Throws an exception
|
||||
* (using the previous or default locale) if the
|
||||
* requested locale is not supported.
|
||||
* @see org.xml.sax.SAXException
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public abstract void setLocale (Locale locale)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register a custom entity resolver.
|
||||
*
|
||||
* <p>If the application does not register an entity resolver, the
|
||||
* SAX parser will resolve system identifiers and open connections
|
||||
* to entities itself (this is the default behaviour implemented in
|
||||
* HandlerBase).</p>
|
||||
*
|
||||
* <p>Applications may register a new or different entity resolver
|
||||
* in the middle of a parse, and the SAX parser must begin using
|
||||
* the new resolver immediately.</p>
|
||||
*
|
||||
* @param resolver The object for resolving entities.
|
||||
* @see EntityResolver
|
||||
* @see HandlerBase
|
||||
*/
|
||||
public abstract void setEntityResolver (EntityResolver resolver);
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register a DTD event handler.
|
||||
*
|
||||
* <p>If the application does not register a DTD handler, all DTD
|
||||
* events reported by the SAX parser will be silently
|
||||
* ignored (this is the default behaviour implemented by
|
||||
* HandlerBase).</p>
|
||||
*
|
||||
* <p>Applications may register a new or different
|
||||
* handler in the middle of a parse, and the SAX parser must
|
||||
* begin using the new handler immediately.</p>
|
||||
*
|
||||
* @param handler The DTD handler.
|
||||
* @see DTDHandler
|
||||
* @see HandlerBase
|
||||
*/
|
||||
public abstract void setDTDHandler (DTDHandler handler);
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register a document event handler.
|
||||
*
|
||||
* <p>If the application does not register a document handler, all
|
||||
* document events reported by the SAX parser will be silently
|
||||
* ignored (this is the default behaviour implemented by
|
||||
* HandlerBase).</p>
|
||||
*
|
||||
* <p>Applications may register a new or different handler in the
|
||||
* middle of a parse, and the SAX parser must begin using the new
|
||||
* handler immediately.</p>
|
||||
*
|
||||
* @param handler The document handler.
|
||||
* @see DocumentHandler
|
||||
* @see HandlerBase
|
||||
*/
|
||||
public abstract void setDocumentHandler (DocumentHandler handler);
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register an error event handler.
|
||||
*
|
||||
* <p>If the application does not register an error event handler,
|
||||
* all error events reported by the SAX parser will be silently
|
||||
* ignored, except for fatalError, which will throw a SAXException
|
||||
* (this is the default behaviour implemented by HandlerBase).</p>
|
||||
*
|
||||
* <p>Applications may register a new or different handler in the
|
||||
* middle of a parse, and the SAX parser must begin using the new
|
||||
* handler immediately.</p>
|
||||
*
|
||||
* @param handler The error handler.
|
||||
* @see ErrorHandler
|
||||
* @see SAXException
|
||||
* @see HandlerBase
|
||||
*/
|
||||
public abstract void setErrorHandler (ErrorHandler handler);
|
||||
|
||||
|
||||
/**
|
||||
* Parse an XML document.
|
||||
*
|
||||
* <p>The application can use this method to instruct the SAX parser
|
||||
* to begin parsing an XML document from any valid input
|
||||
* source (a character stream, a byte stream, or a URI).</p>
|
||||
*
|
||||
* <p>Applications may not invoke this method while a parse is in
|
||||
* progress (they should create a new Parser instead for each
|
||||
* additional XML document). Once a parse is complete, an
|
||||
* application may reuse the same Parser object, possibly with a
|
||||
* different input source.</p>
|
||||
*
|
||||
* @param source The input source for the top-level of the
|
||||
* XML document.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @exception java.io.IOException An IO exception from the parser,
|
||||
* possibly from a byte stream or character stream
|
||||
* supplied by the application.
|
||||
* @see org.xml.sax.InputSource
|
||||
* @see #parse(java.lang.String)
|
||||
* @see #setEntityResolver
|
||||
* @see #setDTDHandler
|
||||
* @see #setDocumentHandler
|
||||
* @see #setErrorHandler
|
||||
*/
|
||||
public abstract void parse (InputSource source)
|
||||
throws SAXException, IOException;
|
||||
|
||||
|
||||
/**
|
||||
* Parse an XML document from a system identifier (URI).
|
||||
*
|
||||
* <p>This method is a shortcut for the common case of reading a
|
||||
* document from a system identifier. It is the exact
|
||||
* equivalent of the following:</p>
|
||||
*
|
||||
* <pre>
|
||||
* parse(new InputSource(systemId));
|
||||
* </pre>
|
||||
*
|
||||
* <p>If the system identifier is a URL, it must be fully resolved
|
||||
* by the application before it is passed to the parser.</p>
|
||||
*
|
||||
* @param systemId The system identifier (URI).
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @exception java.io.IOException An IO exception from the parser,
|
||||
* possibly from a byte stream or character stream
|
||||
* supplied by the application.
|
||||
* @see #parse(org.xml.sax.InputSource)
|
||||
*/
|
||||
public abstract void parse (String systemId)
|
||||
throws SAXException, IOException;
|
||||
|
||||
}
|
||||
|
||||
// end of Parser.java
|
144
libjava/org/xml/sax/SAXException.java
Normal file
144
libjava/org/xml/sax/SAXException.java
Normal file
@ -0,0 +1,144 @@
|
||||
// SAX exception class.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: SAXException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
/**
|
||||
* Encapsulate a general SAX error or warning.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class can contain basic error or warning information from
|
||||
* either the XML 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
|
||||
* {@link org.xml.sax.SAXParseException SAXParseException} subclass.</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public class SAXException extends Exception {
|
||||
|
||||
|
||||
/**
|
||||
* Create a new SAXException.
|
||||
*
|
||||
* @param message The error or warning message.
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public SAXException (String message) {
|
||||
super(message);
|
||||
this.exception = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new SAXException wrapping an existing exception.
|
||||
*
|
||||
* <p>The existing exception will be embedded in the new
|
||||
* one, and its message will become the default message for
|
||||
* the SAXException.</p>
|
||||
*
|
||||
* @param e The exception to be wrapped in a SAXException.
|
||||
*/
|
||||
public SAXException (Exception e)
|
||||
{
|
||||
super();
|
||||
this.exception = e;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new SAXException from an existing exception.
|
||||
*
|
||||
* <p>The existing exception will be embedded in the new
|
||||
* one, but the new exception will have its own message.</p>
|
||||
*
|
||||
* @param message The detail message.
|
||||
* @param e The exception to be wrapped in a SAXException.
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public SAXException (String message, Exception e)
|
||||
{
|
||||
super(message);
|
||||
this.exception = e;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return a detail message for this exception.
|
||||
*
|
||||
* <p>If there is an embedded exception, and if the SAXException
|
||||
* has no detail message of its own, this method will return
|
||||
* the detail message from the embedded exception.</p>
|
||||
*
|
||||
* @return The error or warning message.
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public String getMessage ()
|
||||
{
|
||||
String message = super.getMessage();
|
||||
|
||||
if (message == null && exception != null) {
|
||||
return exception.getMessage();
|
||||
} else {
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the embedded exception, if any.
|
||||
*
|
||||
* @return The embedded exception, or null if there is none.
|
||||
*/
|
||||
public Exception getException ()
|
||||
{
|
||||
return exception;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Override toString to pick up any embedded exception.
|
||||
*
|
||||
* @return A string representation of this exception.
|
||||
*/
|
||||
public String toString ()
|
||||
{
|
||||
if (exception != null) {
|
||||
return exception.toString();
|
||||
} else {
|
||||
return super.toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* @serial The embedded exception if tunnelling, or null.
|
||||
*/
|
||||
private Exception exception;
|
||||
|
||||
}
|
||||
|
||||
// end of SAXException.java
|
44
libjava/org/xml/sax/SAXNotRecognizedException.java
Normal file
44
libjava/org/xml/sax/SAXNotRecognizedException.java
Normal file
@ -0,0 +1,44 @@
|
||||
// SAXNotRecognizedException.java - unrecognized feature or value.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the Public Domain.
|
||||
|
||||
// $Id: SAXNotRecognizedException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
|
||||
/**
|
||||
* Exception class for an unrecognized identifier.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>An XMLReader will throw this exception when it finds an
|
||||
* unrecognized feature or property identifier; SAX applications and
|
||||
* extensions may use this class for other, similar purposes.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.SAXNotSupportedException
|
||||
*/
|
||||
public class SAXNotRecognizedException extends SAXException
|
||||
{
|
||||
|
||||
/**
|
||||
* Construct a new exception with the given message.
|
||||
*
|
||||
* @param message The text message of the exception.
|
||||
*/
|
||||
public SAXNotRecognizedException (String message)
|
||||
{
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of SAXNotRecognizedException.java
|
44
libjava/org/xml/sax/SAXNotSupportedException.java
Normal file
44
libjava/org/xml/sax/SAXNotSupportedException.java
Normal file
@ -0,0 +1,44 @@
|
||||
// SAXNotSupportedException.java - unsupported feature or value.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the Public Domain.
|
||||
|
||||
// $Id: SAXNotSupportedException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
/**
|
||||
* Exception class for an unsupported operation.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>An XMLReader will throw this exception when it recognizes a
|
||||
* feature or property identifier, but cannot perform the requested
|
||||
* operation (setting a state or value). Other SAX2 applications and
|
||||
* extensions may use this class for similar purposes.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.SAXNotRecognizedException
|
||||
*/
|
||||
public class SAXNotSupportedException extends SAXException
|
||||
{
|
||||
|
||||
/**
|
||||
* Construct a new exception with the given message.
|
||||
*
|
||||
* @param message The text message of the exception.
|
||||
*/
|
||||
public SAXNotSupportedException (String message)
|
||||
{
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of SAXNotSupportedException.java
|
264
libjava/org/xml/sax/SAXParseException.java
Normal file
264
libjava/org/xml/sax/SAXParseException.java
Normal file
@ -0,0 +1,264 @@
|
||||
// SAX exception class.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: SAXParseException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
/**
|
||||
* Encapsulate an XML parse error or warning.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <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 {@link org.xml.sax.ErrorHandler 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 {@link org.xml.sax.SAXException
|
||||
* SAXException}, it inherits the ability to wrap another exception.</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.SAXException
|
||||
* @see org.xml.sax.Locator
|
||||
* @see org.xml.sax.ErrorHandler
|
||||
*/
|
||||
public class SAXParseException extends SAXException {
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Constructors.
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* 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 {@link org.xml.sax.ContentHandler
|
||||
* ContentHandler} callback.</p>
|
||||
*
|
||||
* @param message The error or warning message.
|
||||
* @param locator The locator object for the error or warning (may be
|
||||
* null).
|
||||
* @see org.xml.sax.Locator
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public SAXParseException (String message, Locator locator) {
|
||||
super(message);
|
||||
if (locator != null) {
|
||||
init(locator.getPublicId(), locator.getSystemId(),
|
||||
locator.getLineNumber(), locator.getColumnNumber());
|
||||
} else {
|
||||
init(null, null, -1, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wrap an existing exception in a SAXParseException.
|
||||
*
|
||||
* <p>This constructor is especially useful when an application is
|
||||
* creating its own exception from within a {@link org.xml.sax.ContentHandler
|
||||
* ContentHandler} callback, and needs to wrap an existing exception that is not a
|
||||
* subclass of {@link org.xml.sax.SAXException SAXException}.</p>
|
||||
*
|
||||
* @param message The error or warning message, or null to
|
||||
* use the message from the embedded exception.
|
||||
* @param locator The locator object for the error or warning (may be
|
||||
* null).
|
||||
* @param e Any exception.
|
||||
* @see org.xml.sax.Locator
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public SAXParseException (String message, Locator locator,
|
||||
Exception e) {
|
||||
super(message, e);
|
||||
if (locator != null) {
|
||||
init(locator.getPublicId(), locator.getSystemId(),
|
||||
locator.getLineNumber(), locator.getColumnNumber());
|
||||
} else {
|
||||
init(null, null, -1, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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
|
||||
* cause the error or warning.
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public SAXParseException (String message, String publicId, String systemId,
|
||||
int lineNumber, int columnNumber)
|
||||
{
|
||||
super(message);
|
||||
init(publicId, systemId, lineNumber, columnNumber);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new SAXParseException with an embedded exception.
|
||||
*
|
||||
* <p>This constructor is most useful for parser writers who
|
||||
* need to wrap an exception that is not a subclass of
|
||||
* {@link org.xml.sax.SAXException SAXException}.</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, or null to use
|
||||
* the message from the embedded exception.
|
||||
* @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
|
||||
* cause the error or warning.
|
||||
* @param e Another exception to embed in this one.
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public SAXParseException (String message, String publicId, String systemId,
|
||||
int lineNumber, int columnNumber, Exception e)
|
||||
{
|
||||
super(message, e);
|
||||
init(publicId, systemId, lineNumber, columnNumber);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Internal initialization method.
|
||||
*
|
||||
* @param publicId The public identifier of the entity which generated the exception,
|
||||
* or null.
|
||||
* @param systemId The system identifier of the entity which generated the exception,
|
||||
* or null.
|
||||
* @param lineNumber The line number of the error, or -1.
|
||||
* @param columnNumber The column number of the error, or -1.
|
||||
*/
|
||||
private void init (String publicId, String systemId,
|
||||
int lineNumber, int columnNumber)
|
||||
{
|
||||
this.publicId = publicId;
|
||||
this.systemId = systemId;
|
||||
this.lineNumber = lineNumber;
|
||||
this.columnNumber = columnNumber;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 org.xml.sax.Locator#getPublicId
|
||||
*/
|
||||
public String getPublicId ()
|
||||
{
|
||||
return this.publicId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 org.xml.sax.Locator#getSystemId
|
||||
*/
|
||||
public String getSystemId ()
|
||||
{
|
||||
return this.systemId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 org.xml.sax.Locator#getLineNumber
|
||||
*/
|
||||
public int getLineNumber ()
|
||||
{
|
||||
return this.lineNumber;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 org.xml.sax.Locator#getColumnNumber
|
||||
*/
|
||||
public int getColumnNumber ()
|
||||
{
|
||||
return this.columnNumber;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* @serial The public identifier, or null.
|
||||
* @see #getPublicId
|
||||
*/
|
||||
private String publicId;
|
||||
|
||||
|
||||
/**
|
||||
* @serial The system identifier, or null.
|
||||
* @see #getSystemId
|
||||
*/
|
||||
private String systemId;
|
||||
|
||||
|
||||
/**
|
||||
* @serial The line number, or -1.
|
||||
* @see #getLineNumber
|
||||
*/
|
||||
private int lineNumber;
|
||||
|
||||
|
||||
/**
|
||||
* @serial The column number, or -1.
|
||||
* @see #getColumnNumber
|
||||
*/
|
||||
private int columnNumber;
|
||||
|
||||
}
|
||||
|
||||
// end of SAXParseException.java
|
65
libjava/org/xml/sax/XMLFilter.java
Normal file
65
libjava/org/xml/sax/XMLFilter.java
Normal file
@ -0,0 +1,65 @@
|
||||
// XMLFilter.java - filter SAX2 events.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the Public Domain.
|
||||
|
||||
// $Id: XMLFilter.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
|
||||
/**
|
||||
* Interface for an XML filter.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>An XML filter is like an XML reader, except that it obtains its
|
||||
* events from another XML reader rather than a primary source like
|
||||
* an XML document or database. Filters can modify a stream of
|
||||
* events as they pass on to the final application.</p>
|
||||
*
|
||||
* <p>The XMLFilterImpl helper class provides a convenient base
|
||||
* for creating SAX2 filters, by passing on all {@link org.xml.sax.EntityResolver
|
||||
* EntityResolver}, {@link org.xml.sax.DTDHandler DTDHandler},
|
||||
* {@link org.xml.sax.ContentHandler ContentHandler} and {@link org.xml.sax.ErrorHandler
|
||||
* ErrorHandler} events automatically.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.helpers.XMLFilterImpl
|
||||
*/
|
||||
public interface XMLFilter extends XMLReader
|
||||
{
|
||||
|
||||
/**
|
||||
* Set the parent reader.
|
||||
*
|
||||
* <p>This method allows the application to link the filter to
|
||||
* a parent reader (which may be another filter). The argument
|
||||
* may not be null.</p>
|
||||
*
|
||||
* @param parent The parent reader.
|
||||
*/
|
||||
public abstract void setParent (XMLReader parent);
|
||||
|
||||
|
||||
/**
|
||||
* Get the parent reader.
|
||||
*
|
||||
* <p>This method allows the application to query the parent
|
||||
* reader (which may be another filter). It is generally a
|
||||
* bad idea to perform any operations on the parent reader
|
||||
* directly: they should all pass through this filter.</p>
|
||||
*
|
||||
* @return The parent filter, or null if none has been set.
|
||||
*/
|
||||
public abstract XMLReader getParent ();
|
||||
|
||||
}
|
||||
|
||||
// end of XMLFilter.java
|
415
libjava/org/xml/sax/XMLReader.java
Normal file
415
libjava/org/xml/sax/XMLReader.java
Normal file
@ -0,0 +1,415 @@
|
||||
// XMLReader.java - read an XML document.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the Public Domain.
|
||||
|
||||
// $Id: XMLReader.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
|
||||
|
||||
package org.xml.sax;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
/**
|
||||
* Interface for reading an XML document using callbacks.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p><strong>Note:</strong> despite its name, this interface does
|
||||
* <em>not</em> extend the standard Java {@link java.io.Reader Reader}
|
||||
* interface, because reading XML is a fundamentally different activity
|
||||
* than reading character data.</p>
|
||||
*
|
||||
* <p>XMLReader is the interface that an XML parser's SAX2 driver must
|
||||
* implement. This interface allows an application to set and
|
||||
* query features and properties in the parser, to register
|
||||
* event handlers for document processing, and to initiate
|
||||
* a document parse.</p>
|
||||
*
|
||||
* <p>All SAX interfaces are assumed to be synchronous: the
|
||||
* {@link #parse parse} methods must not return until parsing
|
||||
* is complete, and readers must wait for an event-handler callback
|
||||
* to return before reporting the next event.</p>
|
||||
*
|
||||
* <p>This interface replaces the (now deprecated) SAX 1.0 {@link
|
||||
* org.xml.sax.Parser Parser} interface. The XMLReader interface
|
||||
* contains two important enhancements over the old Parser
|
||||
* interface:</p>
|
||||
*
|
||||
* <ol>
|
||||
* <li>it adds a standard way to query and set features and
|
||||
* properties; and</li>
|
||||
* <li>it adds Namespace support, which is required for many
|
||||
* higher-level XML standards.</li>
|
||||
* </ol>
|
||||
*
|
||||
* <p>There are adapters available to convert a SAX1 Parser to
|
||||
* a SAX2 XMLReader and vice-versa.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.XMLFilter
|
||||
* @see org.xml.sax.helpers.ParserAdapter
|
||||
* @see org.xml.sax.helpers.XMLReaderAdapter
|
||||
*/
|
||||
public interface XMLReader
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Configuration.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Look up the value of a feature.
|
||||
*
|
||||
* <p>The feature name is any fully-qualified URI. It is
|
||||
* possible for an XMLReader to recognize a feature name but
|
||||
* to be unable to return its value; this is especially true
|
||||
* in the case of an adapter for a SAX1 Parser, which has
|
||||
* no way of knowing whether the underlying parser is
|
||||
* performing validation or expanding external entities.</p>
|
||||
*
|
||||
* <p>All XMLReaders are required to recognize the
|
||||
* http://xml.org/sax/features/namespaces and the
|
||||
* http://xml.org/sax/features/namespace-prefixes feature names.</p>
|
||||
*
|
||||
* <p>Some feature values may be available only in specific
|
||||
* contexts, such as before, during, or after a parse.</p>
|
||||
*
|
||||
* <p>Typical usage is something like this:</p>
|
||||
*
|
||||
* <pre>
|
||||
* XMLReader r = new MySAXDriver();
|
||||
*
|
||||
* // try to activate validation
|
||||
* try {
|
||||
* r.setFeature("http://xml.org/sax/features/validation", true);
|
||||
* } catch (SAXException e) {
|
||||
* System.err.println("Cannot activate validation.");
|
||||
* }
|
||||
*
|
||||
* // register event handlers
|
||||
* r.setContentHandler(new MyContentHandler());
|
||||
* r.setErrorHandler(new MyErrorHandler());
|
||||
*
|
||||
* // parse the first document
|
||||
* try {
|
||||
* r.parse("http://www.foo.com/mydoc.xml");
|
||||
* } catch (IOException e) {
|
||||
* System.err.println("I/O exception reading XML document");
|
||||
* } catch (SAXException e) {
|
||||
* System.err.println("XML exception reading document.");
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* <p>Implementors are free (and encouraged) to invent their own features,
|
||||
* using names built on their own URIs.</p>
|
||||
*
|
||||
* @param name The feature name, which is a fully-qualified URI.
|
||||
* @return The current state of the feature (true or false).
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the feature name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the feature name but
|
||||
* cannot determine its value at this time.
|
||||
* @see #setFeature
|
||||
*/
|
||||
public boolean getFeature (String name)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException;
|
||||
|
||||
|
||||
/**
|
||||
* Set the state of a feature.
|
||||
*
|
||||
* <p>The feature name is any fully-qualified URI. It is
|
||||
* possible for an XMLReader to recognize a feature name but
|
||||
* to be unable to set its value; this is especially true
|
||||
* in the case of an adapter for a SAX1 {@link org.xml.sax.Parser Parser},
|
||||
* which has no way of affecting whether the underlying parser is
|
||||
* validating, for example.</p>
|
||||
*
|
||||
* <p>All XMLReaders are required to support setting
|
||||
* http://xml.org/sax/features/namespaces to true and
|
||||
* http://xml.org/sax/features/namespace-prefixes to false.</p>
|
||||
*
|
||||
* <p>Some feature values may be immutable or mutable only
|
||||
* in specific contexts, such as before, during, or after
|
||||
* a parse.</p>
|
||||
*
|
||||
* @param name The feature name, which is a fully-qualified URI.
|
||||
* @param state The requested state of the feature (true or false).
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the feature name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the feature name but
|
||||
* cannot set the requested value.
|
||||
* @see #getFeature
|
||||
*/
|
||||
public void setFeature (String name, boolean value)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException;
|
||||
|
||||
|
||||
/**
|
||||
* Look up the value of a property.
|
||||
*
|
||||
* <p>The property name is any fully-qualified URI. It is
|
||||
* possible for an XMLReader to recognize a property name but
|
||||
* to be unable to return its state; this is especially true
|
||||
* in the case of an adapter for a SAX1 {@link org.xml.sax.Parser
|
||||
* Parser}.</p>
|
||||
*
|
||||
* <p>XMLReaders are not required to recognize any specific
|
||||
* property names, though an initial core set is documented for
|
||||
* SAX2.</p>
|
||||
*
|
||||
* <p>Some property values may be available only in specific
|
||||
* contexts, such as before, during, or after a parse.</p>
|
||||
*
|
||||
* <p>Implementors are free (and encouraged) to invent their own properties,
|
||||
* using names built on their own URIs.</p>
|
||||
*
|
||||
* @param name The property name, which is a fully-qualified URI.
|
||||
* @return The current value of the property.
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the property name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the property name but
|
||||
* cannot determine its value at this time.
|
||||
* @see #setProperty
|
||||
*/
|
||||
public Object getProperty (String name)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException;
|
||||
|
||||
|
||||
/**
|
||||
* Set the value of a property.
|
||||
*
|
||||
* <p>The property name is any fully-qualified URI. It is
|
||||
* possible for an XMLReader to recognize a property name but
|
||||
* to be unable to set its value; this is especially true
|
||||
* in the case of an adapter for a SAX1 {@link org.xml.sax.Parser
|
||||
* Parser}.</p>
|
||||
*
|
||||
* <p>XMLReaders are not required to recognize setting
|
||||
* any specific property names, though a core set is provided with
|
||||
* SAX2.</p>
|
||||
*
|
||||
* <p>Some property values may be immutable or mutable only
|
||||
* in specific contexts, such as before, during, or after
|
||||
* a parse.</p>
|
||||
*
|
||||
* <p>This method is also the standard mechanism for setting
|
||||
* extended handlers.</p>
|
||||
*
|
||||
* @param name The property name, which is a fully-qualified URI.
|
||||
* @param state The requested value for the property.
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the property name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the property name but
|
||||
* cannot set the requested value.
|
||||
*/
|
||||
public void setProperty (String name, Object value)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException;
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Event handlers.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register an entity resolver.
|
||||
*
|
||||
* <p>If the application does not register an entity resolver,
|
||||
* the XMLReader will perform its own default resolution.</p>
|
||||
*
|
||||
* <p>Applications may register a new or different resolver in the
|
||||
* middle of a parse, and the SAX parser must begin using the new
|
||||
* resolver immediately.</p>
|
||||
*
|
||||
* @param resolver The entity resolver.
|
||||
* @exception java.lang.NullPointerException If the resolver
|
||||
* argument is null.
|
||||
* @see #getEntityResolver
|
||||
*/
|
||||
public void setEntityResolver (EntityResolver resolver);
|
||||
|
||||
|
||||
/**
|
||||
* Return the current entity resolver.
|
||||
*
|
||||
* @return The current entity resolver, or null if none
|
||||
* has been registered.
|
||||
* @see #setEntityResolver
|
||||
*/
|
||||
public EntityResolver getEntityResolver ();
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register a DTD event handler.
|
||||
*
|
||||
* <p>If the application does not register a DTD handler, all DTD
|
||||
* events reported by the SAX parser will be silently ignored.</p>
|
||||
*
|
||||
* <p>Applications may register a new or different handler in the
|
||||
* middle of a parse, and the SAX parser must begin using the new
|
||||
* handler immediately.</p>
|
||||
*
|
||||
* @param handler The DTD handler.
|
||||
* @exception java.lang.NullPointerException If the handler
|
||||
* argument is null.
|
||||
* @see #getDTDHandler
|
||||
*/
|
||||
public void setDTDHandler (DTDHandler handler);
|
||||
|
||||
|
||||
/**
|
||||
* Return the current DTD handler.
|
||||
*
|
||||
* @return The current DTD handler, or null if none
|
||||
* has been registered.
|
||||
* @see #setDTDHandler
|
||||
*/
|
||||
public DTDHandler getDTDHandler ();
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register a content event handler.
|
||||
*
|
||||
* <p>If the application does not register a content handler, all
|
||||
* content events reported by the SAX parser will be silently
|
||||
* ignored.</p>
|
||||
*
|
||||
* <p>Applications may register a new or different handler in the
|
||||
* middle of a parse, and the SAX parser must begin using the new
|
||||
* handler immediately.</p>
|
||||
*
|
||||
* @param handler The content handler.
|
||||
* @exception java.lang.NullPointerException If the handler
|
||||
* argument is null.
|
||||
* @see #getContentHandler
|
||||
*/
|
||||
public void setContentHandler (ContentHandler handler);
|
||||
|
||||
|
||||
/**
|
||||
* Return the current content handler.
|
||||
*
|
||||
* @return The current content handler, or null if none
|
||||
* has been registered.
|
||||
* @see #setContentHandler
|
||||
*/
|
||||
public ContentHandler getContentHandler ();
|
||||
|
||||
|
||||
/**
|
||||
* Allow an application to register an error event handler.
|
||||
*
|
||||
* <p>If the application does not register an error handler, all
|
||||
* error events reported by the SAX parser will be silently
|
||||
* ignored; however, normal processing may not continue. It is
|
||||
* highly recommended that all SAX applications implement an
|
||||
* error handler to avoid unexpected bugs.</p>
|
||||
*
|
||||
* <p>Applications may register a new or different handler in the
|
||||
* middle of a parse, and the SAX parser must begin using the new
|
||||
* handler immediately.</p>
|
||||
*
|
||||
* @param handler The error handler.
|
||||
* @exception java.lang.NullPointerException If the handler
|
||||
* argument is null.
|
||||
* @see #getErrorHandler
|
||||
*/
|
||||
public void setErrorHandler (ErrorHandler handler);
|
||||
|
||||
|
||||
/**
|
||||
* Return the current error handler.
|
||||
*
|
||||
* @return The current error handler, or null if none
|
||||
* has been registered.
|
||||
* @see #setErrorHandler
|
||||
*/
|
||||
public ErrorHandler getErrorHandler ();
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Parsing.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Parse an XML document.
|
||||
*
|
||||
* <p>The application can use this method to instruct the XML
|
||||
* reader to begin parsing an XML document from any valid input
|
||||
* source (a character stream, a byte stream, or a URI).</p>
|
||||
*
|
||||
* <p>Applications may not invoke this method while a parse is in
|
||||
* progress (they should create a new XMLReader instead for each
|
||||
* nested XML document). Once a parse is complete, an
|
||||
* application may reuse the same XMLReader object, possibly with a
|
||||
* different input source.</p>
|
||||
*
|
||||
* <p>During the parse, the XMLReader will provide information
|
||||
* about the XML document through the registered event
|
||||
* handlers.</p>
|
||||
*
|
||||
* <p>This method is synchronous: it will not return until parsing
|
||||
* has ended. If a client application wants to terminate
|
||||
* parsing early, it should throw an exception.</p>
|
||||
*
|
||||
* @param source The input source for the top-level of the
|
||||
* XML document.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @exception java.io.IOException An IO exception from the parser,
|
||||
* possibly from a byte stream or character stream
|
||||
* supplied by the application.
|
||||
* @see org.xml.sax.InputSource
|
||||
* @see #parse(java.lang.String)
|
||||
* @see #setEntityResolver
|
||||
* @see #setDTDHandler
|
||||
* @see #setContentHandler
|
||||
* @see #setErrorHandler
|
||||
*/
|
||||
public void parse (InputSource input)
|
||||
throws IOException, SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Parse an XML document from a system identifier (URI).
|
||||
*
|
||||
* <p>This method is a shortcut for the common case of reading a
|
||||
* document from a system identifier. It is the exact
|
||||
* equivalent of the following:</p>
|
||||
*
|
||||
* <pre>
|
||||
* parse(new InputSource(systemId));
|
||||
* </pre>
|
||||
*
|
||||
* <p>If the system identifier is a URL, it must be fully resolved
|
||||
* by the application before it is passed to the parser.</p>
|
||||
*
|
||||
* @param systemId The system identifier (URI).
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @exception java.io.IOException An IO exception from the parser,
|
||||
* possibly from a byte stream or character stream
|
||||
* supplied by the application.
|
||||
* @see #parse(org.xml.sax.InputSource)
|
||||
*/
|
||||
public void parse (String systemId)
|
||||
throws IOException, SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of XMLReader.java
|
131
libjava/org/xml/sax/ext/DeclHandler.java
Normal file
131
libjava/org/xml/sax/ext/DeclHandler.java
Normal file
@ -0,0 +1,131 @@
|
||||
// DeclHandler.java - Optional handler for DTD declaration events.
|
||||
// Public Domain: no warranty.
|
||||
// $Id: DeclHandler.java,v 1.1 2000/10/02 02:43:19 sboag Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* SAX2 extension handler for DTD declaration events.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This is an optional extension handler for SAX2 to provide
|
||||
* information about DTD declarations in an XML document. XML
|
||||
* readers are not required to support this handler.</p>
|
||||
*
|
||||
* <p>Note that data-related DTD declarations (unparsed entities and
|
||||
* notations) are already reported through the {@link
|
||||
* org.xml.sax.DTDHandler DTDHandler} interface.</p>
|
||||
*
|
||||
* <p>If you are using the declaration handler together with a lexical
|
||||
* handler, all of the events will occur between the
|
||||
* {@link org.xml.sax.ext.LexicalHandler#startDTD startDTD} and the
|
||||
* {@link org.xml.sax.ext.LexicalHandler#endDTD endDTD} events.</p>
|
||||
*
|
||||
* <p>To set the DeclHandler for an XML reader, use the
|
||||
* {@link org.xml.sax.XMLReader#setProperty setProperty} method
|
||||
* with the propertyId "http://xml.org/sax/handlers/DeclHandler".
|
||||
* If the reader does not support declaration events, it will throw a
|
||||
* {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
|
||||
* or a
|
||||
* {@link org.xml.sax.SAXNotSupportedException SAXNotSupportedException}
|
||||
* when you attempt to register the handler.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0beta
|
||||
* @see org.xml.sax.XMLReader
|
||||
*/
|
||||
public interface DeclHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* Report an element type declaration.
|
||||
*
|
||||
* <p>The content model will consist of the string "EMPTY", the
|
||||
* string "ANY", or a parenthesised group, optionally followed
|
||||
* by an occurrence indicator. The model will be normalized so
|
||||
* that all whitespace is removed,and will include the enclosing
|
||||
* parentheses.</p>
|
||||
*
|
||||
* @param name The element type name.
|
||||
* @param model The content model as a normalized string.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
*/
|
||||
public abstract void elementDecl (String name, String model)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report an attribute type declaration.
|
||||
*
|
||||
* <p>Only the effective (first) declaration for an attribute will
|
||||
* be reported. The type will be one of the strings "CDATA",
|
||||
* "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY",
|
||||
* "ENTITIES", or "NOTATION", or a parenthesized token group with
|
||||
* the separator "|" and all whitespace removed.</p>
|
||||
*
|
||||
* @param eName The name of the associated element.
|
||||
* @param aName The name of the attribute.
|
||||
* @param type A string representing the attribute type.
|
||||
* @param valueDefault A string representing the attribute default
|
||||
* ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if
|
||||
* none of these applies.
|
||||
* @param value A string representing the attribute's default value,
|
||||
* or null if there is none.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
*/
|
||||
public abstract void attributeDecl (String eName,
|
||||
String aName,
|
||||
String type,
|
||||
String valueDefault,
|
||||
String value)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report an internal entity declaration.
|
||||
*
|
||||
* <p>Only the effective (first) declaration for each entity
|
||||
* will be reported.</p>
|
||||
*
|
||||
* @param name The name of the entity. If it is a parameter
|
||||
* entity, the name will begin with '%'.
|
||||
* @param value The replacement text of the entity.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #externalEntityDecl
|
||||
* @see org.xml.sax.DTDHandler#unparsedEntityDecl
|
||||
*/
|
||||
public abstract void internalEntityDecl (String name, String value)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report a parsed external entity declaration.
|
||||
*
|
||||
* <p>Only the effective (first) declaration for each entity
|
||||
* will be reported.</p>
|
||||
*
|
||||
* @param name The name of the entity. If it is a parameter
|
||||
* entity, the name will begin with '%'.
|
||||
* @param publicId The declared public identifier of the entity, or
|
||||
* null if none was declared.
|
||||
* @param systemId The declared system identifier of the entity.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #internalEntityDecl
|
||||
* @see org.xml.sax.DTDHandler#unparsedEntityDecl
|
||||
*/
|
||||
public abstract void externalEntityDecl (String name, String publicId,
|
||||
String systemId)
|
||||
throws SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of DeclHandler.java
|
161
libjava/org/xml/sax/ext/LexicalHandler.java
Normal file
161
libjava/org/xml/sax/ext/LexicalHandler.java
Normal file
@ -0,0 +1,161 @@
|
||||
// LexicalHandler.java - optional handler for lexical parse events.
|
||||
// Public Domain: no warranty.
|
||||
// $Id: LexicalHandler.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* SAX2 extension handler for lexical events.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This is an optional extension handler for SAX2 to provide
|
||||
* lexical information about an XML document, such as comments
|
||||
* and CDATA section boundaries; XML readers are not required to
|
||||
* support this handler.</p>
|
||||
*
|
||||
* <p>The events in the lexical handler apply to the entire document,
|
||||
* not just to the document element, and all lexical handler events
|
||||
* must appear between the content handler's startDocument and
|
||||
* endDocument events.</p>
|
||||
*
|
||||
* <p>To set the LexicalHandler for an XML reader, use the
|
||||
* {@link org.xml.sax.XMLReader#setProperty setProperty} method
|
||||
* with the propertyId "http://xml.org/sax/handlers/LexicalHandler".
|
||||
* If the reader does not support lexical events, it will throw a
|
||||
* {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
|
||||
* or a
|
||||
* {@link org.xml.sax.SAXNotSupportedException SAXNotSupportedException}
|
||||
* when you attempt to register the handler.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0beta
|
||||
* @see org.xml.sax.XMLReader#setProperty
|
||||
* @see org.xml.sax.SAXNotRecognizedException
|
||||
* @see org.xml.sax.SAXNotSupportedException
|
||||
*/
|
||||
public interface LexicalHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* Report the start of DTD declarations, if any.
|
||||
*
|
||||
* <p>Any declarations are assumed to be in the internal subset
|
||||
* unless otherwise indicated by a {@link #startEntity startEntity}
|
||||
* event.</p>
|
||||
*
|
||||
* <p>Note that the start/endDTD events will appear within
|
||||
* the start/endDocument events from ContentHandler and
|
||||
* before the first startElement event.</p>
|
||||
*
|
||||
* @param name The document type name.
|
||||
* @param publicId The declared public identifier for the
|
||||
* external DTD subset, or null if none was declared.
|
||||
* @param systemId The declared system identifier for the
|
||||
* external DTD subset, or null if none was declared.
|
||||
* @exception SAXException The application may raise an
|
||||
* exception.
|
||||
* @see #endDTD
|
||||
* @see #startEntity
|
||||
*/
|
||||
public abstract void startDTD (String name, String publicId,
|
||||
String systemId)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the end of DTD declarations.
|
||||
*
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #startDTD
|
||||
*/
|
||||
public abstract void endDTD ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the beginning of an entity in content.
|
||||
*
|
||||
* <p><strong>NOTE:</entity> entity references in attribute
|
||||
* values -- and the start and end of the document entity --
|
||||
* are never reported.</p>
|
||||
*
|
||||
* <p>The start and end of the external DTD subset are reported
|
||||
* using the pseudo-name "[dtd]". All other events must be
|
||||
* properly nested within start/end entity events.</p>
|
||||
*
|
||||
* <p>Note that skipped entities will be reported through the
|
||||
* {@link org.xml.sax.ContentHandler#skippedEntity skippedEntity}
|
||||
* event, which is part of the ContentHandler interface.</p>
|
||||
*
|
||||
* @param name The name of the entity. If it is a parameter
|
||||
* entity, the name will begin with '%'.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #endEntity
|
||||
* @see org.xml.sax.ext.DeclHandler#internalEntityDecl
|
||||
* @see org.xml.sax.ext.DeclHandler#externalEntityDecl
|
||||
*/
|
||||
public abstract void startEntity (String name)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the end of an entity.
|
||||
*
|
||||
* @param name The name of the entity that is ending.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #startEntity
|
||||
*/
|
||||
public abstract void endEntity (String name)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the start of a CDATA section.
|
||||
*
|
||||
* <p>The contents of the CDATA section will be reported through
|
||||
* the regular {@link org.xml.sax.ContentHandler#characters
|
||||
* characters} event.</p>
|
||||
*
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #endCDATA
|
||||
*/
|
||||
public abstract void startCDATA ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the end of a CDATA section.
|
||||
*
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #startCDATA
|
||||
*/
|
||||
public abstract void endCDATA ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report an XML comment anywhere in the document.
|
||||
*
|
||||
* <p>This callback will be used for comments inside or outside the
|
||||
* document element, including comments in the external DTD
|
||||
* subset (if read).</p>
|
||||
*
|
||||
* @param ch An array holding the characters in the comment.
|
||||
* @param start The starting position in the array.
|
||||
* @param length The number of characters to use from the array.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
*/
|
||||
public abstract void comment (char ch[], int start, int length)
|
||||
throws SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of LexicalHandler.java
|
310
libjava/org/xml/sax/helpers/AttributeListImpl.java
Normal file
310
libjava/org/xml/sax/helpers/AttributeListImpl.java
Normal file
@ -0,0 +1,310 @@
|
||||
// SAX default implementation for AttributeList.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: AttributeListImpl.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import org.xml.sax.AttributeList;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
/**
|
||||
* Default implementation for AttributeList.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>AttributeList implements the deprecated SAX1 {@link
|
||||
* org.xml.sax.AttributeList AttributeList} interface, and has been
|
||||
* replaced by the new SAX2 {@link org.xml.sax.helpers.AttributesImpl
|
||||
* AttributesImpl} interface.</p>
|
||||
*
|
||||
* <p>This class provides a convenience implementation of the SAX
|
||||
* {@link org.xml.sax.AttributeList AttributeList} interface. This
|
||||
* implementation is useful both for SAX parser writers, who can use
|
||||
* it to provide attributes to the application, and for SAX application
|
||||
* writers, who can use it to create a persistent copy of an element's
|
||||
* attribute specifications:</p>
|
||||
*
|
||||
* <pre>
|
||||
* private AttributeList myatts;
|
||||
*
|
||||
* public void startElement (String name, AttributeList atts)
|
||||
* {
|
||||
* // create a persistent copy of the attribute list
|
||||
* // for use outside this method
|
||||
* myatts = new AttributeListImpl(atts);
|
||||
* [...]
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* <p>Please note that SAX parsers are not required to use this
|
||||
* class to provide an implementation of AttributeList; it is
|
||||
* supplied only as an optional convenience. In particular,
|
||||
* parser writers are encouraged to invent more efficient
|
||||
* implementations.</p>
|
||||
*
|
||||
* @deprecated This class implements a deprecated interface,
|
||||
* {@link org.xml.sax.AttributeList AttributeList};
|
||||
* that interface has been replaced by
|
||||
* {@link org.xml.sax.Attributes Attributes},
|
||||
* which is implemented in the
|
||||
* {@link org.xml.sax.helpers.AttributesImpl
|
||||
* AttributesImpl} helper class.
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.AttributeList
|
||||
* @see org.xml.sax.DocumentHandler#startElement
|
||||
*/
|
||||
public class AttributeListImpl implements AttributeList
|
||||
{
|
||||
|
||||
/**
|
||||
* Create an empty attribute list.
|
||||
*
|
||||
* <p>This constructor is most useful for parser writers, who
|
||||
* will use it to create a single, reusable attribute list that
|
||||
* can be reset with the clear method between elements.</p>
|
||||
*
|
||||
* @see #addAttribute
|
||||
* @see #clear
|
||||
*/
|
||||
public AttributeListImpl ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Construct a persistent copy of an existing attribute list.
|
||||
*
|
||||
* <p>This constructor is most useful for application writers,
|
||||
* who will use it to create a persistent copy of an existing
|
||||
* attribute list.</p>
|
||||
*
|
||||
* @param atts The attribute list to copy
|
||||
* @see org.xml.sax.DocumentHandler#startElement
|
||||
*/
|
||||
public AttributeListImpl (AttributeList atts)
|
||||
{
|
||||
setAttributeList(atts);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Methods specific to this class.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Set the attribute list, discarding previous contents.
|
||||
*
|
||||
* <p>This method allows an application writer to reuse an
|
||||
* attribute list easily.</p>
|
||||
*
|
||||
* @param atts The attribute list to copy.
|
||||
*/
|
||||
public void setAttributeList (AttributeList atts)
|
||||
{
|
||||
int count = atts.getLength();
|
||||
|
||||
clear();
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
addAttribute(atts.getName(i), atts.getType(i), atts.getValue(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add an attribute to an attribute list.
|
||||
*
|
||||
* <p>This method is provided for SAX parser writers, to allow them
|
||||
* to build up an attribute list incrementally before delivering
|
||||
* it to the application.</p>
|
||||
*
|
||||
* @param name The attribute name.
|
||||
* @param type The attribute type ("NMTOKEN" for an enumeration).
|
||||
* @param value The attribute value (must not be null).
|
||||
* @see #removeAttribute
|
||||
* @see org.xml.sax.DocumentHandler#startElement
|
||||
*/
|
||||
public void addAttribute (String name, String type, String value)
|
||||
{
|
||||
names.addElement(name);
|
||||
types.addElement(type);
|
||||
values.addElement(value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove an attribute from the list.
|
||||
*
|
||||
* <p>SAX application writers can use this method to filter an
|
||||
* attribute out of an AttributeList. Note that invoking this
|
||||
* method will change the length of the attribute list and
|
||||
* some of the attribute's indices.</p>
|
||||
*
|
||||
* <p>If the requested attribute is not in the list, this is
|
||||
* a no-op.</p>
|
||||
*
|
||||
* @param name The attribute name.
|
||||
* @see #addAttribute
|
||||
*/
|
||||
public void removeAttribute (String name)
|
||||
{
|
||||
int i = names.indexOf(name);
|
||||
|
||||
if (i >= 0) {
|
||||
names.removeElementAt(i);
|
||||
types.removeElementAt(i);
|
||||
values.removeElementAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Clear the attribute list.
|
||||
*
|
||||
* <p>SAX parser writers can use this method to reset the attribute
|
||||
* list between DocumentHandler.startElement events. Normally,
|
||||
* it will make sense to reuse the same AttributeListImpl object
|
||||
* rather than allocating a new one each time.</p>
|
||||
*
|
||||
* @see org.xml.sax.DocumentHandler#startElement
|
||||
*/
|
||||
public void clear ()
|
||||
{
|
||||
names.removeAllElements();
|
||||
types.removeAllElements();
|
||||
values.removeAllElements();
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.AttributeList
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Return the number of attributes in the list.
|
||||
*
|
||||
* @return The number of attributes in the list.
|
||||
* @see org.xml.sax.AttributeList#getLength
|
||||
*/
|
||||
public int getLength ()
|
||||
{
|
||||
return names.size();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of an attribute (by position).
|
||||
*
|
||||
* @param i The position of the attribute in the list.
|
||||
* @return The attribute name as a string, or null if there
|
||||
* is no attribute at that position.
|
||||
* @see org.xml.sax.AttributeList#getName(int)
|
||||
*/
|
||||
public String getName (int i)
|
||||
{
|
||||
if (i < 0) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return (String)names.elementAt(i);
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the type of an attribute (by position).
|
||||
*
|
||||
* @param i The position of the attribute in the list.
|
||||
* @return The attribute type as a string ("NMTOKEN" for an
|
||||
* enumeration, and "CDATA" if no declaration was
|
||||
* read), or null if there is no attribute at
|
||||
* that position.
|
||||
* @see org.xml.sax.AttributeList#getType(int)
|
||||
*/
|
||||
public String getType (int i)
|
||||
{
|
||||
if (i < 0) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return (String)types.elementAt(i);
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the value of an attribute (by position).
|
||||
*
|
||||
* @param i The position of the attribute in the list.
|
||||
* @return The attribute value as a string, or null if
|
||||
* there is no attribute at that position.
|
||||
* @see org.xml.sax.AttributeList#getValue(int)
|
||||
*/
|
||||
public String getValue (int i)
|
||||
{
|
||||
if (i < 0) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return (String)values.elementAt(i);
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the type of an attribute (by name).
|
||||
*
|
||||
* @param name The attribute name.
|
||||
* @return The attribute type as a string ("NMTOKEN" for an
|
||||
* enumeration, and "CDATA" if no declaration was
|
||||
* read).
|
||||
* @see org.xml.sax.AttributeList#getType(java.lang.String)
|
||||
*/
|
||||
public String getType (String name)
|
||||
{
|
||||
return getType(names.indexOf(name));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the value of an attribute (by name).
|
||||
*
|
||||
* @param name The attribute name.
|
||||
* @see org.xml.sax.AttributeList#getValue(java.lang.String)
|
||||
*/
|
||||
public String getValue (String name)
|
||||
{
|
||||
return getValue(names.indexOf(name));
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
Vector names = new Vector();
|
||||
Vector types = new Vector();
|
||||
Vector values = new Vector();
|
||||
|
||||
}
|
||||
|
||||
// end of AttributeListImpl.java
|
606
libjava/org/xml/sax/helpers/AttributesImpl.java
Normal file
606
libjava/org/xml/sax/helpers/AttributesImpl.java
Normal file
@ -0,0 +1,606 @@
|
||||
// AttributesImpl.java - default implementation of Attributes.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the public domain.
|
||||
|
||||
// $Id: AttributesImpl.java,v 1.2 2001/05/31 16:03:17 garyp Exp $
|
||||
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import org.xml.sax.Attributes;
|
||||
|
||||
|
||||
/**
|
||||
* Default implementation of the Attributes interface.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class provides a default implementation of the SAX2
|
||||
* {@link org.xml.sax.Attributes Attributes} interface, with the
|
||||
* addition of manipulators so that the list can be modified or
|
||||
* reused.</p>
|
||||
*
|
||||
* <p>There are two typical uses of this class:</p>
|
||||
*
|
||||
* <ol>
|
||||
* <li>to take a persistent snapshot of an Attributes object
|
||||
* in a {@link org.xml.sax.ContentHandler#startElement startElement} event; or</li>
|
||||
* <li>to construct or modify an Attributes object in a SAX2 driver or filter.</li>
|
||||
* </ol>
|
||||
*
|
||||
* <p>This class replaces the now-deprecated SAX1 {@link
|
||||
* org.xml.sax.helpers.AttributeListImpl AttributeListImpl}
|
||||
* class; in addition to supporting the updated Attributes
|
||||
* interface rather than the deprecated {@link org.xml.sax.AttributeList
|
||||
* AttributeList} interface, it also includes a much more efficient
|
||||
* implementation using a single array rather than a set of Vectors.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
*/
|
||||
public class AttributesImpl implements Attributes
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Constructors.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new, empty AttributesImpl object.
|
||||
*/
|
||||
public AttributesImpl ()
|
||||
{
|
||||
length = 0;
|
||||
data = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy an existing Attributes object.
|
||||
*
|
||||
* <p>This constructor is especially useful inside a
|
||||
* {@link org.xml.sax.ContentHandler#startElement startElement} event.</p>
|
||||
*
|
||||
* @param atts The existing Attributes object.
|
||||
*/
|
||||
public AttributesImpl (Attributes atts)
|
||||
{
|
||||
setAttributes(atts);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.Attributes.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Return the number of attributes in the list.
|
||||
*
|
||||
* @return The number of attributes in the list.
|
||||
* @see org.xml.sax.Attributes#getLength
|
||||
*/
|
||||
public int getLength ()
|
||||
{
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an attribute's Namespace URI.
|
||||
*
|
||||
* @param index The attribute's index (zero-based).
|
||||
* @return The Namespace URI, the empty string if none is
|
||||
* available, or null if the index is out of range.
|
||||
* @see org.xml.sax.Attributes#getURI
|
||||
*/
|
||||
public String getURI (int index)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
return data[index*5];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an attribute's local name.
|
||||
*
|
||||
* @param index The attribute's index (zero-based).
|
||||
* @return The attribute's local name, the empty string if
|
||||
* none is available, or null if the index if out of range.
|
||||
* @see org.xml.sax.Attributes#getLocalName
|
||||
*/
|
||||
public String getLocalName (int index)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
return data[index*5+1];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an attribute's qualified (prefixed) name.
|
||||
*
|
||||
* @param index The attribute's index (zero-based).
|
||||
* @return The attribute's qualified name, the empty string if
|
||||
* none is available, or null if the index is out of bounds.
|
||||
* @see org.xml.sax.Attributes#getQName
|
||||
*/
|
||||
public String getQName (int index)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
return data[index*5+2];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an attribute's type by index.
|
||||
*
|
||||
* @param index The attribute's index (zero-based).
|
||||
* @return The attribute's type, "CDATA" if the type is unknown, or null
|
||||
* if the index is out of bounds.
|
||||
* @see org.xml.sax.Attributes#getType(int)
|
||||
*/
|
||||
public String getType (int index)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
return data[index*5+3];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an attribute's value by index.
|
||||
*
|
||||
* @param index The attribute's index (zero-based).
|
||||
* @return The attribute's value or null if the index is out of bounds.
|
||||
* @see org.xml.sax.Attributes#getValue(int)
|
||||
*/
|
||||
public String getValue (int index)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
return data[index*5+4];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's index by Namespace name.
|
||||
*
|
||||
* <p>In many cases, it will be more efficient to look up the name once and
|
||||
* use the index query methods rather than using the name query methods
|
||||
* repeatedly.</p>
|
||||
*
|
||||
* @param uri The attribute's Namespace URI, or the empty
|
||||
* string if none is available.
|
||||
* @param localName The attribute's local name.
|
||||
* @return The attribute's index, or -1 if none matches.
|
||||
* @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String)
|
||||
*/
|
||||
public int getIndex (String uri, String localName)
|
||||
{
|
||||
int max = length * 5;
|
||||
for (int i = 0; i < max; i += 5) {
|
||||
if (data[i].equals(uri) && data[i+1].equals(localName)) {
|
||||
return i / 5;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's index by qualified (prefixed) name.
|
||||
*
|
||||
* @param qName The qualified name.
|
||||
* @return The attribute's index, or -1 if none matches.
|
||||
* @see org.xml.sax.Attributes#getIndex(java.lang.String)
|
||||
*/
|
||||
public int getIndex (String qName)
|
||||
{
|
||||
int max = length * 5;
|
||||
for (int i = 0; i < max; i += 5) {
|
||||
if (data[i+2].equals(qName)) {
|
||||
return i / 5;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's type by Namespace-qualified name.
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string for a name
|
||||
* with no explicit Namespace URI.
|
||||
* @param localName The local name.
|
||||
* @return The attribute's type, or null if there is no
|
||||
* matching attribute.
|
||||
* @see org.xml.sax.Attributes#getType(java.lang.String,java.lang.String)
|
||||
*/
|
||||
public String getType (String uri, String localName)
|
||||
{
|
||||
int max = length * 5;
|
||||
for (int i = 0; i < max; i += 5) {
|
||||
if (data[i].equals(uri) && data[i+1].equals(localName)) {
|
||||
return data[i+3];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's type by qualified (prefixed) name.
|
||||
*
|
||||
* @param qName The qualified name.
|
||||
* @return The attribute's type, or null if there is no
|
||||
* matching attribute.
|
||||
* @see org.xml.sax.Attributes#getType(java.lang.String)
|
||||
*/
|
||||
public String getType (String qName)
|
||||
{
|
||||
int max = length * 5;
|
||||
for (int i = 0; i < max; i += 5) {
|
||||
if (data[i+2].equals(qName)) {
|
||||
return data[i+3];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's value by Namespace-qualified name.
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string for a name
|
||||
* with no explicit Namespace URI.
|
||||
* @param localName The local name.
|
||||
* @return The attribute's value, or null if there is no
|
||||
* matching attribute.
|
||||
* @see org.xml.sax.Attributes#getValue(java.lang.String,java.lang.String)
|
||||
*/
|
||||
public String getValue (String uri, String localName)
|
||||
{
|
||||
int max = length * 5;
|
||||
for (int i = 0; i < max; i += 5) {
|
||||
if (data[i].equals(uri) && data[i+1].equals(localName)) {
|
||||
return data[i+4];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up an attribute's value by qualified (prefixed) name.
|
||||
*
|
||||
* @param qName The qualified name.
|
||||
* @return The attribute's value, or null if there is no
|
||||
* matching attribute.
|
||||
* @see org.xml.sax.Attributes#getValue(java.lang.String)
|
||||
*/
|
||||
public String getValue (String qName)
|
||||
{
|
||||
int max = length * 5;
|
||||
for (int i = 0; i < max; i += 5) {
|
||||
if (data[i+2].equals(qName)) {
|
||||
return data[i+4];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Manipulators.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Clear the attribute list for reuse.
|
||||
*
|
||||
* <p>Note that no memory is actually freed by this call:
|
||||
* the current arrays are kept so that they can be
|
||||
* reused.</p>
|
||||
*/
|
||||
public void clear ()
|
||||
{
|
||||
length = 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy an entire Attributes object.
|
||||
*
|
||||
* <p>It may be more efficient to reuse an existing object
|
||||
* rather than constantly allocating new ones.</p>
|
||||
*
|
||||
* @param atts The attributes to copy.
|
||||
*/
|
||||
public void setAttributes (Attributes atts)
|
||||
{
|
||||
clear();
|
||||
length = atts.getLength();
|
||||
data = new String[length*5];
|
||||
for (int i = 0; i < length; i++) {
|
||||
data[i*5] = atts.getURI(i);
|
||||
data[i*5+1] = atts.getLocalName(i);
|
||||
data[i*5+2] = atts.getQName(i);
|
||||
data[i*5+3] = atts.getType(i);
|
||||
data[i*5+4] = atts.getValue(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add an attribute to the end of the list.
|
||||
*
|
||||
* <p>For the sake of speed, this method does no checking
|
||||
* to see if the attribute is already in the list: that is
|
||||
* the responsibility of the application.</p>
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string if
|
||||
* none is available or Namespace processing is not
|
||||
* being performed.
|
||||
* @param localName The local name, or the empty string if
|
||||
* Namespace processing is not being performed.
|
||||
* @param qName The qualified (prefixed) name, or the empty string
|
||||
* if qualified names are not available.
|
||||
* @param type The attribute type as a string.
|
||||
* @param value The attribute value.
|
||||
*/
|
||||
public void addAttribute (String uri, String localName, String qName,
|
||||
String type, String value)
|
||||
{
|
||||
ensureCapacity(length+1);
|
||||
data[length*5] = uri;
|
||||
data[length*5+1] = localName;
|
||||
data[length*5+2] = qName;
|
||||
data[length*5+3] = type;
|
||||
data[length*5+4] = value;
|
||||
length++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set an attribute in the list.
|
||||
*
|
||||
* <p>For the sake of speed, this method does no checking
|
||||
* for name conflicts or well-formedness: such checks are the
|
||||
* responsibility of the application.</p>
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param uri The Namespace URI, or the empty string if
|
||||
* none is available or Namespace processing is not
|
||||
* being performed.
|
||||
* @param localName The local name, or the empty string if
|
||||
* Namespace processing is not being performed.
|
||||
* @param qName The qualified name, or the empty string
|
||||
* if qualified names are not available.
|
||||
* @param type The attribute type as a string.
|
||||
* @param value The attribute value.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not point to an attribute
|
||||
* in the list.
|
||||
*/
|
||||
public void setAttribute (int index, String uri, String localName,
|
||||
String qName, String type, String value)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
data[index*5] = uri;
|
||||
data[index*5+1] = localName;
|
||||
data[index*5+2] = qName;
|
||||
data[index*5+3] = type;
|
||||
data[index*5+4] = value;
|
||||
} else {
|
||||
badIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove an attribute from the list.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not point to an attribute
|
||||
* in the list.
|
||||
*/
|
||||
public void removeAttribute (int index)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
data[index*5] = null;
|
||||
data[index*5+1] = null;
|
||||
data[index*5+2] = null;
|
||||
data[index*5+3] = null;
|
||||
data[index*5+4] = null;
|
||||
if (index < length - 1) {
|
||||
System.arraycopy(data, (index+1)*5, data, index*5,
|
||||
(length-index-1)*5);
|
||||
}
|
||||
length--;
|
||||
} else {
|
||||
badIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the Namespace URI of a specific attribute.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param uri The attribute's Namespace URI, or the empty
|
||||
* string for none.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not point to an attribute
|
||||
* in the list.
|
||||
*/
|
||||
public void setURI (int index, String uri)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
data[index*5] = uri;
|
||||
} else {
|
||||
badIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the local name of a specific attribute.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param localName The attribute's local name, or the empty
|
||||
* string for none.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not point to an attribute
|
||||
* in the list.
|
||||
*/
|
||||
public void setLocalName (int index, String localName)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
data[index*5+1] = localName;
|
||||
} else {
|
||||
badIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the qualified name of a specific attribute.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param qName The attribute's qualified name, or the empty
|
||||
* string for none.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not point to an attribute
|
||||
* in the list.
|
||||
*/
|
||||
public void setQName (int index, String qName)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
data[index*5+2] = qName;
|
||||
} else {
|
||||
badIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the type of a specific attribute.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param type The attribute's type.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not point to an attribute
|
||||
* in the list.
|
||||
*/
|
||||
public void setType (int index, String type)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
data[index*5+3] = type;
|
||||
} else {
|
||||
badIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the value of a specific attribute.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param value The attribute's value.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not point to an attribute
|
||||
* in the list.
|
||||
*/
|
||||
public void setValue (int index, String value)
|
||||
{
|
||||
if (index >= 0 && index < length) {
|
||||
data[index*5+4] = value;
|
||||
} else {
|
||||
badIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal methods.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Ensure the internal array's capacity.
|
||||
*
|
||||
* @param n The minimum number of attributes that the array must
|
||||
* be able to hold.
|
||||
*/
|
||||
private void ensureCapacity (int n)
|
||||
{
|
||||
if (n > 0 && data == null) {
|
||||
data = new String[25];
|
||||
}
|
||||
|
||||
int max = data.length;
|
||||
if (max >= n * 5) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
while (max < n * 5) {
|
||||
max *= 2;
|
||||
}
|
||||
String newData[] = new String[max];
|
||||
System.arraycopy(data, 0, newData, 0, length*5);
|
||||
data = newData;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Report a bad array index in a manipulator.
|
||||
*
|
||||
* @param index The index to report.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException Always.
|
||||
*/
|
||||
private void badIndex (int index)
|
||||
throws ArrayIndexOutOfBoundsException
|
||||
{
|
||||
String msg =
|
||||
"Attempt to modify attribute at illegal index: " + index;
|
||||
throw new ArrayIndexOutOfBoundsException(msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
int length;
|
||||
String data [];
|
||||
|
||||
}
|
||||
|
||||
// end of AttributesImpl.java
|
||||
|
447
libjava/org/xml/sax/helpers/DefaultHandler.java
Normal file
447
libjava/org/xml/sax/helpers/DefaultHandler.java
Normal file
@ -0,0 +1,447 @@
|
||||
// DefaultHandler.java - default implementation of the core handlers.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the public domain.
|
||||
|
||||
// $Id: DefaultHandler.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.Locator;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.EntityResolver;
|
||||
import org.xml.sax.DTDHandler;
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
|
||||
|
||||
/**
|
||||
* Default base class for SAX2 event handlers.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class is available as a convenience base class for SAX2
|
||||
* applications: it provides default implementations for all of the
|
||||
* callbacks in the four core SAX2 handler classes:</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>{@link org.xml.sax.EntityResolver EntityResolver}</li>
|
||||
* <li>{@link org.xml.sax.DTDHandler DTDHandler}</li>
|
||||
* <li>{@link org.xml.sax.ContentHandler ContentHandler}</li>
|
||||
* <li>{@link org.xml.sax.ErrorHandler ErrorHandler}</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>Application writers can extend this class when they need to
|
||||
* implement only part of an interface; parser writers can
|
||||
* instantiate this class to provide default handlers when the
|
||||
* application has not supplied its own.</p>
|
||||
*
|
||||
* <p>This class replaces the deprecated SAX1
|
||||
* {@link org.xml.sax.HandlerBase HandlerBase} class.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.EntityResolver
|
||||
* @see org.xml.sax.DTDHandler
|
||||
* @see org.xml.sax.ContentHandler
|
||||
* @see org.xml.sax.ErrorHandler
|
||||
*/
|
||||
public class DefaultHandler
|
||||
implements EntityResolver, DTDHandler, ContentHandler, ErrorHandler
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of the EntityResolver interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Resolve an external entity.
|
||||
*
|
||||
* <p>Always return null, so that the parser will use the system
|
||||
* identifier provided in the XML document. This method implements
|
||||
* the SAX default behaviour: application writers can override it
|
||||
* in a subclass to do special translations such as catalog lookups
|
||||
* or URI redirection.</p>
|
||||
*
|
||||
* @param publicId The public identifer, or null if none is
|
||||
* available.
|
||||
* @param systemId The system identifier provided in the XML
|
||||
* document.
|
||||
* @return The new input source, or null to require the
|
||||
* default behaviour.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.EntityResolver#resolveEntity
|
||||
*/
|
||||
public InputSource resolveEntity (String publicId, String systemId)
|
||||
throws SAXException
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of DTDHandler interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a notation declaration.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass if they wish to keep track of the notations
|
||||
* declared in a document.</p>
|
||||
*
|
||||
* @param name The notation name.
|
||||
* @param publicId The notation public identifier, or null if not
|
||||
* available.
|
||||
* @param systemId The notation system identifier.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DTDHandler#notationDecl
|
||||
*/
|
||||
public void notationDecl (String name, String publicId, String systemId)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of an unparsed entity declaration.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to keep track of the unparsed entities
|
||||
* declared in a document.</p>
|
||||
*
|
||||
* @param name The entity name.
|
||||
* @param publicId The entity public identifier, or null if not
|
||||
* available.
|
||||
* @param systemId The entity system identifier.
|
||||
* @param notationName The name of the associated notation.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.DTDHandler#unparsedEntityDecl
|
||||
*/
|
||||
public void unparsedEntityDecl (String name, String publicId,
|
||||
String systemId, String notationName)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of ContentHandler interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Receive a Locator object for document events.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass if they wish to store the locator for use
|
||||
* with other document events.</p>
|
||||
*
|
||||
* @param locator A locator for all SAX document events.
|
||||
* @see org.xml.sax.ContentHandler#setDocumentLocator
|
||||
* @see org.xml.sax.Locator
|
||||
*/
|
||||
public void setDocumentLocator (Locator locator)
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the beginning of the document.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the beginning
|
||||
* of a document (such as allocating the root node of a tree or
|
||||
* creating an output file).</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#startDocument
|
||||
*/
|
||||
public void startDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of the document.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the end
|
||||
* of a document (such as finalising a tree or closing an output
|
||||
* file).</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#endDocument
|
||||
*/
|
||||
public void endDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the start of a Namespace mapping.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the start of
|
||||
* each Namespace prefix scope (such as storing the prefix mapping).</p>
|
||||
*
|
||||
* @param prefix The Namespace prefix being declared.
|
||||
* @param uri The Namespace URI mapped to the prefix.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#startPrefixMapping
|
||||
*/
|
||||
public void startPrefixMapping (String prefix, String uri)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of a Namespace mapping.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the end of
|
||||
* each prefix mapping.</p>
|
||||
*
|
||||
* @param prefix The Namespace prefix being declared.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#endPrefixMapping
|
||||
*/
|
||||
public void endPrefixMapping (String prefix)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the start of an element.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the start of
|
||||
* each element (such as allocating a new tree node or writing
|
||||
* output to a file).</p>
|
||||
*
|
||||
* @param name The element type name.
|
||||
* @param attributes The specified or defaulted attributes.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#startElement
|
||||
*/
|
||||
public void startElement (String uri, String localName,
|
||||
String qName, Attributes attributes)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of the end of an element.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions at the end of
|
||||
* each element (such as finalising a tree node or writing
|
||||
* output to a file).</p>
|
||||
*
|
||||
* @param name The element type name.
|
||||
* @param attributes The specified or defaulted attributes.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#endElement
|
||||
*/
|
||||
public void endElement (String uri, String localName, String qName)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of character data inside an element.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method to take specific actions for each chunk of character data
|
||||
* (such as adding the data to a node or buffer, or printing it to
|
||||
* a file).</p>
|
||||
*
|
||||
* @param ch The characters.
|
||||
* @param start The start position in the character array.
|
||||
* @param length The number of characters to use from the
|
||||
* character array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#characters
|
||||
*/
|
||||
public void characters (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of ignorable whitespace in element content.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method to take specific actions for each chunk of ignorable
|
||||
* whitespace (such as adding data to a node or buffer, or printing
|
||||
* it to a file).</p>
|
||||
*
|
||||
* @param ch The whitespace characters.
|
||||
* @param start The start position in the character array.
|
||||
* @param length The number of characters to use from the
|
||||
* character array.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#ignorableWhitespace
|
||||
*/
|
||||
public void ignorableWhitespace (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a processing instruction.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions for each
|
||||
* processing instruction, such as setting status variables or
|
||||
* invoking other methods.</p>
|
||||
*
|
||||
* @param target The processing instruction target.
|
||||
* @param data The processing instruction data, or null if
|
||||
* none is supplied.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#processingInstruction
|
||||
*/
|
||||
public void processingInstruction (String target, String data)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a skipped entity.
|
||||
*
|
||||
* <p>By default, do nothing. Application writers may override this
|
||||
* method in a subclass to take specific actions for each
|
||||
* processing instruction, such as setting status variables or
|
||||
* invoking other methods.</p>
|
||||
*
|
||||
* @param name The name of the skipped entity.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ContentHandler#processingInstruction
|
||||
*/
|
||||
public void skippedEntity (String name)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Default implementation of the ErrorHandler interface.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a parser warning.
|
||||
*
|
||||
* <p>The default implementation does nothing. Application writers
|
||||
* may override this method in a subclass to take specific actions
|
||||
* for each warning, such as inserting the message in a log file or
|
||||
* printing it to the console.</p>
|
||||
*
|
||||
* @param e The warning information encoded as an exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ErrorHandler#warning
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public void warning (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Receive notification of a recoverable parser error.
|
||||
*
|
||||
* <p>The default implementation does nothing. Application writers
|
||||
* may override this method in a subclass to take specific actions
|
||||
* for each error, such as inserting the message in a log file or
|
||||
* printing it to the console.</p>
|
||||
*
|
||||
* @param e The warning information encoded as an exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ErrorHandler#warning
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public void error (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Report a fatal XML parsing error.
|
||||
*
|
||||
* <p>The default implementation throws a SAXParseException.
|
||||
* Application writers may override this method in a subclass if
|
||||
* they need to take specific actions for each fatal error (such as
|
||||
* collecting all of the errors into a single report): in any case,
|
||||
* the application must stop all regular processing when this
|
||||
* method is invoked, since the document is no longer reliable, and
|
||||
* the parser may no longer report parsing events.</p>
|
||||
*
|
||||
* @param e The error information encoded as an exception.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @see org.xml.sax.ErrorHandler#fatalError
|
||||
* @see org.xml.sax.SAXParseException
|
||||
*/
|
||||
public void fatalError (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of DefaultHandler.java
|
212
libjava/org/xml/sax/helpers/LocatorImpl.java
Normal file
212
libjava/org/xml/sax/helpers/LocatorImpl.java
Normal file
@ -0,0 +1,212 @@
|
||||
// SAX default implementation for Locator.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: LocatorImpl.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import org.xml.sax.Locator;
|
||||
|
||||
|
||||
/**
|
||||
* Provide an optional convenience implementation of Locator.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class is available mainly for application writers, who
|
||||
* can use it to make a persistent snapshot of a locator at any
|
||||
* point during a document parse:</p>
|
||||
*
|
||||
* <pre>
|
||||
* Locator locator;
|
||||
* Locator startloc;
|
||||
*
|
||||
* public void setLocator (Locator locator)
|
||||
* {
|
||||
* // note the locator
|
||||
* this.locator = locator;
|
||||
* }
|
||||
*
|
||||
* public void startDocument ()
|
||||
* {
|
||||
* // save the location of the start of the document
|
||||
* // for future use.
|
||||
* Locator startloc = new LocatorImpl(locator);
|
||||
* }
|
||||
*</pre>
|
||||
*
|
||||
* <p>Normally, parser writers will not use this class, since it
|
||||
* is more efficient to provide location information only when
|
||||
* requested, rather than constantly updating a Locator object.</p>
|
||||
*
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Locator Locator
|
||||
*/
|
||||
public class LocatorImpl implements Locator
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Zero-argument constructor.
|
||||
*
|
||||
* <p>This will not normally be useful, since the main purpose
|
||||
* of this class is to make a snapshot of an existing Locator.</p>
|
||||
*/
|
||||
public LocatorImpl ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy constructor.
|
||||
*
|
||||
* <p>Create a persistent copy of the current state of a locator.
|
||||
* When the original locator changes, this copy will still keep
|
||||
* the original values (and it can be used outside the scope of
|
||||
* DocumentHandler methods).</p>
|
||||
*
|
||||
* @param locator The locator to copy.
|
||||
*/
|
||||
public LocatorImpl (Locator locator)
|
||||
{
|
||||
setPublicId(locator.getPublicId());
|
||||
setSystemId(locator.getSystemId());
|
||||
setLineNumber(locator.getLineNumber());
|
||||
setColumnNumber(locator.getColumnNumber());
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.Locator
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Return the saved public identifier.
|
||||
*
|
||||
* @return The public identifier as a string, or null if none
|
||||
* is available.
|
||||
* @see org.xml.sax.Locator#getPublicId
|
||||
* @see #setPublicId
|
||||
*/
|
||||
public String getPublicId ()
|
||||
{
|
||||
return publicId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the saved system identifier.
|
||||
*
|
||||
* @return The system identifier as a string, or null if none
|
||||
* is available.
|
||||
* @see org.xml.sax.Locator#getSystemId
|
||||
* @see #setSystemId
|
||||
*/
|
||||
public String getSystemId ()
|
||||
{
|
||||
return systemId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the saved line number (1-based).
|
||||
*
|
||||
* @return The line number as an integer, or -1 if none is available.
|
||||
* @see org.xml.sax.Locator#getLineNumber
|
||||
* @see #setLineNumber
|
||||
*/
|
||||
public int getLineNumber ()
|
||||
{
|
||||
return lineNumber;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the saved column number (1-based).
|
||||
*
|
||||
* @return The column number as an integer, or -1 if none is available.
|
||||
* @see org.xml.sax.Locator#getColumnNumber
|
||||
* @see #setColumnNumber
|
||||
*/
|
||||
public int getColumnNumber ()
|
||||
{
|
||||
return columnNumber;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Setters for the properties (not in org.xml.sax.Locator)
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Set the public identifier for this locator.
|
||||
*
|
||||
* @param publicId The new public identifier, or null
|
||||
* if none is available.
|
||||
* @see #getPublicId
|
||||
*/
|
||||
public void setPublicId (String publicId)
|
||||
{
|
||||
this.publicId = publicId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the system identifier for this locator.
|
||||
*
|
||||
* @param systemId The new system identifier, or null
|
||||
* if none is available.
|
||||
* @see #getSystemId
|
||||
*/
|
||||
public void setSystemId (String systemId)
|
||||
{
|
||||
this.systemId = systemId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the line number for this locator (1-based).
|
||||
*
|
||||
* @param lineNumber The line number, or -1 if none is available.
|
||||
* @see #getLineNumber
|
||||
*/
|
||||
public void setLineNumber (int lineNumber)
|
||||
{
|
||||
this.lineNumber = lineNumber;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the column number for this locator (1-based).
|
||||
*
|
||||
* @param columnNumber The column number, or -1 if none is available.
|
||||
* @see #getColumnNumber
|
||||
*/
|
||||
public void setColumnNumber (int columnNumber)
|
||||
{
|
||||
this.columnNumber = columnNumber;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
private String publicId;
|
||||
private String systemId;
|
||||
private int lineNumber;
|
||||
private int columnNumber;
|
||||
|
||||
}
|
||||
|
||||
// end of LocatorImpl.java
|
689
libjava/org/xml/sax/helpers/NamespaceSupport.java
Normal file
689
libjava/org/xml/sax/helpers/NamespaceSupport.java
Normal file
@ -0,0 +1,689 @@
|
||||
// NamespaceSupport.java - generic Namespace support for SAX.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// This class is in the Public Domain. NO WARRANTY!
|
||||
|
||||
// $Id: NamespaceSupport.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import java.util.EmptyStackException;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
/**
|
||||
* Encapsulate Namespace logic for use by SAX drivers.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class encapsulates the logic of Namespace processing:
|
||||
* it tracks the declarations currently in force for each context
|
||||
* and automatically processes qualified XML 1.0 names into their
|
||||
* Namespace parts; it can also be used in reverse for generating
|
||||
* XML 1.0 from Namespaces.</p>
|
||||
*
|
||||
* <p>Namespace support objects are reusable, but the reset method
|
||||
* must be invoked between each session.</p>
|
||||
*
|
||||
* <p>Here is a simple session:</p>
|
||||
*
|
||||
* <pre>
|
||||
* String parts[] = new String[3];
|
||||
* NamespaceSupport support = new NamespaceSupport();
|
||||
*
|
||||
* support.pushContext();
|
||||
* support.declarePrefix("", "http://www.w3.org/1999/xhtml");
|
||||
* support.declarePrefix("dc", "http://www.purl.org/dc#");
|
||||
*
|
||||
* String parts[] = support.processName("p", parts, false);
|
||||
* System.out.println("Namespace URI: " + parts[0]);
|
||||
* System.out.println("Local name: " + parts[1]);
|
||||
* System.out.println("Raw name: " + parts[2]);
|
||||
|
||||
* String parts[] = support.processName("dc:title", parts, false);
|
||||
* System.out.println("Namespace URI: " + parts[0]);
|
||||
* System.out.println("Local name: " + parts[1]);
|
||||
* System.out.println("Raw name: " + parts[2]);
|
||||
|
||||
* support.popContext();
|
||||
* </pre>
|
||||
*
|
||||
* <p>Note that this class is optimized for the use case where most
|
||||
* elements do not contain Namespace declarations: if the same
|
||||
* prefix/URI mapping is repeated for each context (for example), this
|
||||
* class will be somewhat less efficient.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
*/
|
||||
public class NamespaceSupport
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Constants.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* The XML Namespace as a constant.
|
||||
*
|
||||
* <p>This is the Namespace URI that is automatically mapped
|
||||
* to the "xml" prefix.</p>
|
||||
*/
|
||||
public final static String XMLNS =
|
||||
"http://www.w3.org/XML/1998/namespace";
|
||||
|
||||
|
||||
/**
|
||||
* An empty enumeration.
|
||||
*/
|
||||
private final static Enumeration EMPTY_ENUMERATION =
|
||||
new Vector().elements();
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Constructor.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Create a new Namespace support object.
|
||||
*/
|
||||
public NamespaceSupport ()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Context management.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Reset this Namespace support object for reuse.
|
||||
*
|
||||
* <p>It is necessary to invoke this method before reusing the
|
||||
* Namespace support object for a new session.</p>
|
||||
*/
|
||||
public void reset ()
|
||||
{
|
||||
contexts = new Context[32];
|
||||
contextPos = 0;
|
||||
contexts[contextPos] = currentContext = new Context();
|
||||
currentContext.declarePrefix("xml", XMLNS);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Start a new Namespace context.
|
||||
*
|
||||
* <p>Normally, you should push a new context at the beginning
|
||||
* of each XML element: the new context will automatically inherit
|
||||
* the declarations of its parent context, but it will also keep
|
||||
* track of which declarations were made within this context.</p>
|
||||
*
|
||||
* <p>The Namespace support object always starts with a base context
|
||||
* already in force: in this context, only the "xml" prefix is
|
||||
* declared.</p>
|
||||
*
|
||||
* @see #popContext
|
||||
*/
|
||||
public void pushContext ()
|
||||
{
|
||||
int max = contexts.length;
|
||||
contextPos++;
|
||||
|
||||
// Extend the array if necessary
|
||||
if (contextPos >= max) {
|
||||
Context newContexts[] = new Context[max*2];
|
||||
System.arraycopy(contexts, 0, newContexts, 0, max);
|
||||
max *= 2;
|
||||
contexts = newContexts;
|
||||
}
|
||||
|
||||
// Allocate the context if necessary.
|
||||
currentContext = contexts[contextPos];
|
||||
if (currentContext == null) {
|
||||
contexts[contextPos] = currentContext = new Context();
|
||||
}
|
||||
|
||||
// Set the parent, if any.
|
||||
if (contextPos > 0) {
|
||||
currentContext.setParent(contexts[contextPos - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Revert to the previous Namespace context.
|
||||
*
|
||||
* <p>Normally, you should pop the context at the end of each
|
||||
* XML element. After popping the context, all Namespace prefix
|
||||
* mappings that were previously in force are restored.</p>
|
||||
*
|
||||
* <p>You must not attempt to declare additional Namespace
|
||||
* prefixes after popping a context, unless you push another
|
||||
* context first.</p>
|
||||
*
|
||||
* @see #pushContext
|
||||
*/
|
||||
public void popContext ()
|
||||
{
|
||||
contextPos--;
|
||||
if (contextPos < 0) {
|
||||
throw new EmptyStackException();
|
||||
}
|
||||
currentContext = contexts[contextPos];
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Operations within a context.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Declare a Namespace prefix.
|
||||
*
|
||||
* <p>This method declares a prefix in the current Namespace
|
||||
* context; the prefix will remain in force until this context
|
||||
* is popped, unless it is shadowed in a descendant context.</p>
|
||||
*
|
||||
* <p>To declare a default Namespace, use the empty string. The
|
||||
* prefix must not be "xml" or "xmlns".</p>
|
||||
*
|
||||
* <p>Note that you must <em>not</em> declare a prefix after
|
||||
* you've pushed and popped another Namespace.</p>
|
||||
*
|
||||
* <p>Note that there is an asymmetry in this library: while {@link
|
||||
* #getPrefix getPrefix} will not return the default "" prefix,
|
||||
* even if you have declared one; to check for a default prefix,
|
||||
* you have to look it up explicitly using {@link #getURI getURI}.
|
||||
* This asymmetry exists to make it easier to look up prefixes
|
||||
* for attribute names, where the default prefix is not allowed.</p>
|
||||
*
|
||||
* @param prefix The prefix to declare, or null for the empty
|
||||
* string.
|
||||
* @param uri The Namespace URI to associate with the prefix.
|
||||
* @return true if the prefix was legal, false otherwise
|
||||
* @see #processName
|
||||
* @see #getURI
|
||||
* @see #getPrefix
|
||||
*/
|
||||
public boolean declarePrefix (String prefix, String uri)
|
||||
{
|
||||
if (prefix.equals("xml") || prefix.equals("xmlns")) {
|
||||
return false;
|
||||
} else {
|
||||
currentContext.declarePrefix(prefix, uri);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a raw XML 1.0 name.
|
||||
*
|
||||
* <p>This method processes a raw XML 1.0 name in the current
|
||||
* context by removing the prefix and looking it up among the
|
||||
* prefixes currently declared. The return value will be the
|
||||
* array supplied by the caller, filled in as follows:</p>
|
||||
*
|
||||
* <dl>
|
||||
* <dt>parts[0]</dt>
|
||||
* <dd>The Namespace URI, or an empty string if none is
|
||||
* in use.</dd>
|
||||
* <dt>parts[1]</dt>
|
||||
* <dd>The local name (without prefix).</dd>
|
||||
* <dt>parts[2]</dt>
|
||||
* <dd>The original raw name.</dd>
|
||||
* </dl>
|
||||
*
|
||||
* <p>All of the strings in the array will be internalized. If
|
||||
* the raw name has a prefix that has not been declared, then
|
||||
* the return value will be null.</p>
|
||||
*
|
||||
* <p>Note that attribute names are processed differently than
|
||||
* element names: an unprefixed element name will received the
|
||||
* default Namespace (if any), while an unprefixed element name
|
||||
* will not.</p>
|
||||
*
|
||||
* @param qName The raw XML 1.0 name to be processed.
|
||||
* @param parts An array supplied by the caller, capable of
|
||||
* holding at least three members.
|
||||
* @param isAttribute A flag indicating whether this is an
|
||||
* attribute name (true) or an element name (false).
|
||||
* @return The supplied array holding three internalized strings
|
||||
* representing the Namespace URI (or empty string), the
|
||||
* local name, and the raw XML 1.0 name; or null if there
|
||||
* is an undeclared prefix.
|
||||
* @see #declarePrefix
|
||||
* @see java.lang.String#intern */
|
||||
public String [] processName (String qName, String parts[],
|
||||
boolean isAttribute)
|
||||
{
|
||||
String myParts[] = currentContext.processName(qName, isAttribute);
|
||||
if (myParts == null) {
|
||||
return null;
|
||||
} else {
|
||||
parts[0] = myParts[0];
|
||||
parts[1] = myParts[1];
|
||||
parts[2] = myParts[2];
|
||||
return parts;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up a prefix and get the currently-mapped Namespace URI.
|
||||
*
|
||||
* <p>This method looks up the prefix in the current context.
|
||||
* Use the empty string ("") for the default Namespace.</p>
|
||||
*
|
||||
* @param prefix The prefix to look up.
|
||||
* @return The associated Namespace URI, or null if the prefix
|
||||
* is undeclared in this context.
|
||||
* @see #getPrefix
|
||||
* @see #getPrefixes
|
||||
*/
|
||||
public String getURI (String prefix)
|
||||
{
|
||||
return currentContext.getURI(prefix);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an enumeration of all prefixes currently declared.
|
||||
*
|
||||
* <p><strong>Note:</strong> if there is a default prefix, it will not be
|
||||
* returned in this enumeration; check for the default prefix
|
||||
* using the {@link #getURI getURI} with an argument of "".</p>
|
||||
*
|
||||
* @return An enumeration of all prefixes declared in the
|
||||
* current context except for the empty (default)
|
||||
* prefix.
|
||||
* @see #getDeclaredPrefixes
|
||||
* @see #getURI
|
||||
*/
|
||||
public Enumeration getPrefixes ()
|
||||
{
|
||||
return currentContext.getPrefixes();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return one of the prefixes mapped to a Namespace URI.
|
||||
*
|
||||
* <p>If more than one prefix is currently mapped to the same
|
||||
* URI, this method will make an arbitrary selection; if you
|
||||
* want all of the prefixes, use the {@link #getPrefixes}
|
||||
* method instead.</p>
|
||||
*
|
||||
* <p><strong>Note:</strong> this will never return the empty (default) prefix;
|
||||
* to check for a default prefix, use the {@link #getURI getURI}
|
||||
* method with an argument of "".</p>
|
||||
*
|
||||
* @param uri The Namespace URI.
|
||||
* @param isAttribute true if this prefix is for an attribute
|
||||
* (and the default Namespace is not allowed).
|
||||
* @return One of the prefixes currently mapped to the URI supplied,
|
||||
* or null if none is mapped or if the URI is assigned to
|
||||
* the default Namespace.
|
||||
* @see #getPrefixes(java.lang.String)
|
||||
* @see #getURI
|
||||
*/
|
||||
public String getPrefix (String uri)
|
||||
{
|
||||
return currentContext.getPrefix(uri);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an enumeration of all prefixes currently declared for a URI.
|
||||
*
|
||||
* <p>This method returns prefixes mapped to a specific Namespace
|
||||
* URI. The xml: prefix will be included. If you want only one
|
||||
* prefix that's mapped to the Namespace URI, and you don't care
|
||||
* which one you get, use the {@link #getPrefix getPrefix}
|
||||
* method instead.</p>
|
||||
*
|
||||
* <p><strong>Note:</strong> the empty (default) prefix is <em>never</em> included
|
||||
* in this enumeration; to check for the presence of a default
|
||||
* Namespace, use the {@link #getURI getURI} method with an
|
||||
* argument of "".</p>
|
||||
*
|
||||
* @param uri The Namespace URI.
|
||||
* @return An enumeration of all prefixes declared in the
|
||||
* current context.
|
||||
* @see #getPrefix
|
||||
* @see #getDeclaredPrefixes
|
||||
* @see #getURI
|
||||
*/
|
||||
public Enumeration getPrefixes (String uri)
|
||||
{
|
||||
Vector prefixes = new Vector();
|
||||
Enumeration allPrefixes = getPrefixes();
|
||||
while (allPrefixes.hasMoreElements()) {
|
||||
String prefix = (String)allPrefixes.nextElement();
|
||||
if (uri.equals(getURI(prefix))) {
|
||||
prefixes.addElement(prefix);
|
||||
}
|
||||
}
|
||||
return prefixes.elements();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an enumeration of all prefixes declared in this context.
|
||||
*
|
||||
* <p>The empty (default) prefix will be included in this
|
||||
* enumeration; note that this behaviour differs from that of
|
||||
* {@link #getPrefix} and {@link #getPrefixes}.</p>
|
||||
*
|
||||
* @return An enumeration of all prefixes declared in this
|
||||
* context.
|
||||
* @see #getPrefixes
|
||||
* @see #getURI
|
||||
*/
|
||||
public Enumeration getDeclaredPrefixes ()
|
||||
{
|
||||
return currentContext.getDeclaredPrefixes();
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
private Context contexts[];
|
||||
private Context currentContext;
|
||||
private int contextPos;
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal classes.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Internal class for a single Namespace context.
|
||||
*
|
||||
* <p>This module caches and reuses Namespace contexts, so the number allocated
|
||||
* will be equal to the element depth of the document, not to the total
|
||||
* number of elements (i.e. 5-10 rather than tens of thousands).</p>
|
||||
*/
|
||||
final class Context {
|
||||
|
||||
/**
|
||||
* Create the root-level Namespace context.
|
||||
*/
|
||||
Context ()
|
||||
{
|
||||
copyTables();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* (Re)set the parent of this Namespace context.
|
||||
*
|
||||
* @param context The parent Namespace context object.
|
||||
*/
|
||||
void setParent (Context parent)
|
||||
{
|
||||
this.parent = parent;
|
||||
declarations = null;
|
||||
prefixTable = parent.prefixTable;
|
||||
uriTable = parent.uriTable;
|
||||
elementNameTable = parent.elementNameTable;
|
||||
attributeNameTable = parent.attributeNameTable;
|
||||
defaultNS = parent.defaultNS;
|
||||
tablesDirty = false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Declare a Namespace prefix for this context.
|
||||
*
|
||||
* @param prefix The prefix to declare.
|
||||
* @param uri The associated Namespace URI.
|
||||
* @see org.xml.sax.helpers.NamespaceSupport#declarePrefix
|
||||
*/
|
||||
void declarePrefix (String prefix, String uri)
|
||||
{
|
||||
// Lazy processing...
|
||||
if (!tablesDirty) {
|
||||
copyTables();
|
||||
}
|
||||
if (declarations == null) {
|
||||
declarations = new Vector();
|
||||
}
|
||||
|
||||
prefix = prefix.intern();
|
||||
uri = uri.intern();
|
||||
if ("".equals(prefix)) {
|
||||
if ("".equals(uri)) {
|
||||
defaultNS = null;
|
||||
} else {
|
||||
defaultNS = uri;
|
||||
}
|
||||
} else {
|
||||
prefixTable.put(prefix, uri);
|
||||
uriTable.put(uri, prefix); // may wipe out another prefix
|
||||
}
|
||||
declarations.addElement(prefix);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a raw XML 1.0 name in this context.
|
||||
*
|
||||
* @param qName The raw XML 1.0 name.
|
||||
* @param isAttribute true if this is an attribute name.
|
||||
* @return An array of three strings containing the
|
||||
* URI part (or empty string), the local part,
|
||||
* and the raw name, all internalized, or null
|
||||
* if there is an undeclared prefix.
|
||||
* @see org.xml.sax.helpers.NamespaceSupport#processName
|
||||
*/
|
||||
String [] processName (String qName, boolean isAttribute)
|
||||
{
|
||||
String name[];
|
||||
Hashtable table;
|
||||
|
||||
// Select the appropriate table.
|
||||
if (isAttribute) {
|
||||
table = elementNameTable;
|
||||
} else {
|
||||
table = attributeNameTable;
|
||||
}
|
||||
|
||||
// Start by looking in the cache, and
|
||||
// return immediately if the name
|
||||
// is already known in this content
|
||||
name = (String[])table.get(qName);
|
||||
if (name != null) {
|
||||
return name;
|
||||
}
|
||||
|
||||
// We haven't seen this name in this
|
||||
// context before.
|
||||
name = new String[3];
|
||||
int index = qName.indexOf(':');
|
||||
|
||||
|
||||
// No prefix.
|
||||
if (index == -1) {
|
||||
if (isAttribute || defaultNS == null) {
|
||||
name[0] = "";
|
||||
} else {
|
||||
name[0] = defaultNS;
|
||||
}
|
||||
name[1] = qName.intern();
|
||||
name[2] = name[1];
|
||||
}
|
||||
|
||||
// Prefix
|
||||
else {
|
||||
String prefix = qName.substring(0, index);
|
||||
String local = qName.substring(index+1);
|
||||
String uri;
|
||||
if ("".equals(prefix)) {
|
||||
uri = defaultNS;
|
||||
} else {
|
||||
uri = (String)prefixTable.get(prefix);
|
||||
}
|
||||
if (uri == null) {
|
||||
return null;
|
||||
}
|
||||
name[0] = uri;
|
||||
name[1] = local.intern();
|
||||
name[2] = qName.intern();
|
||||
}
|
||||
|
||||
// Save in the cache for future use.
|
||||
table.put(name[2], name);
|
||||
tablesDirty = true;
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up the URI associated with a prefix in this context.
|
||||
*
|
||||
* @param prefix The prefix to look up.
|
||||
* @return The associated Namespace URI, or null if none is
|
||||
* declared.
|
||||
* @see org.xml.sax.helpers.NamespaceSupport#getURI
|
||||
*/
|
||||
String getURI (String prefix)
|
||||
{
|
||||
if ("".equals(prefix)) {
|
||||
return defaultNS;
|
||||
} else if (prefixTable == null) {
|
||||
return null;
|
||||
} else {
|
||||
return (String)prefixTable.get(prefix);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up one of the prefixes associated with a URI in this context.
|
||||
*
|
||||
* <p>Since many prefixes may be mapped to the same URI,
|
||||
* the return value may be unreliable.</p>
|
||||
*
|
||||
* @param uri The URI to look up.
|
||||
* @return The associated prefix, or null if none is declared.
|
||||
* @see org.xml.sax.helpers.NamespaceSupport#getPrefix
|
||||
*/
|
||||
String getPrefix (String uri)
|
||||
{
|
||||
if (uriTable == null) {
|
||||
return null;
|
||||
} else {
|
||||
return (String)uriTable.get(uri);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an enumeration of prefixes declared in this context.
|
||||
*
|
||||
* @return An enumeration of prefixes (possibly empty).
|
||||
* @see org.xml.sax.helpers.NamespaceSupport#getDeclaredPrefixes
|
||||
*/
|
||||
Enumeration getDeclaredPrefixes ()
|
||||
{
|
||||
if (declarations == null) {
|
||||
return EMPTY_ENUMERATION;
|
||||
} else {
|
||||
return declarations.elements();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return an enumeration of all prefixes currently in force.
|
||||
*
|
||||
* <p>The default prefix, if in force, is <em>not</em>
|
||||
* returned, and will have to be checked for separately.</p>
|
||||
*
|
||||
* @return An enumeration of prefixes (never empty).
|
||||
* @see org.xml.sax.helpers.NamespaceSupport#getPrefixes
|
||||
*/
|
||||
Enumeration getPrefixes ()
|
||||
{
|
||||
if (prefixTable == null) {
|
||||
return EMPTY_ENUMERATION;
|
||||
} else {
|
||||
return prefixTable.keys();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// Internal methods.
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Copy on write for the internal tables in this context.
|
||||
*
|
||||
* <p>This class is optimized for the normal case where most
|
||||
* elements do not contain Namespace declarations.</p>
|
||||
*/
|
||||
private void copyTables ()
|
||||
{
|
||||
if (prefixTable != null) {
|
||||
prefixTable = (Hashtable)prefixTable.clone();
|
||||
} else {
|
||||
prefixTable = new Hashtable();
|
||||
}
|
||||
if (uriTable != null) {
|
||||
uriTable = (Hashtable)uriTable.clone();
|
||||
} else {
|
||||
uriTable = new Hashtable();
|
||||
}
|
||||
elementNameTable = new Hashtable();
|
||||
attributeNameTable = new Hashtable();
|
||||
tablesDirty = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// Protected state.
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
Hashtable prefixTable;
|
||||
Hashtable uriTable;
|
||||
Hashtable elementNameTable;
|
||||
Hashtable attributeNameTable;
|
||||
String defaultNS = null;
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
private Vector declarations = null;
|
||||
private boolean tablesDirty = false;
|
||||
private Context parent = null;
|
||||
}
|
||||
}
|
||||
|
||||
// end of NamespaceSupport.java
|
1008
libjava/org/xml/sax/helpers/ParserAdapter.java
Normal file
1008
libjava/org/xml/sax/helpers/ParserAdapter.java
Normal file
File diff suppressed because it is too large
Load Diff
129
libjava/org/xml/sax/helpers/ParserFactory.java
Normal file
129
libjava/org/xml/sax/helpers/ParserFactory.java
Normal file
@ -0,0 +1,129 @@
|
||||
// SAX parser factory.
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: ParserFactory.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import java.lang.ClassNotFoundException;
|
||||
import java.lang.IllegalAccessException;
|
||||
import java.lang.InstantiationException;
|
||||
import java.lang.SecurityException;
|
||||
import java.lang.ClassCastException;
|
||||
|
||||
import org.xml.sax.Parser;
|
||||
|
||||
|
||||
/**
|
||||
* Java-specific class for dynamically loading SAX parsers.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p><strong>Note:</strong> This class is designed to work with the now-deprecated
|
||||
* SAX1 {@link org.xml.sax.Parser Parser} class. SAX2 applications should use
|
||||
* {@link org.xml.sax.helpers.XMLReaderFactory XMLReaderFactory} instead.</p>
|
||||
*
|
||||
* <p>ParserFactory is not part of the platform-independent definition
|
||||
* of SAX; it is an additional convenience class designed
|
||||
* specifically for Java XML application writers. SAX applications
|
||||
* can use the static methods in this class to allocate a SAX parser
|
||||
* dynamically at run-time based either on the value of the
|
||||
* `org.xml.sax.parser' system property or on a string containing the class
|
||||
* name.</p>
|
||||
*
|
||||
* <p>Note that the application still requires an XML parser that
|
||||
* implements SAX1.</p>
|
||||
*
|
||||
* @deprecated This class works with the deprecated
|
||||
* {@link org.xml.sax.Parser Parser}
|
||||
* interface.
|
||||
* @since SAX 1.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Parser
|
||||
* @see java.lang.Class
|
||||
*/
|
||||
public class ParserFactory {
|
||||
|
||||
|
||||
/**
|
||||
* Private null constructor.
|
||||
*/
|
||||
private ParserFactory ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new SAX parser using the `org.xml.sax.parser' system property.
|
||||
*
|
||||
* <p>The named class must exist and must implement the
|
||||
* {@link org.xml.sax.Parser Parser} interface.</p>
|
||||
*
|
||||
* @exception java.lang.NullPointerException There is no value
|
||||
* for the `org.xml.sax.parser' system property.
|
||||
* @exception java.lang.ClassNotFoundException The SAX parser
|
||||
* class was not found (check your CLASSPATH).
|
||||
* @exception IllegalAccessException The SAX parser class was
|
||||
* found, but you do not have permission to load
|
||||
* it.
|
||||
* @exception InstantiationException The SAX parser class was
|
||||
* found but could not be instantiated.
|
||||
* @exception java.lang.ClassCastException The SAX parser class
|
||||
* was found and instantiated, but does not implement
|
||||
* org.xml.sax.Parser.
|
||||
* @see #makeParser(java.lang.String)
|
||||
* @see org.xml.sax.Parser
|
||||
*/
|
||||
public static Parser makeParser ()
|
||||
throws ClassNotFoundException,
|
||||
IllegalAccessException,
|
||||
InstantiationException,
|
||||
NullPointerException,
|
||||
ClassCastException
|
||||
{
|
||||
String className = System.getProperty("org.xml.sax.parser");
|
||||
if (className == null) {
|
||||
throw new NullPointerException("No value for sax.parser property");
|
||||
} else {
|
||||
return makeParser(className);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new SAX parser object using the class name provided.
|
||||
*
|
||||
* <p>The named class must exist and must implement the
|
||||
* {@link org.xml.sax.Parser Parser} interface.</p>
|
||||
*
|
||||
* @param className A string containing the name of the
|
||||
* SAX parser class.
|
||||
* @exception java.lang.ClassNotFoundException The SAX parser
|
||||
* class was not found (check your CLASSPATH).
|
||||
* @exception IllegalAccessException The SAX parser class was
|
||||
* found, but you do not have permission to load
|
||||
* it.
|
||||
* @exception InstantiationException The SAX parser class was
|
||||
* found but could not be instantiated.
|
||||
* @exception java.lang.ClassCastException The SAX parser class
|
||||
* was found and instantiated, but does not implement
|
||||
* org.xml.sax.Parser.
|
||||
* @see #makeParser()
|
||||
* @see org.xml.sax.Parser
|
||||
*/
|
||||
public static Parser makeParser (String className)
|
||||
throws ClassNotFoundException,
|
||||
IllegalAccessException,
|
||||
InstantiationException,
|
||||
ClassCastException
|
||||
{
|
||||
return (Parser)(Class.forName(className).newInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of ParserFactory.java
|
769
libjava/org/xml/sax/helpers/XMLFilterImpl.java
Normal file
769
libjava/org/xml/sax/helpers/XMLFilterImpl.java
Normal file
@ -0,0 +1,769 @@
|
||||
// XMLFilterImpl.java - base SAX2 filter implementation.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the Public Domain.
|
||||
|
||||
// $Id: XMLFilterImpl.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.XMLFilter;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.Locator;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.EntityResolver;
|
||||
import org.xml.sax.DTDHandler;
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
import org.xml.sax.SAXNotSupportedException;
|
||||
import org.xml.sax.SAXNotRecognizedException;
|
||||
|
||||
|
||||
/**
|
||||
* Base class for deriving an XML filter.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class is designed to sit between an {@link org.xml.sax.XMLReader
|
||||
* XMLReader} and the client application's event handlers. By default, it
|
||||
* does nothing but pass requests up to the reader and events
|
||||
* on to the handlers unmodified, but subclasses can override
|
||||
* specific methods to modify the event stream or the configuration
|
||||
* requests as they pass through.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.XMLFilter
|
||||
* @see org.xml.sax.XMLReader
|
||||
* @see org.xml.sax.EntityResolver
|
||||
* @see org.xml.sax.DTDHandler
|
||||
* @see org.xml.sax.ContentHandler
|
||||
* @see org.xml.sax.ErrorHandler
|
||||
*/
|
||||
public class XMLFilterImpl
|
||||
implements XMLFilter, EntityResolver, DTDHandler, ContentHandler, ErrorHandler
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Constructors.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Construct an empty XML filter, with no parent.
|
||||
*
|
||||
* <p>This filter will have no parent: you must assign a parent
|
||||
* before you start a parse or do any configuration with
|
||||
* setFeature or setProperty.</p>
|
||||
*
|
||||
* @see org.xml.sax.XMLReader#setFeature
|
||||
* @see org.xml.sax.XMLReader#setProperty
|
||||
*/
|
||||
public XMLFilterImpl ()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Construct an XML filter with the specified parent.
|
||||
*
|
||||
* @see #setParent
|
||||
* @see #getParent
|
||||
*/
|
||||
public XMLFilterImpl (XMLReader parent)
|
||||
{
|
||||
super();
|
||||
setParent(parent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.XMLFilter.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Set the parent reader.
|
||||
*
|
||||
* <p>This is the {@link org.xml.sax.XMLReader XMLReader} from which
|
||||
* this filter will obtain its events and to which it will pass its
|
||||
* configuration requests. The parent may itself be another filter.</p>
|
||||
*
|
||||
* <p>If there is no parent reader set, any attempt to parse
|
||||
* or to set or get a feature or property will fail.</p>
|
||||
*
|
||||
* @param parent The parent XML reader.
|
||||
* @exception java.lang.NullPointerException If the parent is null.
|
||||
* @see #getParent
|
||||
*/
|
||||
public void setParent (XMLReader parent)
|
||||
{
|
||||
if (parent == null) {
|
||||
throw new NullPointerException("Null parent");
|
||||
}
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the parent reader.
|
||||
*
|
||||
* @return The parent XML reader, or null if none is set.
|
||||
* @see #setParent
|
||||
*/
|
||||
public XMLReader getParent ()
|
||||
{
|
||||
return parent;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.XMLReader.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Set the state of a feature.
|
||||
*
|
||||
* <p>This will always fail if the parent is null.</p>
|
||||
*
|
||||
* @param name The feature name.
|
||||
* @param state The requested feature state.
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the feature name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the feature name but
|
||||
* cannot set the requested value.
|
||||
* @see org.xml.sax.XMLReader#setFeature
|
||||
*/
|
||||
public void setFeature (String name, boolean state)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException
|
||||
{
|
||||
if (parent != null) {
|
||||
parent.setFeature(name, state);
|
||||
} else {
|
||||
throw new SAXNotRecognizedException("Feature: " + name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up the state of a feature.
|
||||
*
|
||||
* <p>This will always fail if the parent is null.</p>
|
||||
*
|
||||
* @param name The feature name.
|
||||
* @return The current state of the feature.
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the feature name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the feature name but
|
||||
* cannot determine its state at this time.
|
||||
* @see org.xml.sax.XMLReader#getFeature
|
||||
*/
|
||||
public boolean getFeature (String name)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException
|
||||
{
|
||||
if (parent != null) {
|
||||
return parent.getFeature(name);
|
||||
} else {
|
||||
throw new SAXNotRecognizedException("Feature: " + name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the value of a property.
|
||||
*
|
||||
* <p>This will always fail if the parent is null.</p>
|
||||
*
|
||||
* @param name The property name.
|
||||
* @param state The requested property value.
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the property name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the property name but
|
||||
* cannot set the requested value.
|
||||
* @see org.xml.sax.XMLReader#setProperty
|
||||
*/
|
||||
public void setProperty (String name, Object value)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException
|
||||
{
|
||||
if (parent != null) {
|
||||
parent.setProperty(name, value);
|
||||
} else {
|
||||
throw new SAXNotRecognizedException("Property: " + name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Look up the value of a property.
|
||||
*
|
||||
* @param name The property name.
|
||||
* @return The current value of the property.
|
||||
* @exception org.xml.sax.SAXNotRecognizedException When the
|
||||
* XMLReader does not recognize the feature name.
|
||||
* @exception org.xml.sax.SAXNotSupportedException When the
|
||||
* XMLReader recognizes the property name but
|
||||
* cannot determine its value at this time.
|
||||
* @see org.xml.sax.XMLReader#setFeature
|
||||
*/
|
||||
public Object getProperty (String name)
|
||||
throws SAXNotRecognizedException, SAXNotSupportedException
|
||||
{
|
||||
if (parent != null) {
|
||||
return parent.getProperty(name);
|
||||
} else {
|
||||
throw new SAXNotRecognizedException("Property: " + name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the entity resolver.
|
||||
*
|
||||
* @param resolver The new entity resolver.
|
||||
* @exception java.lang.NullPointerException If the resolver
|
||||
* is null.
|
||||
* @see org.xml.sax.XMLReader#setEntityResolver
|
||||
*/
|
||||
public void setEntityResolver (EntityResolver resolver)
|
||||
{
|
||||
if (resolver == null) {
|
||||
throw new NullPointerException("Null entity resolver");
|
||||
} else {
|
||||
entityResolver = resolver;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the current entity resolver.
|
||||
*
|
||||
* @return The current entity resolver, or null if none was set.
|
||||
* @see org.xml.sax.XMLReader#getEntityResolver
|
||||
*/
|
||||
public EntityResolver getEntityResolver ()
|
||||
{
|
||||
return entityResolver;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the DTD event handler.
|
||||
*
|
||||
* @param resolver The new DTD handler.
|
||||
* @exception java.lang.NullPointerException If the handler
|
||||
* is null.
|
||||
* @see org.xml.sax.XMLReader#setDTDHandler
|
||||
*/
|
||||
public void setDTDHandler (DTDHandler handler)
|
||||
{
|
||||
if (handler == null) {
|
||||
throw new NullPointerException("Null DTD handler");
|
||||
} else {
|
||||
dtdHandler = handler;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the current DTD event handler.
|
||||
*
|
||||
* @return The current DTD handler, or null if none was set.
|
||||
* @see org.xml.sax.XMLReader#getDTDHandler
|
||||
*/
|
||||
public DTDHandler getDTDHandler ()
|
||||
{
|
||||
return dtdHandler;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the content event handler.
|
||||
*
|
||||
* @param resolver The new content handler.
|
||||
* @exception java.lang.NullPointerException If the handler
|
||||
* is null.
|
||||
* @see org.xml.sax.XMLReader#setContentHandler
|
||||
*/
|
||||
public void setContentHandler (ContentHandler handler)
|
||||
{
|
||||
if (handler == null) {
|
||||
throw new NullPointerException("Null content handler");
|
||||
} else {
|
||||
contentHandler = handler;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the content event handler.
|
||||
*
|
||||
* @return The current content handler, or null if none was set.
|
||||
* @see org.xml.sax.XMLReader#getContentHandler
|
||||
*/
|
||||
public ContentHandler getContentHandler ()
|
||||
{
|
||||
return contentHandler;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the error event handler.
|
||||
*
|
||||
* @param handle The new error handler.
|
||||
* @exception java.lang.NullPointerException If the handler
|
||||
* is null.
|
||||
* @see org.xml.sax.XMLReader#setErrorHandler
|
||||
*/
|
||||
public void setErrorHandler (ErrorHandler handler)
|
||||
{
|
||||
if (handler == null) {
|
||||
throw new NullPointerException("Null error handler");
|
||||
} else {
|
||||
errorHandler = handler;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the current error event handler.
|
||||
*
|
||||
* @return The current error handler, or null if none was set.
|
||||
* @see org.xml.sax.XMLReader#getErrorHandler
|
||||
*/
|
||||
public ErrorHandler getErrorHandler ()
|
||||
{
|
||||
return errorHandler;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse a document.
|
||||
*
|
||||
* @param input The input source for the document entity.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @exception java.io.IOException An IO exception from the parser,
|
||||
* possibly from a byte stream or character stream
|
||||
* supplied by the application.
|
||||
* @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource)
|
||||
*/
|
||||
public void parse (InputSource input)
|
||||
throws SAXException, IOException
|
||||
{
|
||||
setupParse();
|
||||
parent.parse(input);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse a document.
|
||||
*
|
||||
* @param systemId The system identifier as a fully-qualified URI.
|
||||
* @exception org.xml.sax.SAXException Any SAX exception, possibly
|
||||
* wrapping another exception.
|
||||
* @exception java.io.IOException An IO exception from the parser,
|
||||
* possibly from a byte stream or character stream
|
||||
* supplied by the application.
|
||||
* @see org.xml.sax.XMLReader#parse(java.lang.String)
|
||||
*/
|
||||
public void parse (String systemId)
|
||||
throws SAXException, IOException
|
||||
{
|
||||
parse(new InputSource(systemId));
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.EntityResolver.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Filter an external entity resolution.
|
||||
*
|
||||
* @param publicId The entity's public identifier, or null.
|
||||
* @param systemId The entity's system identifier.
|
||||
* @return A new InputSource or null for the default.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @exception java.io.IOException The client may throw an
|
||||
* I/O-related exception while obtaining the
|
||||
* new InputSource.
|
||||
* @see org.xml.sax.EntityResolver#resolveEntity
|
||||
*/
|
||||
public InputSource resolveEntity (String publicId, String systemId)
|
||||
throws SAXException, IOException
|
||||
{
|
||||
if (entityResolver != null) {
|
||||
return entityResolver.resolveEntity(publicId, systemId);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.DTDHandler.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Filter a notation declaration event.
|
||||
*
|
||||
* @param name The notation name.
|
||||
* @param publicId The notation's public identifier, or null.
|
||||
* @param systemId The notation's system identifier, or null.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.DTDHandler#notationDecl
|
||||
*/
|
||||
public void notationDecl (String name, String publicId, String systemId)
|
||||
throws SAXException
|
||||
{
|
||||
if (dtdHandler != null) {
|
||||
dtdHandler.notationDecl(name, publicId, systemId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter an unparsed entity declaration event.
|
||||
*
|
||||
* @param name The entity name.
|
||||
* @param publicId The entity's public identifier, or null.
|
||||
* @param systemId The entity's system identifier, or null.
|
||||
* @param notationName The name of the associated notation.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.DTDHandler#unparsedEntityDecl
|
||||
*/
|
||||
public void unparsedEntityDecl (String name, String publicId,
|
||||
String systemId, String notationName)
|
||||
throws SAXException
|
||||
{
|
||||
if (dtdHandler != null) {
|
||||
dtdHandler.unparsedEntityDecl(name, publicId, systemId,
|
||||
notationName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.ContentHandler.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Filter a new document locator event.
|
||||
*
|
||||
* @param locator The document locator.
|
||||
* @see org.xml.sax.ContentHandler#setDocumentLocator
|
||||
*/
|
||||
public void setDocumentLocator (Locator locator)
|
||||
{
|
||||
this.locator = locator;
|
||||
if (contentHandler != null) {
|
||||
contentHandler.setDocumentLocator(locator);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter a start document event.
|
||||
*
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#startDocument
|
||||
*/
|
||||
public void startDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.startDocument();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter an end document event.
|
||||
*
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#endDocument
|
||||
*/
|
||||
public void endDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.endDocument();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter a start Namespace prefix mapping event.
|
||||
*
|
||||
* @param prefix The Namespace prefix.
|
||||
* @param uri The Namespace URI.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#startPrefixMapping
|
||||
*/
|
||||
public void startPrefixMapping (String prefix, String uri)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.startPrefixMapping(prefix, uri);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter an end Namespace prefix mapping event.
|
||||
*
|
||||
* @param prefix The Namespace prefix.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#endPrefixMapping
|
||||
*/
|
||||
public void endPrefixMapping (String prefix)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.endPrefixMapping(prefix);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter a start element event.
|
||||
*
|
||||
* @param uri The element's Namespace URI, or the empty string.
|
||||
* @param localName The element's local name, or the empty string.
|
||||
* @param qName The element's qualified (prefixed) name, or the empty
|
||||
* string.
|
||||
* @param atts The element's attributes.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#startElement
|
||||
*/
|
||||
public void startElement (String uri, String localName, String qName,
|
||||
Attributes atts)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.startElement(uri, localName, qName, atts);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter an end element event.
|
||||
*
|
||||
* @param uri The element's Namespace URI, or the empty string.
|
||||
* @param localName The element's local name, or the empty string.
|
||||
* @param qName The element's qualified (prefixed) name, or the empty
|
||||
* string.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#endElement
|
||||
*/
|
||||
public void endElement (String uri, String localName, String qName)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.endElement(uri, localName, qName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter a character data event.
|
||||
*
|
||||
* @param ch An array of characters.
|
||||
* @param start The starting position in the array.
|
||||
* @param length The number of characters to use from the array.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#characters
|
||||
*/
|
||||
public void characters (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.characters(ch, start, length);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter an ignorable whitespace event.
|
||||
*
|
||||
* @param ch An array of characters.
|
||||
* @param start The starting position in the array.
|
||||
* @param length The number of characters to use from the array.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#ignorableWhitespace
|
||||
*/
|
||||
public void ignorableWhitespace (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.ignorableWhitespace(ch, start, length);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter a processing instruction event.
|
||||
*
|
||||
* @param target The processing instruction target.
|
||||
* @param data The text following the target.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#processingInstruction
|
||||
*/
|
||||
public void processingInstruction (String target, String data)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.processingInstruction(target, data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter a skipped entity event.
|
||||
*
|
||||
* @param name The name of the skipped entity.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ContentHandler#skippedEntity
|
||||
*/
|
||||
public void skippedEntity (String name)
|
||||
throws SAXException
|
||||
{
|
||||
if (contentHandler != null) {
|
||||
contentHandler.skippedEntity(name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.ErrorHandler.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Filter a warning event.
|
||||
*
|
||||
* @param e The nwarning as an exception.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ErrorHandler#warning
|
||||
*/
|
||||
public void warning (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
if (errorHandler != null) {
|
||||
errorHandler.warning(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter an error event.
|
||||
*
|
||||
* @param e The error as an exception.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ErrorHandler#error
|
||||
*/
|
||||
public void error (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
if (errorHandler != null) {
|
||||
errorHandler.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filter a fatal error event.
|
||||
*
|
||||
* @param e The error as an exception.
|
||||
* @exception org.xml.sax.SAXException The client may throw
|
||||
* an exception during processing.
|
||||
* @see org.xml.sax.ErrorHandler#fatalError
|
||||
*/
|
||||
public void fatalError (SAXParseException e)
|
||||
throws SAXException
|
||||
{
|
||||
if (errorHandler != null) {
|
||||
errorHandler.fatalError(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal methods.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Set up before a parse.
|
||||
*
|
||||
* <p>Before every parse, check whether the parent is
|
||||
* non-null, and re-register the filter for all of the
|
||||
* events.</p>
|
||||
*/
|
||||
private void setupParse ()
|
||||
{
|
||||
if (parent == null) {
|
||||
throw new NullPointerException("No parent for filter");
|
||||
}
|
||||
parent.setEntityResolver(this);
|
||||
parent.setDTDHandler(this);
|
||||
parent.setContentHandler(this);
|
||||
parent.setErrorHandler(this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
private XMLReader parent = null;
|
||||
private Locator locator = null;
|
||||
private EntityResolver entityResolver = null;
|
||||
private DTDHandler dtdHandler = null;
|
||||
private ContentHandler contentHandler = null;
|
||||
private ErrorHandler errorHandler = null;
|
||||
|
||||
}
|
||||
|
||||
// end of XMLFilterImpl.java
|
526
libjava/org/xml/sax/helpers/XMLReaderAdapter.java
Normal file
526
libjava/org/xml/sax/helpers/XMLReaderAdapter.java
Normal file
@ -0,0 +1,526 @@
|
||||
// XMLReaderAdapter.java - adapt an SAX2 XMLReader to a SAX1 Parser
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the public domain.
|
||||
|
||||
// $Id: XMLReaderAdapter.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.xml.sax.Parser; // deprecated
|
||||
import org.xml.sax.Locator;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.AttributeList; // deprecated
|
||||
import org.xml.sax.EntityResolver;
|
||||
import org.xml.sax.DTDHandler;
|
||||
import org.xml.sax.DocumentHandler; // deprecated
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.SAXNotSupportedException;
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 XMLReader as a SAX1 Parser.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class wraps a SAX2 {@link org.xml.sax.XMLReader XMLReader}
|
||||
* and makes it act as a SAX1 {@link org.xml.sax.Parser Parser}. The XMLReader
|
||||
* must support a true value for the
|
||||
* http://xml.org/sax/features/namespace-prefixes property or parsing will fail
|
||||
* with a {@link org.xml.sax.SAXException SAXException}; if the XMLReader
|
||||
* supports a false value for the http://xml.org/sax/features/namespaces
|
||||
* property, that will also be used to improve efficiency.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.Parser
|
||||
* @see org.xml.sax.XMLReader
|
||||
*/
|
||||
public class XMLReaderAdapter implements Parser, ContentHandler
|
||||
{
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Constructor.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Create a new adapter.
|
||||
*
|
||||
* <p>Use the "org.xml.sax.driver" property to locate the SAX2
|
||||
* driver to embed.</p>
|
||||
*
|
||||
* @exception org.xml.sax.SAXException If the embedded driver
|
||||
* cannot be instantiated or if the
|
||||
* org.xml.sax.driver property is not specified.
|
||||
*/
|
||||
public XMLReaderAdapter ()
|
||||
throws SAXException
|
||||
{
|
||||
setup(XMLReaderFactory.createXMLReader());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new adapter.
|
||||
*
|
||||
* <p>Create a new adapter, wrapped around a SAX2 XMLReader.
|
||||
* The adapter will make the XMLReader act like a SAX1
|
||||
* Parser.</p>
|
||||
*
|
||||
* @param xmlReader The SAX2 XMLReader to wrap.
|
||||
* @exception java.lang.NullPointerException If the argument is null.
|
||||
*/
|
||||
public XMLReaderAdapter (XMLReader xmlReader)
|
||||
{
|
||||
setup(xmlReader);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Internal setup.
|
||||
*
|
||||
* @param xmlReader The embedded XMLReader.
|
||||
*/
|
||||
private void setup (XMLReader xmlReader)
|
||||
{
|
||||
if (xmlReader == null) {
|
||||
throw new NullPointerException("XMLReader must not be null");
|
||||
}
|
||||
this.xmlReader = xmlReader;
|
||||
qAtts = new AttributesAdapter();
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.Parser.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Set the locale for error reporting.
|
||||
*
|
||||
* <p>This is not supported in SAX2, and will always throw
|
||||
* an exception.</p>
|
||||
*
|
||||
* @param The locale for error reporting.
|
||||
* @see org.xml.sax.Parser#setLocale
|
||||
*/
|
||||
public void setLocale (Locale locale)
|
||||
throws SAXException
|
||||
{
|
||||
throw new SAXNotSupportedException("setLocale not supported");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register the entity resolver.
|
||||
*
|
||||
* @param resolver The new resolver.
|
||||
* @see org.xml.sax.Parser#setEntityResolver
|
||||
*/
|
||||
public void setEntityResolver (EntityResolver resolver)
|
||||
{
|
||||
xmlReader.setEntityResolver(resolver);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register the DTD event handler.
|
||||
*
|
||||
* @param handler The new DTD event handler.
|
||||
* @see org.xml.sax.Parser#setDTDHandler
|
||||
*/
|
||||
public void setDTDHandler (DTDHandler handler)
|
||||
{
|
||||
xmlReader.setDTDHandler(handler);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register the SAX1 document event handler.
|
||||
*
|
||||
* <p>Note that the SAX1 document handler has no Namespace
|
||||
* support.</p>
|
||||
*
|
||||
* @param handler The new SAX1 document event handler.
|
||||
* @see org.xml.sax.Parser#setDocumentHandler
|
||||
*/
|
||||
public void setDocumentHandler (DocumentHandler handler)
|
||||
{
|
||||
documentHandler = handler;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register the error event handler.
|
||||
*
|
||||
* @param handler The new error event handler.
|
||||
* @see org.xml.sax.Parser#setErrorHandler
|
||||
*/
|
||||
public void setErrorHandler (ErrorHandler handler)
|
||||
{
|
||||
xmlReader.setErrorHandler(handler);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse the document.
|
||||
*
|
||||
* <p>This method will throw an exception if the embedded
|
||||
* XMLReader does not support the
|
||||
* http://xml.org/sax/features/namespace-prefixes property.</p>
|
||||
*
|
||||
* @param systemId The absolute URL of the document.
|
||||
* @exception java.io.IOException If there is a problem reading
|
||||
* the raw content of the document.
|
||||
* @exception org.xml.sax.SAXException If there is a problem
|
||||
* processing the document.
|
||||
* @see #parse(org.xml.sax.InputSource)
|
||||
* @see org.xml.sax.Parser#parse(java.lang.String)
|
||||
*/
|
||||
public void parse (String systemId)
|
||||
throws IOException, SAXException
|
||||
{
|
||||
parse(new InputSource(systemId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse the document.
|
||||
*
|
||||
* <p>This method will throw an exception if the embedded
|
||||
* XMLReader does not support the
|
||||
* http://xml.org/sax/features/namespace-prefixes property.</p>
|
||||
*
|
||||
* @param input An input source for the document.
|
||||
* @exception java.io.IOException If there is a problem reading
|
||||
* the raw content of the document.
|
||||
* @exception org.xml.sax.SAXException If there is a problem
|
||||
* processing the document.
|
||||
* @see #parse(java.lang.String)
|
||||
* @see org.xml.sax.Parser#parse(org.xml.sax.InputSource)
|
||||
*/
|
||||
public void parse (InputSource input)
|
||||
throws IOException, SAXException
|
||||
{
|
||||
setupXMLReader();
|
||||
xmlReader.parse(input);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set up the XML reader.
|
||||
*/
|
||||
private void setupXMLReader ()
|
||||
throws SAXException
|
||||
{
|
||||
xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
|
||||
try {
|
||||
xmlReader.setFeature("http://xml.org/sax/features/namespaces",
|
||||
false);
|
||||
} catch (SAXException e) {
|
||||
// NO OP: it's just extra information, and we can ignore it
|
||||
}
|
||||
xmlReader.setContentHandler(this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of org.xml.sax.ContentHandler.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Set a document locator.
|
||||
*
|
||||
* @param locator The document locator.
|
||||
* @see org.xml.sax.ContentHandler#setDocumentLocator
|
||||
*/
|
||||
public void setDocumentLocator (Locator locator)
|
||||
{
|
||||
documentHandler.setDocumentLocator(locator);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Start document event.
|
||||
*
|
||||
* @exception org.xml.sax.SAXException The client may raise a
|
||||
* processing exception.
|
||||
* @see org.xml.sax.ContentHandler#startDocument
|
||||
*/
|
||||
public void startDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
documentHandler.startDocument();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* End document event.
|
||||
*
|
||||
* @exception org.xml.sax.SAXException The client may raise a
|
||||
* processing exception.
|
||||
* @see org.xml.sax.ContentHandler#endDocument
|
||||
*/
|
||||
public void endDocument ()
|
||||
throws SAXException
|
||||
{
|
||||
documentHandler.endDocument();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 start prefix mapping event.
|
||||
*
|
||||
* @param prefix The prefix being mapped.
|
||||
* @param uri The Namespace URI being mapped to.
|
||||
* @see org.xml.sax.ContentHandler#startPrefixMapping
|
||||
*/
|
||||
public void startPrefixMapping (String prefix, String uri)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 end prefix mapping event.
|
||||
*
|
||||
* @param prefix The prefix being mapped.
|
||||
* @see org.xml.sax.ContentHandler#endPrefixMapping
|
||||
*/
|
||||
public void endPrefixMapping (String prefix)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 start element event.
|
||||
*
|
||||
* @param uri The Namespace URI.
|
||||
* @param localName The Namespace local name.
|
||||
* @param qName The qualified (prefixed) name.
|
||||
* @param atts The SAX2 attributes.
|
||||
* @exception org.xml.sax.SAXException The client may raise a
|
||||
* processing exception.
|
||||
* @see org.xml.sax.ContentHandler#endDocument
|
||||
*/
|
||||
public void startElement (String uri, String localName,
|
||||
String qName, Attributes atts)
|
||||
throws SAXException
|
||||
{
|
||||
qAtts.setAttributes(atts);
|
||||
documentHandler.startElement(qName, qAtts);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 end element event.
|
||||
*
|
||||
* @param uri The Namespace URI.
|
||||
* @param localName The Namespace local name.
|
||||
* @param qName The qualified (prefixed) name.
|
||||
* @exception org.xml.sax.SAXException The client may raise a
|
||||
* processing exception.
|
||||
* @see org.xml.sax.ContentHandler#endElement
|
||||
*/
|
||||
public void endElement (String uri, String localName,
|
||||
String qName)
|
||||
throws SAXException
|
||||
{
|
||||
documentHandler.endElement(qName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 characters event.
|
||||
*
|
||||
* @param ch An array of characters.
|
||||
* @param start The starting position in the array.
|
||||
* @param length The number of characters to use.
|
||||
* @exception org.xml.sax.SAXException The client may raise a
|
||||
* processing exception.
|
||||
* @see org.xml.sax.ContentHandler#characters
|
||||
*/
|
||||
public void characters (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
documentHandler.characters(ch, start, length);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 ignorable whitespace event.
|
||||
*
|
||||
* @param ch An array of characters.
|
||||
* @param start The starting position in the array.
|
||||
* @param length The number of characters to use.
|
||||
* @exception org.xml.sax.SAXException The client may raise a
|
||||
* processing exception.
|
||||
* @see org.xml.sax.ContentHandler#ignorableWhitespace
|
||||
*/
|
||||
public void ignorableWhitespace (char ch[], int start, int length)
|
||||
throws SAXException
|
||||
{
|
||||
documentHandler.ignorableWhitespace(ch, start, length);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 processing instruction event.
|
||||
*
|
||||
* @param target The processing instruction target.
|
||||
* @param data The remainder of the processing instruction
|
||||
* @exception org.xml.sax.SAXException The client may raise a
|
||||
* processing exception.
|
||||
* @see org.xml.sax.ContentHandler#processingInstruction
|
||||
*/
|
||||
public void processingInstruction (String target, String data)
|
||||
throws SAXException
|
||||
{
|
||||
documentHandler.processingInstruction(target, data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adapt a SAX2 skipped entity event.
|
||||
*
|
||||
* @param name The name of the skipped entity.
|
||||
* @see org.xml.sax.ContentHandler#skippedEntity
|
||||
*/
|
||||
public void skippedEntity (String name)
|
||||
throws SAXException
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal state.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
XMLReader xmlReader;
|
||||
DocumentHandler documentHandler;
|
||||
AttributesAdapter qAtts;
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Internal class.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Internal class to wrap a SAX2 Attributes object for SAX1.
|
||||
*/
|
||||
final class AttributesAdapter implements AttributeList
|
||||
{
|
||||
AttributesAdapter ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the embedded Attributes object.
|
||||
*
|
||||
* @param The embedded SAX2 Attributes.
|
||||
*/
|
||||
void setAttributes (Attributes attributes)
|
||||
{
|
||||
this.attributes = attributes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the number of attributes.
|
||||
*
|
||||
* @return The length of the attribute list.
|
||||
* @see org.xml.sax.AttributeList#getLength
|
||||
*/
|
||||
public int getLength ()
|
||||
{
|
||||
return attributes.getLength();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the qualified (prefixed) name of an attribute by position.
|
||||
*
|
||||
* @return The qualified name.
|
||||
* @see org.xml.sax.AttributeList#getName
|
||||
*/
|
||||
public String getName (int i)
|
||||
{
|
||||
return attributes.getQName(i);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the type of an attribute by position.
|
||||
*
|
||||
* @return The type.
|
||||
* @see org.xml.sax.AttributeList#getType(int)
|
||||
*/
|
||||
public String getType (int i)
|
||||
{
|
||||
return attributes.getType(i);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the value of an attribute by position.
|
||||
*
|
||||
* @return The value.
|
||||
* @see org.xml.sax.AttributeList#getValue(int)
|
||||
*/
|
||||
public String getValue (int i)
|
||||
{
|
||||
return attributes.getValue(i);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the type of an attribute by qualified (prefixed) name.
|
||||
*
|
||||
* @return The type.
|
||||
* @see org.xml.sax.AttributeList#getType(java.lang.String)
|
||||
*/
|
||||
public String getType (String qName)
|
||||
{
|
||||
return attributes.getType(qName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the value of an attribute by qualified (prefixed) name.
|
||||
*
|
||||
* @return The value.
|
||||
* @see org.xml.sax.AttributeList#getValue(java.lang.String)
|
||||
*/
|
||||
public String getValue (String qName)
|
||||
{
|
||||
return attributes.getValue(qName);
|
||||
}
|
||||
|
||||
private Attributes attributes;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of XMLReaderAdapter.java
|
136
libjava/org/xml/sax/helpers/XMLReaderFactory.java
Normal file
136
libjava/org/xml/sax/helpers/XMLReaderFactory.java
Normal file
@ -0,0 +1,136 @@
|
||||
// XMLReaderFactory.java - factory for creating a new reader.
|
||||
// Written by David Megginson, sax@megginson.com
|
||||
// NO WARRANTY! This class is in the Public Domain.
|
||||
|
||||
// $Id: XMLReaderFactory.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
|
||||
|
||||
package org.xml.sax.helpers;
|
||||
import org.xml.sax.Parser;
|
||||
import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Factory for creating an XML reader.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This class contains static methods for creating an XML reader
|
||||
* from an explicit class name, or for creating an XML reader based
|
||||
* on the value of the <code>org.xml.sax.driver</code> system
|
||||
* property:</p>
|
||||
*
|
||||
* <pre>
|
||||
* try {
|
||||
* XMLReader myReader = XMLReaderFactory.createXMLReader();
|
||||
* } catch (SAXException e) {
|
||||
* System.err.println(e.getMessage());
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* <p>Note that these methods will not be usable in environments where
|
||||
* system properties are not accessible or where the application or
|
||||
* applet is not permitted to load classes dynamically.</p>
|
||||
*
|
||||
* <p><strong>Note to implementors:</strong> SAX implementations in specialized
|
||||
* environments may replace this class with a different one optimized for the
|
||||
* environment, as long as its method signatures remain the same.</p>
|
||||
*
|
||||
* @since SAX 2.0
|
||||
* @author David Megginson,
|
||||
* <a href="mailto:sax@megginson.com">sax@megginson.com</a>
|
||||
* @version 2.0
|
||||
* @see org.xml.sax.XMLReader
|
||||
*/
|
||||
final public class XMLReaderFactory
|
||||
{
|
||||
|
||||
/**
|
||||
* Private constructor.
|
||||
*
|
||||
* <p>This constructor prevents the class from being instantiated.</p>
|
||||
*/
|
||||
private XMLReaderFactory ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Attempt to create an XML reader from a system property.
|
||||
*
|
||||
* <p>This method uses the value of the system property
|
||||
* "org.xml.sax.driver" as the full name of a Java class
|
||||
* and tries to instantiate that class as a SAX2
|
||||
* XMLReader.</p>
|
||||
*
|
||||
* <p>Note that many Java interpreters allow system properties
|
||||
* to be specified on the command line.</p>
|
||||
*
|
||||
* @return A new XMLReader.
|
||||
* @exception org.xml.sax.SAXException If the value of the
|
||||
* "org.xml.sax.driver" system property is null,
|
||||
* or if the class cannot be loaded and instantiated.
|
||||
* @see #createXMLReader(java.lang.String)
|
||||
*/
|
||||
public static XMLReader createXMLReader ()
|
||||
throws SAXException
|
||||
{
|
||||
String className = System.getProperty("org.xml.sax.driver");
|
||||
if (className == null) {
|
||||
Parser parser;
|
||||
try {
|
||||
parser = ParserFactory.makeParser();
|
||||
} catch (Exception e) {
|
||||
parser = null;
|
||||
}
|
||||
if (parser == null) {
|
||||
throw new
|
||||
SAXException("System property org.xml.sax.driver not specified");
|
||||
} else {
|
||||
return new ParserAdapter(parser);
|
||||
}
|
||||
} else {
|
||||
return createXMLReader(className);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Attempt to create an XML reader from a class name.
|
||||
*
|
||||
* <p>Given a class name, this method attempts to load
|
||||
* and instantiate the class as an XML reader.</p>
|
||||
*
|
||||
* @return A new XML reader.
|
||||
* @exception org.xml.sax.SAXException If the class cannot be
|
||||
* loaded, instantiated, and cast to XMLReader.
|
||||
* @see #createXMLReader()
|
||||
*/
|
||||
public static XMLReader createXMLReader (String className)
|
||||
throws SAXException
|
||||
{
|
||||
try {
|
||||
return (XMLReader)(Class.forName(className).newInstance());
|
||||
} catch (ClassNotFoundException e1) {
|
||||
throw new SAXException("SAX2 driver class " + className +
|
||||
" not found", e1);
|
||||
} catch (IllegalAccessException e2) {
|
||||
throw new SAXException("SAX2 driver class " + className +
|
||||
" found but cannot be loaded", e2);
|
||||
} catch (InstantiationException e3) {
|
||||
throw new SAXException("SAX2 driver class " + className +
|
||||
" loaded but cannot be instantiated (no empty public constructor?)",
|
||||
e3);
|
||||
} catch (ClassCastException e4) {
|
||||
throw new SAXException("SAX2 driver class " + className +
|
||||
" does not implement XMLReader", e4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of XMLReaderFactory.java
|
Loading…
x
Reference in New Issue
Block a user