<?xml version="1.0" encoding="UTF-8"?>
<schemaForSchemaContentAnnotation>

<content key='element-header' markup='requires'>
<div>
<h1>Schema Content</h1>
<p>
The content is color coded to indicate the level of support; the categories are 
<span class='allows'>allows</span>,
<span class='requires'>requires</span>,
<span class='future'>future</span>, and 
<span class='never'>never</span>.

</p>
</div>
</content>

<content key='type-header' markup='requires'>
<div>
<h1>Built-in Datatypes</h1>
<p>
This represents a summary table the 
<a target='Part2' href='http://www.w3.org/TR/xmlschema-2/#built-in-datatypes'>hierarchy</a> 
of built-in datatypes.
</p>
<p>
A <b>very preliminary</b> mapping to Java classes is shown; 
it is understood that a primitive type will be used intead of the actual class whenever such a primitive type exists.
</p>
</div>
</content>


<elementAnnotation key='all' markup='requires'>
<div>
This generates unordered content.
</div>
</elementAnnotation>

<elementAnnotation key='annotation' markup='allows'>
<div>
This may influence generation results in undefined ways.
</div>
</elementAnnotation>

<elementAnnotation key='any' markup='never'>
<div>
Arbitrary element content is document centric and is best supported by DOM itself.
</div>
</elementAnnotation>

<elementAnnotation key='anyAttribute' markup='never'>
<div>
Arbitrary attribute content is document centric and is best supported by DOM itself.
</div>
</elementAnnotation>

<elementAnnotation key='appinfo' markup='allows'>
<div>
This may influence generation results in undefined ways.
</div>
</elementAnnotation>

<elementAnnotation key='attribute' markup='requires'>
<div>
This generates simple typed content.
</div>
</elementAnnotation>

<elementAnnotation key='attributeGroup' markup='requires'>
<div>
This contributes attributes to complex content.
</div>
</elementAnnotation>

<elementAnnotation key='choice' markup='requires'>
<div>
This generates a choice of content.
</div>
</elementAnnotation>

<elementAnnotation key='complexContent' markup='requires'>
<div>
This generates content.
</div>
</elementAnnotation>

<elementAnnotation key='complexContent::extension' markup='requires'>
<div>
This contributes additional content.
</div>
</elementAnnotation>

<elementAnnotation key='complexContent::restriction' markup='requires'>
<div>
This restricts previously defined content; this may not fit well with programming language notions.
</div>
</elementAnnotation>

<elementAnnotation key='complexType' markup='requires'>
<div>
This contributes to complex content.
</div>
</elementAnnotation>

<elementAnnotation key='documentation' markup='allows'>
<div>
This may influence generation results in undefined ways.
</div>
</elementAnnotation>

<elementAnnotation key='element' markup='requires'>
<div>
This generates complex typed content.
</div>
</elementAnnotation>

<elementAnnotation key='enumeration' markup='requires'>
<div>
This generates validation checks; it could be used to generate enumerated values.
</div>
</elementAnnotation>

<elementAnnotation key='field' markup='future'>
<div>
It is expected that a future version of the specification will define behavior for this.
</div>
</elementAnnotation>

<elementAnnotation key='fractionDigits' markup='requires'>
<div>
This generates validation checks; it could be used to guide automatic choice of type.
</div>
</elementAnnotation>

<elementAnnotation key='group' markup='requires'>
<div>
This contributes to complex content.
</div>
</elementAnnotation>

<elementAnnotation key='import' markup='requires'>
<div>
This directive makes other namespaces accessible.
</div>
</elementAnnotation>

<elementAnnotation key='include' markup='requires'>
<div>
This directive assembles a decomposed schema.
</div>
</elementAnnotation>

<elementAnnotation key='key' markup='future'>
<div>
It is expected that a future version of the specification will define behavior for this.
</div>
</elementAnnotation>

<elementAnnotation key='keyref' markup='future'>
<div>
It is expected that a future version of the specification will define behavior for this.
</div>
</elementAnnotation>

<elementAnnotation key='length' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='list' markup='requires'>
<div>
This defines simple content via list derivation.
</div>
</elementAnnotation>

