<?xml version="1.0" standalone="no"?>
<!--
 * 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 "sbk:/style/dtd/document.dtd">

<s1 title="&XercesCFullName;">

    <s2 title="&XercesCName; Version &XercesC3Version;">

        <p>&XercesCName; is a validating XML parser written in a portable subset of
        C++.   &XercesCName; makes it easy to give your application the ability to read and write
        <jump href="http://www.w3.org/XML/">XML</jump> data.    A shared
        library is provided for parsing, generating, manipulating, and validating XML documents
        using the DOM, SAX, and SAX2 APIs. For an introduction to programming
        with &XercesCName; refer to the <jump href="program-&XercesC3Series;.html">Programming
        Guide</jump>.</p>

        <p>&XercesCName; is faithful to the
        <jump href="http://www.w3.org/TR/REC-xml">XML 1.0</jump> recommendation
        and many associated standards (see <link anchor="Features">Features</link> below).
        </p>
        <p>The parser provides high performance, modularity, and scalability.    Source
        code, samples and API documentation are provided with the parser.   For
        portability, care has been taken to make minimal use of templates and minimal use of
        #ifdefs.</p>

    </s2>

    <s2 title="Applications of the &XercesCProjectName; Parser">

        <p>&XercesCProjectName; has rich generating and validating capabilities. The parser is used for:</p>

        <ul>
            <li>Building XML-savvy Web servers</li>
            <li>Building next generation of vertical applications that use XML as
              their data format</li>
            <li>On-the-fly validation for creating XML editors</li>
            <li>Ensuring the integrity of e-business data expressed in XML</li>
            <li>Building truly internationalized XML applications</li>
        </ul>
    </s2>

    <anchor name="Features"/>
    <s2 title="Features">
        <ul>
            <li>Conforms to</li>
            <ul>
               <li><jump href="http://www.w3.org/TR/2004/REC-xml-20040204/">
                   XML 1.0 (Third Edition)</jump>, W3C Recommendation</li>
			   <li><jump href="http://www.w3.org/TR/2004/REC-xml11-20040204/">
                   XML 1.1 (First Edition)</jump>, W3C Recommendation
                   (Note: section 2.13 Normalization Checking has not been implemented)</li>
               <li><jump href="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/">
                   DOM Level 1 Specification</jump>, W3C Recommendation of October 1, 1998</li>
               <li><jump href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/">
                   DOM Level 2 Core Specification</jump>, W3C Recommendation of November 13, 2000</li>
               <li><jump href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/">
                   DOM Level 2 Traversal and Range Specification</jump>,
                   W3C Recommendation of November 13, 2000</li>
               <li><jump href="http://sax.sourceforge.net/">SAX 1.0 and SAX 2.0</jump></li>
               <li><jump href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">
                   Namespaces in XML</jump>, W3C Recommendation of January 14, 1999</li>
	           <li><jump href="http://www.w3.org/TR/xml-names11/">
                   Namespaces in XML 1.1</jump>, W3C Recommendation</li>
               <li><jump href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">
                   XML Schema Part 1: Structure</jump>, W3C Recommendation 2 May 2001</li>
               <li><jump href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">
                   XML Schema Part 2: Datatypes</jump>, W3C Recommendation 2 May 2001</li>
               <li><jump href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407">
            	   DOM Level 3.0 Core Specification</jump>, W3C Recommendation 7 April 2004</li>
               <li><jump href="http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407">
            	   DOM Level 3.0 Load and Save Specification</jump>, W3C Recommendation 7 April 2004<br/>
	               See <jump href="program-dom-&XercesC3Series;.html#DOM3">DOM Level 3 Support</jump> for detail.</li>
               <li><jump href="http://www.w3.org/TR/2006/REC-xinclude-20061115/">
            	   XML Inclusions (XInclude) 1.0 (Second Edition)</jump>, W3C Recommendation 15 November 2006</li>
               <li><jump href="http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/">
            	   Element Traversal Specification</jump>, W3C Recommendation 22 December 2008</li>
            </ul>
            <li>Source code, samples, and documentation are provided</li>
            <li>Programmatic generation and validation of XML</li>
            <li>Pluggable catalogs, validators and encodings</li>
            <li>High performance</li>
            <li>Customizable error handling</li>
        </ul>
    </s2>

    <s2 title="License Information">
       <p>The &XercesCName; Version &XercesC3Version; is available as a source
          distribution only. &XercesCName; is made available under the
          <jump href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache Software License, Version 2.0</jump>.
       </p>
    </s2>

   <s2 title="A Note About Xerces 2.x">
     <p>If you're looking for information regarding the old Xerces 2.x
     library, please be advised that Xerces 2.8.0 and all earlier releases
     are 100% unsupported and should no longer be used by applications.</p>
   </s2>

</s1>
