xerces-2_12_1-xml-schema-1.1.docs.xni.xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ibis-xerces Show documentation
Show all versions of ibis-xerces Show documentation
Xerces2 is the next generation of high performance, fully compliant XML parsers in the Apache Xerces family. This new version of Xerces introduces the Xerces Native Interface (XNI), a complete framework for building parser components and configurations that is extremely modular and easy to program.
The Apache Xerces2 parser is the reference implementation of XNI but other parser components, configurations, and parsers can be written using the Xerces Native Interface. For complete design and implementation documents, refer to the XNI Manual.
Xerces2 is a fully conforming XML Schema 1.0 processor. A partial experimental implementation of the XML Schema 1.1 Structures and Datatypes Working Drafts (December 2009) and an experimental implementation of the XML Schema Definition Language (XSD): Component Designators (SCD) Candidate Recommendation (January 2010) are provided for evaluation. For more information, refer to the XML Schema page.
Xerces2 also provides a complete implementation of the Document Object Model Level 3 Core and Load/Save W3C Recommendations and provides a complete implementation of the XML Inclusions (XInclude) W3C Recommendation. It also provides support for OASIS XML Catalogs v1.1.
Xerces2 is able to parse documents written according to the XML 1.1 Recommendation, except that it does not yet provide an option to enable normalization checking as described in section 2.13 of this specification. It also handles namespaces according to the XML Namespaces 1.1 Recommendation, and will correctly serialize XML 1.1 documents if the DOM level 3 load/save APIs are in use.
<?xml version='1.0' encoding='UTF-8'?> <!-- * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. --> <!DOCTYPE s1 SYSTEM 'dtd/document.dtd'> <s1 title='Xerces Native Interface'> <s2 title='Overview'> <p> The Xerces Native Interface (XNI) is a framework for communicating a "streaming" document information set and constructing generic parser configurations. XNI is part of the Xerces2 development but the Xerces2 parser is just a standards compliant reference implementation of the Xerces Native Interface. Other parsers can be written that conform to XNI without conforming to any particular standards or using any code from the reference implementation. </p> <p> The Xerces Native Interface is used to implement the Xerces2 parser from a set of modular components in a standard configuration. This configuration is then used to drive the DOM and SAX parser implementations provided with Xerces2. However, XNI is merely an <em>internal</em> set of interfaces. There is no need for an XML application programmer to learn XNI if they only intend to interface to the Xerces2 parser using standard interfaces like JAXP, DOM, and SAX. Xerces developers and application developers that need more power and flexibility than that provided by the standard interfaces should read and understand XNI. </p> <p>Overview information:</p> <ul> <li> <jump href='#streaming-info-set'>"Streaming" Information Set</jump> </li> <li> <jump href='#generic-parser-configurations'>Generic Parser Configurations</jump> </li> </ul> <p>Design and implementation information:</p> <ul> <li><link idref='xni-design'>Design Details</link></li> <li><link idref='xni-core'>Core Interfaces</link></li> <li><link idref='xni-config'>Parser Configuration</link></li> <li><link idref='xni-xerces2'>Xerces2 Parser Components</link></li> </ul> </s2> <anchor name='streaming-info-set'/> <s2 title='"Streaming" Information Set'> <p> What is meant by a "streaming" information set? Quite simply, the streaming information set is the document information that can be communicated by parsing the document in a serial manner. In other words, it is the information received as-you-see-it. An XNI parser provides this streaming info set to a registered document handler. The XNI document handler is similar to the standard SAX <code>ContentHandler</code> interface but is different in several important ways: </p> <ul> <li> XNI attempts to provide lossless communication of the streaming information set. Therefore, XNI passes the encodings of external parsed entities and other information that is lost when using SAX. </li> <li> The XNI document handler interface is also designed to build a pipeline of parser components where the streaming information set can be fully modified and augmented by each stage in the pipeline. SAX, however, is primarily a read-only set of interfaces. </li> </ul> <p> The Xerces Native Interface breaks the document's streaming information set into several more manageable interfaces: </p> <table> <tr><th>Interface</th><th>Description</th></tr> <tr> <td><code>XMLDocumentHandler</code></td> <td>Communicates document structure and content information.</td> </tr> <tr> <td><code>XMLDTDHandler</code></td> <td> Communicates basic DTD information such as element and attribute declarations. </td> </tr> <tr> <td><code>XMLDTDContentModelHandler</code></td> <td> Breaks down each element declaration's content model into a set of separate methods so that handlers don't have to reparse the content model string given in the <code>XMLDTDHandler#elementDecl(String,String)</code> method. This separation also helps those applications that want to know boundaries of entities when used as part of an element's content model. </td> </tr> </table> <p> And an additional handler is provided for convenience in defining document fragments: </p> <table> <tr><th>Interface</th><th>Description</th></tr> <tr> <td><code>XMLDocumentFragmentHandler</code></td> <td>Communicates information about a document fragment.</td> </tr> </table> <p> For complete details of the Xerces Native Interface, refer to the <link idref='xni-core'>Core Interfaces</link> documentation. </p> </s2> <anchor name='generic-parser-configurations'/> <s2 title='Generic Parser Configurations'> <p> The Xerces Native Interface document handler interfaces define a document's streaming information set but XNI also contains a set of interfaces that define parser components and configurations. These interfaces provide a framework for a library of parser parts that can be used interchangeably or completely replaced at the programmer's option. This framework allows an unparalleled level of configuration and implementation choices to implement XML applications. </p> <p> The following list details some possible examples of parsers and configurations that can be written using the XNI parser configuration framework: </p> <ul> <li> <strong>HTML Parser</strong><br/> An HTML scanner can be written that breaks an HTML document into a series of XNI callbacks. Using a configuration that swaps the default XML scanner with the HTML scanner, you can create DOM and SAX parsers for HTML documents. </li> <li> <strong>Optimized Parser</strong><br/> For improved XML performance, a minimal XML scanner can be written and swapped for the default, fully compliant XML scanner. In addition, the validator component can be removed from the parser pipeline to reduce the amount of work required to parse XML documents. </li> <li> <strong>XInclude Processor</strong><br/> An XNI parser component can be written to handle XInclude by analyzing the streaming information set and automatically inserting the contents of referenced links into the event stream. By adding this component to the parser pipeline before the validator, included content would appear transparent to the validator as if that content was in the original document. </li> </ul> <p> This is just a small sample of what is possible when using the XNI parser configuration framework. For complete details of the XNI parser configurations, refer to the <link idref='xni-config'>Parser Configuration</link> documentation. </p> </s2> </s1>