blob: e4ae65056b565a37ac1df3571e31e5361c823ecc [file] [log] [blame]
<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "./dtd/document.dtd">
<s1 title="Schema">
<s2 title="Disclaimer">
<p>Schema is not fully supported in &XercesCName; yet. But an
experimental implementation of a subset of the W3C XML
Schema language is now available for review in &XercesCName; &XercesCVersion;.
You should not consider this implementation complete or
correct. The limitations of this implementation are
detailed below. Please read this document before using
&XercesCName; &XercesCVersion;.
</p>
</s2>
<s2 title="Introduction">
<p>The &XercesCName; &XercesCVersion; contains an implementation
of a subset of the W3C XML Schema Language as specified
in the 2 May 2001 Recommendation for <jump
href="http://www.w3.org/TR/xmlschema-1/">Structures</jump>
and <jump href="http://www.w3.org/TR/xmlschema-2/">
Datatypes</jump>. The parsers contained in this package are
able to read and validate XML documents with the grammar specified
in either DTD or XML Schema format.
</p>
<p>We intend to update this package until it implements all
the functionality of the current XML Schema Recommendation.
If you are interested in a particular unimplemented feature, or
if you have any feedback on the implementation design,
we welcome your input to the <jump href="mailto:&XercesCEmailAddress;">
Xerces-C mailing list &XercesCEmailAddress; </jump> .
</p>
</s2>
<anchor name="limitation"/>
<s2 title="Limitations">
<p>The XML Schema implementation in the &XercesCName; &XercesCVersion; is a
subset of the features defined in the 2 May 2001 XML Schema Recommendation.
</p>
</s2>
<s2 title='Features/Datatypes Not Supported'>
<ul>
<li>Identity Constraints</li>
<li>Particle Derivation Constraint Checking </li>
<li>Built-in Datatypes Not Supported</li>
<ul>
<li>Primitive Datatypes</li>
<ul>
<li>duration</li>
<li>dateTime</li>
<li>time</li>
<li>date</li>
<li>gYearMonth</li>
<li>gYear</li>
<li>gMonthDay</li>
<li>gDay</li>
<li>gMonth</li>
</ul>
</ul>
</ul>
<p>Development is ongoing and we target to implement all the features of the
current XML Schema Recommendation before end of this year. Please note that
the date is tentative and subject to change.
</p>
</s2>
<s2 title="Other Limitations">
<ul>
<li>No interface is provided for exposing the post-schema
validation infoset , beyond
that provided by DOM or SAX;</li>
<li> The parser permits situations in which there is
circular or multiple importing. However, the parser only permits forward
references--that is, references directed from the
direction of the schema cited in the instance
document to other schemas. For instance, if schema A
imports both schema B and schema C, then
any reference in schema B to an information item from
schema C will produce an error. Circular or multiple
&lt;include&gt;s have similar limitations.</li>
<li>Due to the way in which the parser constructs content
models for elements with complex content, specifying large
values for the <code>minOccurs</code> or <code>maxOccurs</code>
attributes may cause a stack overflow or very poor performance
in the parser. Large values for <code>minOccurs</code> should be
avoided, and <code>unbounded</code> should be used instead of
a large value for <code>maxOccurs</code>.</li>
<li>The parsers contained in this package are able to read and
validate XML documents with the grammar specified in either
DTD or XML Schema format, but not both.</li>
<li>The schema is specified by the xsi:schemaLocation or
xsi:noNamespaceSchemaLocation attribute on the root
element of the document. The xsi prefix must be bound to the
Schema document instance namespace, as specified by the
Recommendation. See the sample provided in the
Usage section.</li>
</ul>
</s2>
<anchor name="usage"/>
<s2 title="Usage">
<p>XML document specifies the XML Schema grammar location in the
xsi:schemaLocation attribute attached to the root / top-level element.
Here is an example with no target namspace:
</p>
<source>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='personal.xsd'&gt;
...
&lt;/personnel&gt;
</source>
<p>Please see the sample file, 'samples/data/personal-schema.xml' for
further detail. And review the sample file 'samples/data/personal.xsd'
for an example of an XML Schema grammar.
</p>
<p>Here is an example how to turn on schema processing in DOMParser
(default is off). Note that you must also turn on namespace support
(default is off) for schema processing.
</p>
<source>// Instantiate the DOM parser.
DOMParser parser;
parser.setDoNamespaces(true);
parser.setDoSchema(true);
parser.parse(xmlFile);
</source>
<p>Usage in SAXParser is similar, please refer to the
sample program 'samples/SAXCount/SAXCount.cpp' for further reference.
</p>
<p>Here is an example how to turn on schema processing in SAX2XMLReader
(default is on). Note that namespace must be on (default is on) as well.
</p>
<source>SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
parser->setFeature(XMLString::transcode("http://xml.org/sax/features/namespaces"), true);
parser->setFeature(XMLString::transcode("http://apache.org/xml/features/validation/schema"), true);
parser->parse(xmlFile);
</source>
</s2>
</s1>