<elementAnnotation key='maxExclusive' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='maxInclusive' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='maxLength' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='minExclusive' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='minInclusive' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='minLength' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='notation' markup='never'>
<div>
Nothing is generated for notations.
</div>
</elementAnnotation>

<elementAnnotation key='pattern' markup='requires'>
<div>
This generates validation checks; a regular expression library will be required by the implementation.
</div>
</elementAnnotation>

<elementAnnotation key='redefine' markup='future'>
<div>
Since redefine is difficult to implement, and is little used,
it may be ignored by a conforming implementation 
until a future time when its use becomes common.
</div>
</elementAnnotation>

<elementAnnotation key='restriction' markup='requires'>
<div>
This defines simple type content via restricting derivation.
</div>
</elementAnnotation>

<elementAnnotation key='schema' markup='requires'>
<div>
This generates meaning for a subset of the content.
</div>
</elementAnnotation>

<elementAnnotation key='selector' markup='future'>
<div>
It is expected that a future version of the specification will define behavior for this.
</div>
</elementAnnotation>

<elementAnnotation key='sequence' markup='requires'>
<div>
This generates ordered content.
</div>
</elementAnnotation>

<elementAnnotation key='simpleContent' markup='requires'>
<div>
This contributes to simple content.
</div>
</elementAnnotation>

<elementAnnotation key='simpleContent::extension' markup='requires'>
<div>
This contributes to simple content via extending derivation.
</div>
</elementAnnotation>

<elementAnnotation key='simpleContent::restriction' markup='requires'>
<div>
This defines simple content via restricting derivation; this may not fit well with programming language notions.
</div>
</elementAnnotation>

<elementAnnotation key='simpleType' markup='requires'>
<div>
This defines simple type content.
</div>
</elementAnnotation>

<elementAnnotation key='totalDigits' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>

<elementAnnotation key='union' markup='requires'>
<div>
This defines simple type content as a union of member types.
</div>
</elementAnnotation>

<elementAnnotation key='unique' markup='future'>
<div>
It is expected that a future version of the specification will define behavior for this.
</div>
</elementAnnotation>

<elementAnnotation key='whiteSpace' markup='requires'>
<div>
This generates validation checks.
</div>
</elementAnnotation>


<!-- Markup for attributes -->


<attributeAnnotation key='id' markup='never'>
<div>
This is ignored.
</div>
</attributeAnnotation>

<attributeAnnotation 
  key='complexType.abstract complexType.block complexType.final element.abstract element.block element.final element.nillable element.substitutionGroup schema.blockDefault schema.finalDefault'
  markup='never'>
<div>
The concepts of <a target='Part1' href='http://www.w3.org/TR/xmlschema-1#xsi_type'>xsi typing</a> 
and <a target='Part1' href='http://www.w3.org/TR/xmlschema-1#xsi_nil'>xsi nil</a>
introduce additional burdens that will be addressed at a future time.
</div>
</attributeAnnotation>

<attributeAnnotation key='complexType.mixed complexContent.mixed' markup='never'>
<div>
Mixed content is document centric so all complex content is interpretted as element only.
</div>
</attributeAnnotation>



<typeMap schemaType="anySimpleType" javaClass="java.lang.String" />
<typeMap schemaType="anyType" javaClass="org.w3c.dom.Element" />
<typeMap schemaType="anyListType" javaClass="java.util.List" />
<typeMap schemaType="base64Binary" javaClass="java.lang.Byte[]" />
<typeMap schemaType="boolean" javaClass="java.lang.Boolean" />
<typeMap schemaType="byte" javaClass="java.lang.Byte" />
<typeMap schemaType="date" javaClass="java.util.GregorianCalendar" />
<typeMap schemaType="dateTime" javaClass="java.util.Date" />
<typeMap schemaType="decimal" javaClass="java.math.BigDecimal" />
<typeMap schemaType="double" javaClass="java.lang.Double" />
<typeMap schemaType="float" javaClass="java.lang.Float" />
<typeMap schemaType="hexBinary" javaClass="java.lang.Byte[]" />
<typeMap schemaType="int" javaClass="java.lang.Integer" />
<typeMap schemaType="integer" javaClass="java.math.BigInteger" />
<typeMap schemaType="long" javaClass="java.lang.Long" />
<typeMap schemaType="QName" javaClass="java.lang.String[]" />
<typeMap schemaType="short" javaClass="java.lang.Short" />
<typeMap schemaType="unsignedByte" javaClass="java.lang.Short" />
<typeMap schemaType="unsignedInt" javaClass="java.lang.Long" />
<typeMap schemaType="unsignedShort" javaClass="java.lang.Integer" />


