neeraj      2003/07/30 03:54:45

  Added:       java/src/org/w3c/dom/ls DOMInput.java DOMOutput.java
                        DOMParser.java DOMParserFilter.java
                        DOMResourceResolver.java DOMSerializer.java
                        DOMSerializerFilter.java
  Removed:     java/src/org/w3c/dom/ls DOMBuilder.java
                        DOMBuilderFilter.java DOMEntityResolver.java
                        DOMInputSource.java DOMWriter.java
                        DOMWriterFilter.java
  Log:
  Applying patches to upgrade to latest DOM L3 LS draft. Thanks Gopal.
  
  Revision  Changes    Path
  1.1                  xml-xerces/java/src/org/w3c/dom/ls/DOMInput.java
  
  Index: DOMInput.java
  ===================================================================
  /*
   * Copyright (c) 2003 World Wide Web Consortium,
   *
   * (Massachusetts Institute of Technology, European Research Consortium for
   * Informatics and Mathematics, Keio University). All Rights Reserved. This
   * work is distributed under the W3C(r) Software License [1] 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.
   *
   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
   */
  
  package org.w3c.dom.ls;
  
  /**
   *  This interface represents an input source for data. 
   * <p> This interface allows an 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), a base URI, and/or a character stream. 
   * <p> The exact definitions of a byte stream and a character stream are 
   * binding dependent. 
   * <p> The application is expected to provide objects that implement this 
   * interface whenever such objects are needed. The application can either 
   * provide its own objects that implement this interface, or it can use the 
   * generic factory method <code>DOMImplementationLS.createDOMInput()</code> 
   * to create objects that implement this interface. 
   * <p> The <code>DOMParser</code> will use the <code>DOMInput</code> object to 
   * determine how to read data. The <code>DOMParser</code> will look at the 
   * different inputs specified in the <code>DOMInput</code> in the following 
   * order to know which one to read from, the first one through which data is 
   * available will be used: 
   * <ol>
   * <li> <code>DOMInput.characterStream</code> 
   * </li>
   * <li> 
   * <code>DOMInput.byteStream</code> 
   * </li>
   * <li> <code>DOMInput.stringData</code> 
   * </li>
   * <li> 
   * <code>DOMInput.systemId</code> 
   * </li>
   * <li> <code>DOMInput.publicId</code> 
   * </li>
   * </ol> 
   * <p> <code>DOMInput</code> objects belong to the application. The DOM 
   * implementation will never modify them (though it may make copies and 
   * modify the copies, if necessary). 
   * <p>See also the <a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619'>Document Object Model 
(DOM) Level 3 Load
  and Save Specification</a>.
   */
  public interface DOMInput {
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a stream of 16-bit units. The application must encode the stream 
       * using UTF-16 (defined in [Unicode] and Amendment 1 of [ISO/IEC 10646]). 
       */
      public java.io.Reader getCharacterStream();
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a stream of 16-bit units. The application must encode the stream 
       * using UTF-16 (defined in [Unicode] and Amendment 1 of [ISO/IEC 10646]). 
       */
      public void setCharacterStream(java.io.Reader characterStream);
  
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a stream of bytes. 
       * <br> If the application knows the character encoding of the byte 
       * stream, it should set the encoding attribute. Setting the encoding in 
       * this way will override any encoding specified in an XML declaration 
       * in the data. 
       */
      public java.io.InputStream getByteStream();
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a stream of bytes. 
       * <br> If the application knows the character encoding of the byte 
       * stream, it should set the encoding attribute. Setting the encoding in 
       * this way will override any encoding specified in an XML declaration 
       * in the data. 
       */
      public void setByteStream(java.io.InputStream byteStream);
  
      /**
       *  String data to parse. If provided, this will always be treated as a 
       * sequence of 16-bit units (UTF-16 encoded characters). 
       */
      public String getStringData();
      /**
       *  String data to parse. If provided, this will always be treated as a 
       * sequence of 16-bit units (UTF-16 encoded characters). 
       */
      public void setStringData(String stringData);
  
      /**
       *  The system identifier, a URI reference [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>], for this 
       * input source. The system identifier is optional if there is a byte 
       * stream, a character stream, or string data, but it is still useful to 
       * provide one, since the application will use it to resolve any 
       * relative URI's and can include it in error messages and warnings (the 
       * <code>DOMParser</code> will only attempt to fetch the resource 
       * identified by the URI reference only if there is no other input 
       * available in the input source). 
       * <br> If the application knows the character encoding of the object 
       * pointed to by the system identifier, it can set the encoding using 
       * the <code>encoding</code> attribute. 
       * <br> If the system ID is a relative URI reference (see section 5 in [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]), the DOM 
       * implementation will attempt to resolve the relative URI with the 
       * <code>baseURI</code> as the base, if that fails, the behavior is 
       * implementation dependent. 
       */
      public String getSystemId();
      /**
       *  The system identifier, a URI reference [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>], for this 
       * input source. The system identifier is optional if there is a byte 
       * stream, a character stream, or string data, but it is still useful to 
       * provide one, since the application will use it to resolve any 
       * relative URI's and can include it in error messages and warnings (the 
       * <code>DOMParser</code> will only attempt to fetch the resource 
       * identified by the URI reference only if there is no other input 
       * available in the input source). 
       * <br> If the application knows the character encoding of the object 
       * pointed to by the system identifier, it can set the encoding using 
       * the <code>encoding</code> attribute. 
       * <br> If the system ID is a relative URI reference (see section 5 in [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]), the DOM 
       * implementation will attempt to resolve the relative URI with the 
       * <code>baseURI</code> as the base, if that fails, the behavior is 
       * implementation dependent. 
       */
      public void setSystemId(String systemId);
  
      /**
       *  The character encoding, if known. The encoding must be a string 
       * acceptable for an XML encoding declaration ([<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>] section 
       * 4.3.3 "Character Encoding in Entities"). 
       * <br> This attribute has no effect when the application provides a 
       * character stream or string data. For other sources of input, an 
       * encoding specified by means of this attribute will override any 
       * encoding specified in the XML declaration or the Text declaration, or 
       * an encoding obtained from a higher level protocol, such as HTTP [<a 
href='http://www.ietf.org/rfc/rfc2616.txt'>IETF RFC 2616</a>]. 
       */
      public String getEncoding();
      /**
       *  The character encoding, if known. The encoding must be a string 
       * acceptable for an XML encoding declaration ([<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>] section 
       * 4.3.3 "Character Encoding in Entities"). 
       * <br> This attribute has no effect when the application provides a 
       * character stream or string data. For other sources of input, an 
       * encoding specified by means of this attribute will override any 
       * encoding specified in the XML declaration or the Text declaration, or 
       * an encoding obtained from a higher level protocol, such as HTTP [<a 
href='http://www.ietf.org/rfc/rfc2616.txt'>IETF RFC 2616</a>]. 
       */
      public void setEncoding(String encoding);
  
      /**
       *  The public identifier for this input source. This may be mapped to an 
       * input source using an implementation dependent mechanism (such as 
       * catalogues or other mappings). The public identifier, if specified, 
       * may also be reported as part of the location information when errors 
       * are reported. 
       */
      public String getPublicId();
      /**
       *  The public identifier for this input source. This may be mapped to an 
       * input source using an implementation dependent mechanism (such as 
       * catalogues or other mappings). The public identifier, if specified, 
       * may also be reported as part of the location information when errors 
       * are reported. 
       */
      public void setPublicId(String publicId);
  
      /**
       *  The base URI to be used (see section 5.1.4 in [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]) for 
       * resolving a relative <code>systemId</code> to an absolute URI. 
       * <br> If, when used, the base URI is itself a relative URI, an empty 
       * string, or null, the behavior is implementation dependent. 
       */
      public String getBaseURI();
      /**
       *  The base URI to be used (see section 5.1.4 in [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]) for 
       * resolving a relative <code>systemId</code> to an absolute URI. 
       * <br> If, when used, the base URI is itself a relative URI, an empty 
       * string, or null, the behavior is implementation dependent. 
       */
      public void setBaseURI(String baseURI);
  
      /**
       *  If set to true, assume that the input is certified (see section 2.13 
       * in [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>]) when 
       * parsing [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>]. 
       */
      public boolean getCertified();
      /**
       *  If set to true, assume that the input is certified (see section 2.13 
       * in [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>]) when 
       * parsing [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>]. 
       */
      public void setCertified(boolean certified);
  
  }
  
  
  
  1.1                  xml-xerces/java/src/org/w3c/dom/ls/DOMOutput.java
  
  Index: DOMOutput.java
  ===================================================================
  /*
   * Copyright (c) 2003 World Wide Web Consortium,
   *
   * (Massachusetts Institute of Technology, European Research Consortium for
   * Informatics and Mathematics, Keio University). All Rights Reserved. This
   * work is distributed under the W3C(r) Software License [1] 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.
   *
   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
   */
  
  package org.w3c.dom.ls;
  
  /**
   *  This interface represents an output destination for data. 
   * <p> This interface allows an application to encapsulate information about 
   * an output destination in a single object, which may include a URI, a byte 
   * stream (possibly with a specified encoding), a base URI, and/or a 
   * character stream. 
   * <p> The exact definitions of a byte stream and a character stream are 
   * binding dependent. 
   * <p> The application is expected to provide objects that implement this 
   * interface whenever such objects are needed. The application can either 
   * provide its own objects that implement this interface, or it can use the 
   * generic factory method <code>DOMImplementationLS.createDOMOutput()</code> 
   * to create objects that implement this interface. 
   * <p> The <code>DOMSerializer</code> will use the <code>DOMOutput</code> 
   * object to determine where to serialize the output to. The 
   * <code>DOMSerializer</code> will look at the different outputs specified 
   * in the <code>DOMOutput</code> in the following order to know which one to 
   * output to, the first one that data can be output to will be used: 
   * <ol>
   * <li> 
   * <code>DOMOutput.characterStream</code> 
   * </li>
   * <li> <code>DOMOutput.byteStream</code> 
   * </li>
   * <li>
   *  <code>DOMOutput.systemId</code> 
   * </li>
   * </ol> 
   * <p> <code>DOMOutput</code> objects belong to the application. The DOM 
   * implementation will never modify them (though it may make copies and 
   * modify the copies, if necessary). 
   * <p>See also the <a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619'>Document Object Model 
(DOM) Level 3 Load
  and Save Specification</a>.
   */
  public interface DOMOutput {
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a writable stream to which 16-bit units can be output. The 
       * application must encode the stream using UTF-16 (defined in [Unicode] and 
Amendment 1 of [ISO/IEC 10646]). 
       */
      public java.io.Writer getCharacterStream();
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a writable stream to which 16-bit units can be output. The 
       * application must encode the stream using UTF-16 (defined in [Unicode] and 
Amendment 1 of [ISO/IEC 10646]). 
       */
      public void setCharacterStream(java.io.Writer characterStream);
  
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a writable stream of bytes. 
       * <br> If the application knows the character encoding of the byte 
       * stream, it should set the encoding attribute. Setting the encoding in 
       * this way will override any encoding specified in an XML declaration 
       * in the data. 
       */
      public java.io.OutputStream getByteStream();
      /**
       *  An attribute of a language and binding dependent type that represents 
       * a writable stream of bytes. 
       * <br> If the application knows the character encoding of the byte 
       * stream, it should set the encoding attribute. Setting the encoding in 
       * this way will override any encoding specified in an XML declaration 
       * in the data. 
       */
      public void setByteStream(java.io.OutputStream byteStream);
  
      /**
       *  The system identifier, a URI reference [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>], for this 
       * output destination. 
       * <br> If the application knows the character encoding of the object 
       * pointed to by the system identifier, it can set the encoding using 
       * the <code>encoding</code> attribute. 
       * <br> If the system ID is a relative URI reference (see section 5 in [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]), the 
       * behavior is implementation dependent. 
       */
      public String getSystemId();
      /**
       *  The system identifier, a URI reference [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>], for this 
       * output destination. 
       * <br> If the application knows the character encoding of the object 
       * pointed to by the system identifier, it can set the encoding using 
       * the <code>encoding</code> attribute. 
       * <br> If the system ID is a relative URI reference (see section 5 in [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]), the 
       * behavior is implementation dependent. 
       */
      public void setSystemId(String systemId);
  
      /**
       *  The character encoding, if known. The encoding must be a string 
       * acceptable for an XML encoding declaration ([<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>] section 
       * 4.3.3 "Character Encoding in Entities"). 
       * <br> This attribute has no effect when the application provides a 
       * character stream or string data. For other sources of input, an 
       * encoding specified by means of this attribute will override any 
       * encoding specified in the XML declaration or the Text declaration, or 
       * an encoding obtained from a higher level protocol, such as HTTP [<a 
href='http://www.ietf.org/rfc/rfc2616.txt'>IETF RFC 2616</a>]. 
       */
      public String getEncoding();
      /**
       *  The character encoding, if known. The encoding must be a string 
       * acceptable for an XML encoding declaration ([<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>] section 
       * 4.3.3 "Character Encoding in Entities"). 
       * <br> This attribute has no effect when the application provides a 
       * character stream or string data. For other sources of input, an 
       * encoding specified by means of this attribute will override any 
       * encoding specified in the XML declaration or the Text declaration, or 
       * an encoding obtained from a higher level protocol, such as HTTP [<a 
href='http://www.ietf.org/rfc/rfc2616.txt'>IETF RFC 2616</a>]. 
       */
      public void setEncoding(String encoding);
  
  }
  
  
  
  1.1                  xml-xerces/java/src/org/w3c/dom/ls/DOMParser.java
  
  Index: DOMParser.java
  ===================================================================
  /*
   * Copyright (c) 2003 World Wide Web Consortium,
   *
   * (Massachusetts Institute of Technology, European Research Consortium for
   * Informatics and Mathematics, Keio University). All Rights Reserved. This
   * work is distributed under the W3C(r) Software License [1] 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.
   *
   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
   */
  
  package org.w3c.dom.ls;
  
  import org.w3c.dom.Document;
  import org.w3c.dom.DOMConfiguration;
  import org.w3c.dom.Node;
  import org.w3c.dom.DOMException;
  
  /**
   *  An interface to an object that is able to build, or augment, a DOM tree 
   * from various input sources. 
   * <p> <code>DOMParser</code> provides an API for parsing XML and building the 
   * corresponding DOM document structure. A <code>DOMParser</code> instance 
   * can be obtained by invoking the 
   * <code>DOMImplementationLS.createDOMParser()</code> method. 
   * <p> As specified in [<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609'>DOM Level 3 Core</a>]
   * , when a document is first made available via the DOMParser: 
   * <ul>
   * <li> there is 
   * only one <code>Text</code> node for each block of text. The 
   * <code>Text</code> nodes are in "normal" form: only structure (e.g. 
   * elements, comments, processing instructions, CDATA sections, and entity 
   * references) separates <code>Text</code> nodes, i.e., there are neither 
   * adjacent nor empty <code>Text</code> nodes. 
   * </li>
   * <li> it is expected that the 
   * <code>value</code> and <code>nodeValue</code> attributes of an 
   * <code>Attr</code> node initially return the <a 
href='http://www.w3.org/TR/2000/REC-xml-20001006#AVNormalize'>XML 1.0 
   * normalized value</a>. However, if the parameters "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-validate-if-schema'>
   * validate-if-schema</a>" and "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-datatype-normalization'>
   * datatype-normalization</a>" are set to <code>true</code>, depending on the 
attribute normalization 
   * used, the attribute values may differ from the ones obtained by the XML 
   * 1.0 attribute normalization. If the parameters 
   * <code>data-type-normalization</code> is set to <code>false</code>, the 
   * XML 1.0 attribute normalization is guaranteed to occur, and if the 
   * attributes list does not contain namespace declarations, the 
   * <code>attributes</code> attribute on <code>Element</code> node represents 
   * the property <b>[attributes]</b> defined in [<a 
href='http://www.w3.org/TR/2001/REC-xml-infoset-20011024/'>XML Information set</a>]
   * . 
   * </li>
   * </ul>
   * <p> Asynchronous <code>DOMParser</code> objects are expected to also 
   * implement the <code>events::EventTarget</code> interface so that event 
   * listeners can be registered on asynchronous <code>DOMParser</code> 
   * objects. 
   * <p> Events supported by asynchronous <code>DOMParser</code> objects are: 
   * <dl>
   * <dt>
   * load</dt>
   * <dd> The <code>DOMParser</code> finishes to load the document. See also 
   * the definition of the <code>LSLoadEvent</code> interface. </dd>
   * <dt>progress</dt>
   * <dd> The 
   * <code>DOMParser</code> signals a progress as a document is parsed. See 
   * also the definition of the <code>LSProgressEvent</code> interface. </dd>
   * </dl>
   * <p ><b>Note:</b>  All events defined in this specification use the 
   * namespace URI <code>"http://www.w3.org/2002/DOMLS";</code>. 
   * <p> While parsing an input source, errors are reported to the application 
   * through the error handler (<code>DOMParser.config</code>'s "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-error-handler'>
   * error-handler</a>" parameter). This specification does in no way try to define 
all possible 
   * errors that can occur while parsing XML, or any other markup, but some 
   * common error cases are defined. The types (<code>DOMError.type</code>) of 
   * errors and warnings defined by this specification are: 
   * <dl>
   * <dt>
   * <code>"unsupported-media-type" [fatal]</code></dt>
   * <dd> Raised if the configuration 
   * parameter "supported-media-types-only" is set to <code>true</code> and an 
   * unsupported media type is encountered. </dd>
   * <dt>
   * <code>"unsupported-encoding" [fatal]</code></dt>
   * <dd> Raised if an unsupported 
   * encoding is encountered. </dd>
   * <dt><code>"doctype-not-allowed" [fatal]</code></dt>
   * <dd> 
   * Raised if the configuration parameter "disallow-doctype" is set to 
   * <code>true</code> and a doctype is encountered. </dd>
   * <dt>
   * <code>"unknown-character-denormalization" [fatal]</code></dt>
   * <dd> Raised if the 
   * configuration parameter "ignore-unknown-character-denormalizations" is 
   * set to <code>false</code> and a character is encountered for which the 
   * processor cannot determine the normalization properties. </dd>
   * <dt>
   * <code>"unbound-namespace-in-entity" [warning]</code></dt>
   * <dd> Raised if the 
   * configuration parameter "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-entities'>
   * entities</a>" is set to <code>true</code> and an unbound namespace prefix is 
   * encounterd in an entity declaration. </dd>
   * <dt>
   * <code>"pi-base-uri-not-preserved" [warning]</code></dt>
   * <dd> Raised if a processing 
   * instruction is encoutered in a location where the base URI of the 
   * processing instruction can not be preserved.  One example of a case where 
   * this warning will be raised is if the configuration parameter "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-entities'>
   * entities</a>" is set to <code>false</code> and the following XML file is parsed: 
   * <pre>
   * &lt;!DOCTYPE root [ &lt;!ENTITY e SYSTEM 'subdir/myentity.ent' ]&gt; 
   * &lt;root&gt; &amp;e; &lt;/root&gt;</pre>
   *  And <code>subdir/myentity.ent</code> 
   * looks like this: 
   * <pre>&lt;one&gt; &lt;two/&gt; &lt;/one&gt; &lt;?pi 
   * 3.14159?&gt; &lt;more/&gt;</pre>
   * </dd>
   * </dl> 
   * <p> In addition to raising the defined errors and warnings, implementations 
   * are expected to raise implementation specific errors and warnings for any 
   * other error and warning cases such as IO errors (file not found, 
   * permission denied,...), XML well-formedness errors, and so on. 
   * <p>See also the <a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619'>Document Object Model 
(DOM) Level 3 Load
  and Save Specification</a>.
   */
  public interface DOMParser {
      /**
       *  The <code>DOMConfiguration</code> object used when parsing an input 
       * source. This <code>DOMConfiguration</code> is specific to the parse 
       * operation and no parameter values from this 
       * <code>DOMConfiguration</code> object are passed automatically to the 
       * <code>DOMConfiguration</code> object on the <code>Document</code> 
       * that is created, or used, by the parse operation. The DOM application 
       * is responsible for passing any needed parameter values from this 
       * <code>DOMConfiguration</code> object to the 
       * <code>DOMConfiguration</code> object referenced by the 
       * <code>Document</code> object. 
       * <br> In addition to the parameters recognized in [<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609'>DOM Level 3 Core</a>]
       * , the <code>DOMConfiguration</code> objects for <code>DOMParser</code>
       *  adds or modifies the following parameters: 
       * <dl>
       * <dt>
       * <code>"charset-overrides-xml-encoding"</code></dt>
       * <dd>
       * <dl>
       * <dt><code>true</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) If a higher level protocol such as 
HTTP [<a href='http://www.ietf.org/rfc/rfc2616.txt'>IETF RFC 2616</a>] provides an 
       * indication of the character encoding of the input stream being 
       * processed, that will override any encoding specified in the XML 
       * declaration or the Text declaration (see also section 4.3.3, 
       * "Character Encoding in Entities", in [<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>]). 
       * Explicitly setting an encoding in the <code>DOMInput</code> overrides 
       * any encoding from the protocol. </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>required</em>] The parser ignores any character set encoding 
information from 
       * higher-level protocols. </dd>
       * </dl></dd>
       * <dt><code>"disallow-doctype"</code></dt>
       * <dd>
       * <dl>
       * <dt>
       * <code>true</code></dt>
       * <dd>[<em>optional</em>] Throw a fatal <b>"doctype-not-allowed"</b> error if a 
doctype node is found while parsing the document. This is 
       * useful when dealing with things like SOAP envelopes where doctype 
       * nodes are not allowed. </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) Allow doctype nodes in the 
document. </dd>
       * </dl></dd>
       * <dt>
       * <code>"ignore-unknown-character-denormalizations"</code></dt>
       * <dd>
       * <dl>
       * <dt>
       * <code>true</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) If, while verifying full 
normalization when [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 
1.1</a>] is 
       * supported, a processor encounters characters for which it cannot 
       * determine the normalization properties, then the processor will 
       * ignore any possible denormalizations caused by these characters.  
       * This parameter is ignored for [<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>]. </dd>
       * <dt>
       * <code>false</code></dt>
       * <dd>[<em>optional</em>] Report an fatal 
<b>"unknown-character-denormalization"</b> error if a character is encountered for 
which the processor cannot 
       * determine the normalization properties. </dd>
       * </dl></dd>
       * <dt><code>"infoset"</code></dt>
       * <dd> See 
       * the definition of <code>DOMConfiguration</code> for a description of 
       * this parameter. Unlike in [<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609'>DOM Level 3 Core</a>]
       * , this parameter will default to <code>true</code> for 
       * <code>DOMParser</code>. </dd>
       * <dt><code>"namespaces"</code></dt>
       * <dd>
       * <dl>
       * <dt><code>true</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) Perform the namespace processing 
as defined in [<a href='http://www.w3.org/TR/1999/REC-xml-names-19990114/'>XML 
Namespaces</a>]
       * . </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>optional</em>] Do not perform the namespace processing. </dd>
       * </dl></dd>
       * <dt>
       * <code>"supported-media-types-only"</code></dt>
       * <dd>
       * <dl>
       * <dt><code>true</code></dt>
       * <dd>[<em>optional</em>] Check that the media type of the parsed resource is a 
supported media 
       * type. If an unsupported media type is encountered, a fatal error of 
       * type <b>"unsupported-media-type"</b> will be raised. The media types defined 
in [<a href='http://www.ietf.org/rfc/rfc3023.txt'>IETF RFC 3023</a>] must always 
       * be accepted. </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) Accept any media type. </dd>
       * </dl></dd>
       * </dl>
       * <br> The parameter "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-well-formed'>
       * well-formed</a>" cannot be set to <code>false</code>. 
       */
      public DOMConfiguration getConfig();
  
      /**
       *  When a filter is provided, the implementation will call out to the 
       * filter as it is constructing the DOM tree structure. The filter can 
       * choose to remove elements from the document being constructed, or to 
       * terminate the parsing early. 
       * <br> The filter is invoked after the operations requested by the 
       * <code>DOMConfiguration</code> parameters have been applied. For 
       * example, if "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-validate'>
       * validate</a>" is set to <code>true</code>, the validation is done before 
invoking the 
       * filter. 
       */
      public DOMParserFilter getFilter();
      /**
       *  When a filter is provided, the implementation will call out to the 
       * filter as it is constructing the DOM tree structure. The filter can 
       * choose to remove elements from the document being constructed, or to 
       * terminate the parsing early. 
       * <br> The filter is invoked after the operations requested by the 
       * <code>DOMConfiguration</code> parameters have been applied. For 
       * example, if "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-validate'>
       * validate</a>" is set to <code>true</code>, the validation is done before 
invoking the 
       * filter. 
       */
      public void setFilter(DOMParserFilter filter);
  
      /**
       *  <code>true</code> if the <code>DOMParser</code> is asynchronous, 
       * <code>false</code> if it is synchronous. 
       */
      public boolean getAsync();
  
      /**
       *  <code>true</code> if the <code>DOMParser</code> is currently busy 
       * loading a document, otherwise <code>false</code>. 
       */
      public boolean getBusy();
  
      /**
       * Parse an XML document from a resource identified by a 
       * <code>DOMInput</code>.
       * @param is  The <code>DOMInput</code> from which the source of the 
       *   document is to be read. 
       * @return  If the <code>DOMParser</code> is a synchronous 
       *   <code>DOMParser</code>, the newly created and populated 
       *   <code>Document</code> is returned. If the <code>DOMParser</code> is 
       *   asynchronous, <code>null</code> is returned since the document 
       *   object may not yet be constructed when this method returns. 
       * @exception DOMException
       *    INVALID_STATE_ERR: Raised if the <code>DOMParser</code>'s 
       *   <code>DOMParser.busy</code> attribute is <code>true</code>. 
       */
      public Document parse(DOMInput is)
                            throws DOMException;
  
      /**
       *  Parse an XML document from a location identified by a URI reference [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]. If the URI 
       * contains a fragment identifier (see section 4.1 in [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]), the 
       * behavior is not defined by this specification, future versions of 
       * this specification may define the behavior. 
       * @param uri The location of the XML document to be read.
       * @return  If the <code>DOMParser</code> is a synchronous 
       *   <code>DOMParser</code>, the newly created and populated 
       *   <code>Document</code> is returned. If the <code>DOMParser</code> is 
       *   asynchronous, <code>null</code> is returned since the document 
       *   object may not yet be constructed when this method returns. 
       * @exception DOMException
       *    INVALID_STATE_ERR: Raised if the <code>DOMParser.busy</code> 
       *   attribute is <code>true</code>. 
       */
      public Document parseURI(String uri)
                               throws DOMException;
  
      // ACTION_TYPES
      /**
       *  Append the result of the parse operation as children of the context 
       * node. For this action to work, the context node must be an 
       * <code>Element</code> or a <code>DocumentFragment</code>. 
       */
      public static final short ACTION_APPEND_AS_CHILDREN = 1;
      /**
       *  Replace all the children of the context node with the result of the 
       * parse operation. For this action to work, the context node must be an 
       * <code>Element</code>, a <code>Document</code>, or a 
       * <code>DocumentFragment</code>. 
       */
      public static final short ACTION_REPLACE_CHILDREN   = 2;
      /**
       *  Insert the result of the parse operation as the immediately preceding 
       * sibling of the context node. For this action to work the context 
       * node's parent must be an <code>Element</code> or a 
       * <code>DocumentFragment</code>. 
       */
      public static final short ACTION_INSERT_BEFORE      = 3;
      /**
       *  Insert the result of the parse operation as the immediately following 
       * sibling of the context node. For this action to work the context 
       * node's parent must be an <code>Element</code> or a 
       * <code>DocumentFragment</code>. 
       */
      public static final short ACTION_INSERT_AFTER       = 4;
      /**
       *  Replace the context node with the result of the parse operation. For 
       * this action to work, the context node must have a parent, and the 
       * parent must be an <code>Element</code> or a 
       * <code>DocumentFragment</code>. 
       */
      public static final short ACTION_REPLACE            = 5;
  
      /**
       *  Parse an XML fragment from a resource identified by a 
       * <code>DOMInput</code> and insert the content into an existing 
       * document at the position specified with the <code>context</code> and 
       * <code>action</code> arguments. When parsing the input stream, the 
       * context node is used for resolving unbound namespace prefixes. The 
       * context node's <code>ownerDocument</code> node (or the node itself if 
       * the node of type <code>DOCUMENT_NODE</code>) is used to resolve 
       * default attributes and entity references. 
       * <br> As the new data is inserted into the document, at least one 
       * mutation event is fired per new immediate child or sibling of the 
       * context node. 
       * <br> If the context node is a <code>Document</code> node and the action 
       * is <code>ACTION_REPLACE_CHILDREN</code>, then the document that is 
       * passed as the context node will be changed such that it's 
       * <code>xmlEncoding</code>, <code>documentURI</code>, 
       * <code>xmlVersion</code>, <code>actualEncoding</code>, 
       * <code>xmlStandalone</code>, and all other such attributes are set to 
       * what they would be set to if the input source was parsed using 
       * <code>DOMParser.parse()</code>. 
       * <br> If the <code>DOMParser</code> is asynchronous then the insertion 
       * of the resulting DOM structure is atomic, e.g. the whole structure is 
       * inserted only once the whole input stream is completely parsed 
       * without errors. 
       * <br> If an error occurs while parsing, the caller is notified through 
       * the <code>ErrorHandler</code> instance associated with the "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-error-handler'>
       * error-handler</a>" parameter of the <code>DOMConfiguration</code>. 
       * <br> When calling <code>parseWithContext</code>, the values of the 
       * following configuration parameters will be ignored and their default 
       * values will always be used instead: "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-validate'>
       * validate</a>", "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-validate-if-schema'>
       * validate-if-schema</a>", and "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-whitespace-in-element-content'>
       * whitespace-in-element-content</a>". 
       * @param input  The <code>DOMInput</code> from which the source document 
       *   is to be read. The source document must be an XML fragment, i.e. 
       *   anything except a complete XML document (except in the case where 
       *   the context node of type <code>DOCUMENT_NODE</code>, and the action 
       *   is <code>ACTION_REPLACE_CHILDREN</code>), a DOCTYPE (internal 
       *   subset), entity declaration(s), notation declaration(s), or XML or 
       *   text declaration(s). 
       * @param context  The node that is used as the context for the data that 
       *   is being parsed. This node must be a <code>Document</code> node, a 
       *   <code>DocumentFragment</code> node, or a node of a type that is 
       *   allowed as a child of an <code>Element</code> node, e.g. it cannot 
       *   be an <code>Attribute</code> node. 
       * @param action  This parameter describes which action should be taken 
       *   between the new set of nodes being inserted and the existing 
       *   children of the context node. The set of possible actions is 
       *   defined in <code>ACTION_TYPES</code> above. 
       * @return  Return the node that is the result of the parse operation. If 
       *   the result is more than one top-level node, the first one is 
       *   returned. 
       * @exception DOMException
       *    NOT_SUPPORTED_ERR: Raised if the <code>DOMParser</code> doesn't 
       *   support this method. 
       *   <br> NO_MODIFICATION_ALLOWED_ERR: Raised if the context node is a 
       *   read only node.
       *   <br> INVALID_STATE_ERR: Raised if the <code>DOMParser.busy</code> 
       *   attribute is <code>true</code>. 
       */
      public Node parseWithContext(DOMInput input, 
                                   Node context, 
                                   short action)
                                   throws DOMException;
  
      /**
       *  Abort the loading of the document that is currently being loaded by 
       * the <code>DOMParser</code>. If the <code>DOMParser</code> is 
       * currently not busy, a call to this method does nothing. 
       */
      public void abort();
  
  }
  
  
  
  1.1                  xml-xerces/java/src/org/w3c/dom/ls/DOMParserFilter.java
  
  Index: DOMParserFilter.java
  ===================================================================
  /*
   * Copyright (c) 2003 World Wide Web Consortium,
   *
   * (Massachusetts Institute of Technology, European Research Consortium for
   * Informatics and Mathematics, Keio University). All Rights Reserved. This
   * work is distributed under the W3C(r) Software License [1] 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.
   *
   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
   */
  
  package org.w3c.dom.ls;
  
  import org.w3c.dom.Node;
  import org.w3c.dom.Element;
  
  /**
   * <code>DOMParserFilter</code>s provide applications the ability to examine 
   * nodes as they are being constructed while parsing. As each node is 
   * examined, it may be modified or removed, or the entire parse may be 
   * terminated early. 
   * <p>At the time any of the filter methods are called by the parser, the 
   * owner Document and DOMImplementation objects exist and are accessible. 
   * The document element is never passed to the <code>DOMParserFilter</code> 
   * methods, i.e. it is not possible to filter out the document element. The 
   * <code>Document</code>, <code>DocumentType</code>, <code>Notation</code>, 
   * and <code>Entity</code> nodes are not passed to the 
   * <code>acceptNode</code> method on the filter.
   * <p>All validity checking while reading a document occurs on the source 
   * document as it appears on the input stream, not on the DOM document as it 
   * is built in memory. With filters, the document in memory may be a subset 
   * of the document on the stream, and its validity may have been affected by 
   * the filtering.
   * <p> All default content, including default attributes, must be passed to 
   * the filter methods. 
   * <p> The <code>DOMParser</code> ignores any exception raised in the filter. 
   * <p>See also the <a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619'>Document Object Model 
(DOM) Level 3 Load
  and Save Specification</a>.
   */
  public interface DOMParserFilter {
      // Constants returned by startElement and acceptNode
      /**
       * Accept the node.
       */
      public static final short FILTER_ACCEPT             = 1;
      /**
       * Reject the node and its children.
       */
      public static final short FILTER_REJECT             = 2;
      /**
       * Skip this single node. The children of this node will still be 
       * considered. 
       */
      public static final short FILTER_SKIP               = 3;
      /**
       *  Interrupt the normal processing of the document. 
       */
      public static final short FILTER_INTERRUPT          = 4;
  
      /**
       *  The parser will call this method after each <code>Element</code> start 
       * tag has been scanned, but before the remainder of the 
       * <code>Element</code> is processed. The intent is to allow the 
       * element, including any children, to be efficiently skipped. Note that 
       * only element nodes are passed to the <code>startElement</code> 
       * function. 
       * <br>The element node passed to <code>startElement</code> for filtering 
       * will include all of the Element's attributes, but none of the 
       * children nodes. The Element may not yet be in place in the document 
       * being constructed (it may not have a parent node.) 
       * <br>A <code>startElement</code> filter function may access or change 
       * the attributes for the Element. Changing Namespace declarations will 
       * have no effect on namespace resolution by the parser.
       * <br>For efficiency, the Element node passed to the filter may not be 
       * the same one as is actually placed in the tree if the node is 
       * accepted. And the actual node (node object identity) may be reused 
       * during the process of reading in and filtering a document.
       * @param element The newly encountered element. At the time this method 
       *   is called, the element is incomplete - it will have its attributes, 
       *   but no children. 
       * @return 
       * <ul>
       * <li> <code>FILTER_ACCEPT</code> if this <code>Element</code> 
       *   should be included in the DOM document being built. 
       * </li>
       * <li> 
       *   <code>FILTER_REJECT</code> if the <code>Element</code> and all of 
       *   its children should be rejected. This return value will be ignored 
       *   if <code>element</code> is the documentElement, the documentElement 
       *   cannot be rejected. 
       * </li>
       * <li> <code>FILTER_SKIP</code> if the 
       *   <code>Element</code> should be rejected. All of its children are 
       *   inserted in place of the rejected <code>Element</code> node. This 
       *   return value will be ignored if <code>element</code> is the 
       *   documentElement, the documentElement cannot be rejected nor 
       *   skipped. 
       * </li>
       * <li> <code>FILTER_INTERRUPT</code> if the filter wants to stop 
       *   the processing of the document. Interrupting the processing of the 
       *   document does no longer guarantee that the entire is XML well-formed
       *   . 
       * </li>
       * </ul> Returning any other values will result in unspecified behavior. 
       */
      public short startElement(Element element);
  
      /**
       * This method will be called by the parser at the completion of the 
       * parsing of each node. The node and all of its descendants will exist 
       * and be complete. The parent node will also exist, although it may be 
       * incomplete, i.e. it may have additional children that have not yet 
       * been parsed. Attribute nodes are never passed to this function.
       * <br>From within this method, the new node may be freely modified - 
       * children may be added or removed, text nodes modified, etc. The state 
       * of the rest of the document outside this node is not defined, and the 
       * affect of any attempt to navigate to, or to modify any other part of 
       * the document is undefined. 
       * <br>For validating parsers, the checks are made on the original 
       * document, before any modification by the filter. No validity checks 
       * are made on any document modifications made by the filter.
       * <br>If this new node is rejected, the parser might reuse the new node 
       * or any of its descendants.
       * @param node The newly constructed element. At the time this method is 
       *   called, the element is complete - it has all of its children (and 
       *   their children, recursively) and attributes, and is attached as a 
       *   child to its parent. 
       * @return 
       * <ul>
       * <li> <code>FILTER_ACCEPT</code> if this <code>Node</code> should 
       *   be included in the DOM document being built. 
       * </li>
       * <li> 
       *   <code>FILTER_REJECT</code> if the <code>Node</code> and all of its 
       *   children should be rejected. 
       * </li>
       * <li> <code>FILTER_SKIP</code> if the 
       *   <code>Node</code> should be skipped and the <code>Node</code> 
       *   should be replaced by all the children of the <code>Node</code>. 
       * </li>
       * <li> 
       *   <code>FILTER_INTERRUPT</code> if the filter wants to stop the 
       *   processing of the document. Interrupting the processing of the 
       *   document does no longer guarantee that the entire is XML well-formed
       *   . 
       * </li>
       * </ul>
       */
      public short acceptNode(Node node);
  
      /**
       *  Tells the <code>DOMParser</code> what types of nodes to show to the 
       * filter. See <code>NodeFilter</code> for definition of the constants. 
       * The constants <code>SHOW_ATTRIBUTE</code>, <code>SHOW_DOCUMENT</code>
       * , <code>SHOW_DOCUMENT_TYPE</code>, <code>SHOW_NOTATION</code>, 
       * <code>SHOW_ENTITY</code>, and <code>SHOW_DOCUMENT_FRAGMENT</code> are 
       * meaningless here, those nodes will never be passed to a 
       * <code>DOMParserFilter</code>. 
       * <br> The constants used here are defined in [<a 
href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>DOM Level 2 
Traversal and      Range</a>]
       * . 
       */
      public int getWhatToShow();
  
  }
  
  
  
  1.1                  xml-xerces/java/src/org/w3c/dom/ls/DOMResourceResolver.java
  
  Index: DOMResourceResolver.java
  ===================================================================
  /*
   * Copyright (c) 2003 World Wide Web Consortium,
   *
   * (Massachusetts Institute of Technology, European Research Consortium for
   * Informatics and Mathematics, Keio University). All Rights Reserved. This
   * work is distributed under the W3C(r) Software License [1] 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.
   *
   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
   */
  
  package org.w3c.dom.ls;
  
  /**
   *  <code>DOMResourceResolver</code> provides a way for applications to 
   * redirect references to external resources. 
   * <p> Applications needing to implement custom handling for external 
   * resources can implement this interface and register their implementation 
   * by setting the <code>resourceResolver</code> attribute of the 
   * <code>DOMParser</code>. 
   * <p> The <code>DOMParser</code> will then allow the application to intercept 
   * any external entities (including the external DTD subset and external 
   * parameter entities) before including them. 
   * <p> Many DOM applications will not need to implement this interface, but it 
   * will be especially useful for applications that build XML documents from 
   * databases or other specialized input sources, or for applications that 
   * use URN's. 
   * <p ><b>Note:</b>  <code>DOMResourceResolver</code> is based on the SAX2 [<a 
href='http://www.saxproject.org/'>SAX</a>] <code>EntityResolver</code> 
   * interface. 
   * <p>See also the <a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619'>Document Object Model 
(DOM) Level 3 Load
  and Save Specification</a>.
   */
  public interface DOMResourceResolver {
      /**
       *  Allow the application to resolve external resources. 
       * <br> The <code>DOMParser</code> will call this method before opening 
       * any external resource 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 <code>DOMParser</code> resolve the 
       * resource itself, that it use an alternative URI, or that it use an 
       * entirely different input source. 
       * <br> Application writers can use this method to redirect external 
       * system identifiers to secure and/or local URI's, 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). 
       * <br> If the system identifier is a URI, the <code>DOMParser</code> must 
       * resolve it fully before calling this method. 
       * @param publicId  The public identifier of the external entity being 
       *   referenced, or <code>null</code> if no public identifier was 
       *   supplied or if the resource is not an entity. 
       * @param systemId  The system identifier, a URI reference [<a 
href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>], of the 
       *   external resource being referenced. 
       * @param baseURI  The absolute base URI of the resource being parsed, or 
       *   <code>null</code> if there is no base URI. 
       * @return  A <code>DOMInput</code> object describing the new input 
       *   source, or <code>null</code> to request that the parser open a 
       *   regular URI connection to the system identifier. 
       */
      public DOMInput resolveResource(String publicId, 
                                      String systemId, 
                                      String baseURI);
  
  }
  
  
  
  1.1                  xml-xerces/java/src/org/w3c/dom/ls/DOMSerializer.java
  
  Index: DOMSerializer.java
  ===================================================================
  /*
   * Copyright (c) 2003 World Wide Web Consortium,
   *
   * (Massachusetts Institute of Technology, European Research Consortium for
   * Informatics and Mathematics, Keio University). All Rights Reserved. This
   * work is distributed under the W3C(r) Software License [1] 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.
   *
   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
   */
  
  package org.w3c.dom.ls;
  
  import org.w3c.dom.DOMConfiguration;
  import org.w3c.dom.Node;
  import org.w3c.dom.DOMException;
  
  /**
   *  <code>DOMSerializer</code> provides an API for serializing (writing) a DOM 
   * document out into XML. The XML data is written to a string or an output 
   * stream. 
   * <p> During serialization of XML data, namespace fixup is done as defined in [<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609'>DOM Level 3 Core</a>]
   * , Appendix B. [<a 
href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>DOM Level 2 Core</a>]
   *  allows empty strings as a real namespace URI. If the 
   * <code>namespaceURI</code> of a <code>Node</code> is empty string, the 
   * serialization will treat them as <code>null</code>, ignoring the prefix 
   * if any. 
   * <p> <code>DOMSerializer</code> accepts any node type for serialization. For 
   * nodes of type <code>Document</code> or <code>Entity</code>, well-formed 
   * XML will be created when possible (well-formedness is guaranteed if the 
   * document or entity comes from a parse operation and is unchanged since it 
   * was created). The serialized output for these node types is either as a 
   * XML document or an External XML Entity, respectively, and is acceptable 
   * input for an XML parser. For all other types of nodes the serialized form 
   * is not specified, but should be something useful to a human for debugging 
   * or diagnostic purposes. 
   * <p>Within a <code>Document</code>, <code>DocumentFragment</code>, or 
   * <code>Entity</code> being serialized, <code>Nodes</code> are processed as 
   * follows
   * <ul>
   * <li> <code>Document</code> nodes are written, including the XML 
   * declaration (unless the parameter "xml-declaration" is set to 
   * <code>false</code>) and a DTD subset, if one exists in the DOM. Writing a 
   * <code>Document</code> node serializes the entire document. 
   * </li>
   * <li> 
   * <code>Entity</code> nodes, when written directly by 
   * <code>DOMSerializer.write</code>, outputs the entity expansion but no 
   * namespace fixup is done. The resulting output will be valid as an 
   * external entity. 
   * </li>
   * <li> <code>EntityReference</code> nodes are serialized as an 
   * entity reference of the form "<code>&amp;entityName;</code>" in the 
   * output. Child nodes (the expansion) of the entity reference are ignored. 
   * </li>
   * <li> 
   * CDATA sections containing content characters that cannot be represented 
   * in the specified output encoding are handled according to the "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-split-cdata-sections'>
   * split-cdata-sections</a>" parameter.  If the parameter is set to 
<code>true</code>, CDATA sections 
   * are split, and the unrepresentable characters are serialized as numeric 
   * character references in ordinary content. The exact position and number 
   * of splits is not specified.  If the parameter is set to <code>false</code>
   * , unrepresentable characters in a CDATA section are reported as 
   * <code>"invalid-data-in-cdata-section"</code> errors. The error is not 
   * recoverable - there is no mechanism for supplying alternative characters 
   * and continuing with the serialization. 
   * </li>
   * <li> <code>DocumentFragment</code> 
   * nodes are serialized by serializing the children of the document fragment 
   * in the order they appear in the document fragment. 
   * </li>
   * <li> All other node types 
   * (Element, Text, etc.) are serialized to their corresponding XML source 
   * form. 
   * </li>
   * </ul>
   * <p ><b>Note:</b>  The serialization of a <code>Node</code> does not always 
   * generate a well-formed XML document, i.e. a <code>DOMParser</code> might 
   * throw fatal errors when parsing the resulting serialization. 
   * <p> Within the character data of a document (outside of markup), any 
   * characters that cannot be represented directly are replaced with 
   * character references. Occurrences of '&lt;' and '&amp;' are replaced by 
   * the predefined entities &amp;lt; and &amp;amp;. The other predefined 
   * entities (&amp;gt;, &amp;apos;, and &amp;quot;) might not be used, except 
   * where needed (e.g. using &amp;gt; in cases such as ']]&gt;'). Any 
   * characters that cannot be represented directly in the output character 
   * encoding are serialized as numeric character references. 
   * <p> To allow attribute values to contain both single and double quotes, the 
   * apostrophe or single-quote character (') may be represented as 
   * "&amp;apos;", and the double-quote character (")  as "&amp;quot;". New 
   * line characters and other characters that cannot be represented directly 
   * in attribute values in the output character encoding are serialized as a 
   * numeric character reference. 
   * <p> Within markup, but outside of attributes, any occurrence of a character 
   * that cannot be represented in the output character encoding is reported 
   * as an error. An example would be serializing the element 
   * &lt;LaCa\u00f1ada/&gt; with <code>encoding="us-ascii"</code>. 
   * <p> When requested by setting the parameter "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-normalize-characters'>
   * normalize-characters</a>" on <code>DOMSerializer</code> to true, character 
normalization is 
   * performed according to the rules defined in [<a 
href='http://www.w3.org/TR/2002/WD-charmod-20020430'>CharModel</a>] on all 
   * data to be serialized, both markup and character data. The character 
   * normalization process affects only the data as it is being written; it 
   * does not alter the DOM's view of the document after serialization has 
   * completed. 
   * <p> When outputting unicode data, whether or not a byte order mark is 
   * serialized, or if the output is big-endian or little-endian, is 
   * implementation dependent. 
   * <p> Namespaces are fixed up during serialization, the serialization process 
   * will verify that namespace declarations, namespace prefixes and the 
   * namespace URI's associated with elements and attributes are consistent. 
   * If inconsistencies are found, the serialized form of the document will be 
   * altered to remove them. The method used for doing the namespace fixup 
   * while serializing a document is the algorithm defined in Appendix B.1, 
   * "Namespace normalization", of [<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609'>DOM Level 3 Core</a>]
   * . 
   * <p> Any changes made affect only the namespace prefixes and declarations 
   * appearing in the serialized data. The DOM's view of the document is not 
   * altered by the serialization operation, and does not reflect any changes 
   * made to namespace declarations or prefixes in the serialized output.  We 
   * may take back what we say in the above paragraph depending on feedback 
   * from implementors, but for now the belief is that the DOM's view of the 
   * document is not changed during serialization. 
   * <p> While serializing a document, the parameter "discard-default-content" 
   * controls whether or not non-specified data is serialized. 
   * <p> While serializing, errors are reported to the application through the 
   * error handler (<code>DOMSerializer.config</code>'s "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-error-handler'>
   * error-handler</a>" parameter). This specification does in no way try to define 
all possible 
   * errors that can occur while serializing a DOM node, but some common error 
   * cases are defined. The types (<code>DOMError.type</code>) of errors and 
   * warnings defined by this specification are: 
   * <dl>
   * <dt>
   * <code>"invalid-data-in-cdata-section" [fatal]</code></dt>
   * <dd> Raised if the 
   * configuration parameter "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-split-cdata-sections'>
   * split-cdata-sections</a>" is set to <code>false</code> and invalid data is 
encountered in a CDATA 
   * section. </dd>
   * <dt><code>"unsupported-encoding" [fatal]</code></dt>
   * <dd> Raised if an 
   * unsupported encoding is encountered. </dd>
   * <dt>
   * <code>"unbound-namespace-in-entity" [warning]</code></dt>
   * <dd> Raised if the 
   * configuration parameter "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-entities'>
   * entities</a>" is set to <code>true</code> and an unbound namespace prefix is 
   * encounterd in a referenced entity. </dd>
   * <dt>
   * <code>"no-output-specified" [fatal]</code></dt>
   * <dd> Raised when writing to a 
   * <code>DOMOutput</code> if no output is specified in the 
   * <code>DOMOutput</code>. </dd>
   * </dl> 
   * <p> In addition to raising the defined errors and warnings, implementations 
   * are expected to raise implementation specific errors and warnings for any 
   * other error and warning cases such as IO errors (file not found, 
   * permission denied,...) and so on. 
   * <p>See also the <a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619'>Document Object Model 
(DOM) Level 3 Load
  and Save Specification</a>.
   */
  public interface DOMSerializer {
      /**
       *  The <code>DOMConfiguration</code> object used by the 
       * <code>DOMSerializer</code> when serializing a DOM node. 
       * <br> In addition to the parameters recognized in the [<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609'>DOM Level 3 Core</a>]
       * , the <code>DOMConfiguration</code> objects for 
       * <code>DOMSerializer</code> adds, or modifies, the following 
       * parameters: 
       * <dl>
       * <dt><code>"canonical-form"</code></dt>
       * <dd>
       * <dl>
       * <dt><code>true</code></dt>
       * <dd>[<em>optional</em>] This formatting writes the document according to the 
rules specified in [<a 
href='http://www.w3.org/TR/2001/REC-xml-c14n-20010315'>Canonical XML</a>]. 
       * Setting this parameter to <code>true</code> will set the parameter "
       * format-pretty-print" to <code>false</code>. </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) Do not canonicalize the output. 
</dd>
       * </dl></dd>
       * <dt><code>"discard-default-content"</code></dt>
       * <dd>
       * <dl>
       * <dt>
       * <code>true</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) Use the 
<code>Attr.specified</code> attribute to decide what attributes 
       * should be discarded. Note that some implementations might use 
       * whatever information available to the implementation (i.e. XML 
       * schema, DTD, the <code>Attr.specified</code> attribute, and so on) to 
       * determine what attributes and content to discard if this parameter is 
       * set to <code>true</code>. </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>required</em>]Keep all attributes and all content.</dd>
       * </dl></dd>
       * <dt><code>"format-pretty-print"</code></dt>
       * <dd>
       * <dl>
       * <dt>
       * <code>true</code></dt>
       * <dd>[<em>optional</em>] Formatting the output by adding whitespace to produce 
a pretty-printed, 
       * indented, human-readable form. The exact form of the transformations 
       * is not specified by this specification. Pretty-printing changes the 
       * content of the document and may affect the validity of the document, 
       * validating implementations should preserve validity. Setting this 
       * parameter to <code>true</code> will set the parameter "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-canonical-form'>
       * canonical-form</a>" to <code>false</code>. </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) Don't pretty-print the result. 
</dd>
       * </dl></dd>
       * <dt> 
       * <code>"ignore-unknown-character-denormalizations"</code> </dt>
       * <dd>
       * <dl>
       * <dt>
       * <code>true</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) If, while verifying full 
normalization when [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 
1.1</a>] is 
       * supported, a character is encountered for which the normalization 
       * properties cannot be determined, then raise a 
       * <code>"unknown-character-denormalization"</code> warning (instead of 
       * raising an error, if this parameter is not set) and ignore any 
       * possible denormalizations caused by these characters.  IMO it would 
       * make sense to move this parameter into the DOM Level 3 Core spec, and 
       * the error/warning should be defined there. </dd>
       * <dt><code>false</code></dt>
       * <dd>[<em>optional</em>] Report an fatal error if a character is encountered 
for which the 
       * processor cannot determine the normalization properties. </dd>
       * </dl></dd>
       * <dt>
       * <code>"normalize-characters"</code></dt>
       * <dd> This parameter is equivalent to 
       * the one defined by <code>DOMConfiguration</code> in [<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609'>DOM Level 3 Core</a>]
       * . Unlike in the Core, the default value for this parameter is 
       * <code>true</code>. While DOM implementations are not required to 
       * support fully normalizing the characters in the document according to 
       * the rules defined in [<a 
href='http://www.w3.org/TR/2002/WD-charmod-20020430'>CharModel</a>] 
       * supplemented by the definitions of relevant constructs from Section 
       * 2.13 of [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>], 
this 
       * parameter must be activated by default if supported. </dd>
       * <dt>
       * <code>"xml-declaration"</code></dt>
       * <dd>
       * <dl>
       * <dt><code>true</code></dt>
       * <dd>[<em>required</em>] (<em>default</em>) If a <code>Document</code>, 
<code>Element</code>, or <code>Entity</code>
       *  node is serialized, the XML declaration, or text declaration, should 
       * be included. The version (<code>Document.xmlVersion</code> if the 
       * document is a Level 3 document, and the version is non-null, 
       * otherwise use the value "1.0"), and possibly an encoding (
       * <code>DOMSerializer.encoding</code>, or 
       * <code>Document.actualEncoding</code> or 
       * <code>Document.xmlEncoding</code> if the document is a Level 3 
       * document) is specified in the serialized XML declaration. </dd>
       * <dt>
       * <code>false</code></dt>
       * <dd>[<em>required</em>] Do not serialize the XML and text declarations. 
Report a 
       * <code>"xml-declaration-needed"</code> warning if this will cause 
       * problems (i.e. the serialized data is of an XML version other than [<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>], or an 
       * encoding would be needed to be able to re-parse the serialized data). </dd>
       * </dl></dd>
       * </dl>
       * <br> The parameters "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-well-formed'>
       * well-formed</a>", "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-namespaces'>
       * namespaces</a>", and "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-namespace-declarations'>
       * namespace-declarations</a>" cannot be set to <code>false</code>. 
       */
      public DOMConfiguration getConfig();
  
      /**
       *  The end-of-line sequence of characters to be used in the XML being 
       * written out. Any string is supported, but these are the recommended 
       * end-of-line sequences (using other character sequences than these 
       * recommended ones can result in a document that is either not 
       * serializable or not well-formed): 
       * <dl>
       * <dt><code>null</code></dt>
       * <dd> Use a default 
       * end-of-line sequence. DOM implementations should choose the default 
       * to match the usual convention for text files in the environment being 
       * used. Implementations must choose a default sequence that matches one 
       * of those allowed by section 2.11, "End-of-Line Handling" in [<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>], if the 
       * serialized content is XML 1.0 or section 2.11, "End-of-Line Handling" 
       * in [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>], if 
the 
       * serialized content is XML 1.1. </dd>
       * <dt>CR</dt>
       * <dd>The carriage-return character (#xD).</dd>
       * <dt>
       * CR-LF</dt>
       * <dd> The carriage-return and line-feed characters (#xD #xA). </dd>
       * <dt>LF</dt>
       * <dd> The 
       * line-feed character (#xA). </dd>
       * </dl>
       * <br>The default value for this attribute is <code>null</code>.
       */
      public String getNewLine();
      /**
       *  The end-of-line sequence of characters to be used in the XML being 
       * written out. Any string is supported, but these are the recommended 
       * end-of-line sequences (using other character sequences than these 
       * recommended ones can result in a document that is either not 
       * serializable or not well-formed): 
       * <dl>
       * <dt><code>null</code></dt>
       * <dd> Use a default 
       * end-of-line sequence. DOM implementations should choose the default 
       * to match the usual convention for text files in the environment being 
       * used. Implementations must choose a default sequence that matches one 
       * of those allowed by section 2.11, "End-of-Line Handling" in [<a 
href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>], if the 
       * serialized content is XML 1.0 or section 2.11, "End-of-Line Handling" 
       * in [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>], if 
the 
       * serialized content is XML 1.1. </dd>
       * <dt>CR</dt>
       * <dd>The carriage-return character (#xD).</dd>
       * <dt>
       * CR-LF</dt>
       * <dd> The carriage-return and line-feed characters (#xD #xA). </dd>
       * <dt>LF</dt>
       * <dd> The 
       * line-feed character (#xA). </dd>
       * </dl>
       * <br>The default value for this attribute is <code>null</code>.
       */
      public void setNewLine(String newLine);
  
      /**
       *  When the application provides a filter, the serializer will call out 
       * to the filter before serializing each Node. The filter implementation 
       * can choose to remove the node from the stream or to terminate the 
       * serialization early. 
       * <br> The filter is invoked before the operations requested by the 
       * <code>DOMConfiguration</code> parameters have been applied. For 
       * example, CDATA sections are passed to the filter even if "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-cdata-sections'>
       * cdata-sections</a>" is set to <code>false</code>. 
       */
      public DOMSerializerFilter getFilter();
      /**
       *  When the application provides a filter, the serializer will call out 
       * to the filter before serializing each Node. The filter implementation 
       * can choose to remove the node from the stream or to terminate the 
       * serialization early. 
       * <br> The filter is invoked before the operations requested by the 
       * <code>DOMConfiguration</code> parameters have been applied. For 
       * example, CDATA sections are passed to the filter even if "<a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-cdata-sections'>
       * cdata-sections</a>" is set to <code>false</code>. 
       */
      public void setFilter(DOMSerializerFilter filter);
  
      /**
       *  Serialize the specified node as described above in the general 
       * description of the <code>DOMSerializer</code> interface. The output 
       * is written to the supplied <code>DOMOutput</code>. 
       * <br> When writing to a <code>DOMOutput</code>, the encoding is found by 
       * looking at the encoding information that is reachable through the 
       * <code>DOMOutput</code> and the item to be written (or its owner 
       * document) in this order: 
       * <ol>
       * <li> <code>DOMOutput.encoding</code>, 
       * </li>
       * <li> 
       * <code>Document.actualEncoding</code>, 
       * </li>
       * <li> 
       * <code>Document.xmlEncoding</code>. 
       * </li>
       * </ol>
       * <br> If no encoding is reachable through the above properties, a 
       * default encoding of "UTF-8" will be used. 
       * <br> If the specified encoding is not supported an 
       * "unsupported-encoding" error is raised. 
       * <br> If no output is specified in the <code>DOMOutput</code>, a 
       * "no-output-specified" error is raised. 
       * @param node  The node to serialize. 
       * @param destination The destination for the serialized DOM.
       * @return  Returns <code>true</code> if <code>node</code> was 
       *   successfully serialized and <code>false</code> in case the node 
       *   couldn't be serialized. 
       */
      public boolean write(Node node, 
                           DOMOutput destination);
  
      /**
       *  Serialize the specified node as described above in the general 
       * description of the <code>DOMSerializer</code> interface. The output 
       * is written to the supplied URI. 
       * <br> When writing to a URI, the encoding is found by looking at the 
       * encoding information that is reachable through the item to be written 
       * (or its owner document) in this order: 
       * <ol>
       * <li> 
       * <code>Document.actualEncoding</code>, 
       * </li>
       * <li> 
       * <code>Document.xmlEncoding</code>. 
       * </li>
       * </ol>
       * <br> If no encoding is reachable through the above properties, a 
       * default encoding of "UTF-8" will be used. 
       * <br> If the specified encoding is not supported an 
       * "unsupported-encoding" error is raised. 
       * @param node  The node to serialize. 
       * @param URI The URI to write to.
       * @return  Returns <code>true</code> if <code>node</code> was 
       *   successfully serialized and <code>false</code> in case the node 
       *   couldn't be serialized. 
       */
      public boolean writeURI(Node node, 
                              String URI);
  
      /**
       *  Serialize the specified node as described above in the general 
       * description of the <code>DOMSerializer</code> interface. The output 
       * is written to a <code>DOMString</code> that is returned to the caller 
       * (this method completely ignores all the encoding information 
       * available). 
       * @param node  The node to serialize. 
       * @return  Returns the serialized data, or <code>null</code> in case the 
       *   node couldn't be serialized. 
       * @exception DOMException
       *    DOMSTRING_SIZE_ERR: Raised if the resulting string is too long to 
       *   fit in a <code>DOMString</code>. 
       */
      public String writeToString(Node node)
                                  throws DOMException;
  
  }
  
  
  
  1.1                  xml-xerces/java/src/org/w3c/dom/ls/DOMSerializerFilter.java
  
  Index: DOMSerializerFilter.java
  ===================================================================
  /*
   * Copyright (c) 2003 World Wide Web Consortium,
   *
   * (Massachusetts Institute of Technology, European Research Consortium for
   * Informatics and Mathematics, Keio University). All Rights Reserved. This
   * work is distributed under the W3C(r) Software License [1] 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.
   *
   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
   */
  
  package org.w3c.dom.ls;
  
  import org.w3c.dom.traversal.NodeFilter;
  
  /**
   *  <code>DOMSerializerFilter</code>s provide applications the ability to 
   * examine nodes as they are being serialized and decide what nodes should 
   * be serialized or not. The <code>DOMSerializerFilter</code> interface is 
   * based on the <code>NodeFilter</code> interface defined in [<a 
href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>DOM Level 2 
Traversal and      Range</a>]
   * . 
   * <p> The <code>Document</code>, <code>DocumentType</code>, 
   * <code>DocumentFragment</code>, <code>Attr</code>, <code>Notation</code>, 
   * and <code>Entity</code> nodes are not passed to the filter. 
   * <p> The result of any attempt to modify a node passed to a 
   * <code>DOMSerializerFilter</code> is implementation dependent. 
   * <p>See also the <a 
href='http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619'>Document Object Model 
(DOM) Level 3 Load
  and Save Specification</a>.
   */
  public interface DOMSerializerFilter extends NodeFilter {
      /**
       *  Tells the <code>DOMSerializer</code> what types of nodes to show to 
       * the filter. See <code>NodeFilter</code> for definition of the 
       * constants. The constants <code>SHOW_ATTRIBUTE</code>, 
       * <code>SHOW_DOCUMENT</code>, <code>SHOW_DOCUMENT_TYPE</code>, 
       * <code>SHOW_NOTATION</code>, <code>SHOW_ATTRIBUTE</code>, and 
       * <code>SHOW_DOCUMENT_FRAGMENT</code> are meaningless here, those nodes 
       * will never be passed to a <code>DOMSerializerFilter</code>. 
       * <br> The constants used here are defined in [<a 
href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>DOM Level 2 
Traversal and      Range</a>]
       * . 
       */
      public int getWhatToShow();
  
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to