<content key='appendix-header' markup='requires'>
<div>
<h1>Overview</h1>

This provides an implementation of the XML Schema Standard 
<a target='Part1' href="http://www.w3.org/TR/xmlschema-1">Part 1</a> and
<a target='Part2' href="http://www.w3.org/TR/xmlschema-2">Part 2</a>.

<a name="details"/>
<h2>Abstract XML Schema Components Part 1</h2> 

The abstract XML Schema Components, 
as described in <a target='Part1' href="http://www.w3.org/TR/xmlschema-1">Part 1</a> of the Standard,
are related according to this hierarchy:
<p>
<img src="ComponentHierarchy.gif" alt="Diagram of the Abstract Schema Component Hierarchy" border="0"/>
</p>

<p>
The abstract XML Schema Components have the following defined relations:
</p>
<p>
<img src="ComponentRelations.gif" alt="Diagram of the Abstract Schema Component Relations" border="0"/>
</p>
<p>
This is very similar to the standard non-normative 
<a target='Part1' href="http://www.w3.org/TR/xmlschema-1/#component-diagram">Schema Components Diagram</a>.
</p>

<p>
The abstract XML Schema Components have the following defined attributes:
</p>
<p>
<img src="ComponentAttributes.gif" alt="Diagram of the Abstract Schema Component Attributes" border="0"/>
</p>


<h2>Abstract XML Schema Components Part 2</h2> 

<p>
The abstract XML Schema Components, 
as described in <a target='Part2' href="http://www.w3.org/TR/xmlschema-2">Part 2</a> of the Standard,
are related according to this hierarchy with these defined relations and attributes:
</p>
<p>
<img src="ComponentHierarchyPart2.gif" alt="Diagram of the Abstract Schema Components for Part 2" border="0"/>
</p>


<h2>Abstract XML Schema Annotations</h2> 

The abstract XML Schema Components, 
as described in <a target='Part1' href="http://www.w3.org/TR/xmlschema-1">Part 1</a> 
and <a target='Part2' href="http://www.w3.org/TR/xmlschema-2">Part 2</a> of the Standard,
are annotated as follows:
<p>
<img src="Annotations.gif" alt="Diagram of the Abstract Schema Component Annotations" border="0"/>
</p>


<h2>Concrete XML Schema Components</h2> 

<p>
The set of abstract XML Schema Components is extended to represent that concrete syntax as follows: 
</p>
<p>
<img src="ConcreteComponents.gif" alt="Diagram of the Concrete Schema Components" border="0"/>
</p>

<p>
The concrete attributes are represented as follows:
</p>
<p>
<img src="ConcreteAttributes.gif" alt="Diagram of the Concrete Schema Component Attributes" border="0"/>
</p>

<p>
The concrete containment relations are represented as follows:
</p>
<p>
<img src="ConcreteContainment.gif" alt="Diagram of the Concrete Containment Relations" border="0"/>
</p>

<p>
The following concrete components resolve to abstract components:
</p>
<p>
<img src="ConcreteResolution.gif" alt="Diagram of Concrete Component Resolution" border="0"/>
</p>


<h1>Generator</h1>
<p>
The Contents and Build-in Data Types sections 
are <a target='Extra' href="XSDGenerateHTML.java">generated</a> 
using the model of the Overview section 
with the <a target='Part1' href="http://www.w3.org/TR/xmlschema-1#normative-schemaSchema">schema for schema</a>
and a <a target='Extra' href='SampleMarkup.xml'>markup file</a> as input.
</p>
</div>
</content>

</schemaForSchemaContentAnnotation>
