blob: 842ea4abd7f0f2600088e115996d9f2c63eef6c5 [file] [log] [blame]
<?xml version='1.0' ?>
<schema
xmlns='http://www.w3.org/1999/XMLSchema'
targetNamespace='http://www.w3.org/1999/XSL/Transform'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
elementFormDefault='qualified'
version='April 15, 2000'>
<annotation>
<documentation>A Schema for XSLT - Don Box (http://www.develop.com/dbox)</documentation>
<documentation>Thanks to Curt Arnold for catching some errors along the way.</documentation>
</annotation>
<!-- internal types -->
<simpleType name='CDATA' base='string' />
<simpleType name='avt' base='string' >
<annotation>
<documentation source='http://www.w3.org/TR/xslt#attribute-value-templates'/>
</annotation>
</simpleType>
<simpleType name='pattern' base='string' >
<annotation>
<documentation source='http://www.w3.org/TR/xslt#patterns'/>
</annotation>
</simpleType>
<simpleType name='expr' base='string' >
<annotation>
<documentation source='http://www.w3.org/TR/xslt#section-Expressions'/>
</annotation>
</simpleType>
<simpleType name='single-multiple-any' base='NMTOKEN' >
<enumeration value='single' />
<enumeration value='multiple'/>
<enumeration value='any'/>
</simpleType>
<simpleType name='XPathNumber' base='decimal' >
<annotation>
<documentation source='http://www.w3.org/TR/xpath#NT-Number'/>
</annotation>
</simpleType>
<simpleType name='char' base='string' >
<minLength value='1' />
<maxLength value='1' />
</simpleType>
<simpleType name='yesno' base='NMTOKEN' >
<enumeration value='yes' />
<enumeration value='no' />
</simpleType>
<simpleType name='QNames' base='QName' derivedBy='list' />
<!-- literal result element attributes -->
<attribute name='version' type='xsl:CDATA' />
<attribute name='extension-element-prefixes' type='xsl:CDATA' />
<attribute name='exclude-result-prefixes' type='xsl:CDATA' />
<attribute name='use-attribute-sets' type='xsl:QNames' />
<!-- exemplars for the equiv classes -->
<element name='instruction' abstract='true' />
<element name='char-instruction' abstract='true' equivClass='instruction' />
<complexType name='char-template' content='mixed'>
<element ref='xsl:char-instruction' />
</complexType>
<complexType name='template' content='mixed'>
<element ref='xsl:instruction' />
<any namespace='##other' />
</complexType>
<complexType name='variable-definition' base='xsl:template' derivedBy='extension' >
<attribute name='name' type='QName' use='required' />
<attribute name='select' type='xsl:expr' />
</complexType>
<complexType name='char-template-with-space' base='xsl:char-template' derivedBy='extension' >
<attribute ref='xml:space' />
</complexType>
<complexType name='template-with-space' base='xsl:template' derivedBy='extension' >
<attribute ref='xml:space' />
</complexType>
<complexType name='named-template' base='xsl:template-with-space' derivedBy='extension' >
<element name='param' type='xsl:variable-definition'/>
<attribute name='match' type='xsl:pattern' />
<attribute name='name' type='QName' />
<attribute name='priority' type='xsl:XPathNumber' />
<attribute name='mode' type='QName' />
</complexType>
<complexType name='conditional-template' base='xsl:template-with-space' derivedBy='extension' >
<attribute name='test' type='xsl:expr' />
</complexType>
<complexType name='import-or-include' content='empty' >
<attribute name='href' type='uriReference' use='required' />
</complexType>
<complexType name='sort' content='empty' >
<attribute name='select' type='xsl:expr' value='.' use='default' />
<attribute name='lang' type='xsl:avt' />
<attribute name='data-type' type='xsl:avt' value='text' use='default' />
<attribute name='order' type='xsl:avt' value='ascending' use='default' />
<attribute name='case-order' type='xsl:avt' />
</complexType>
<complexType name='for-each' base='xsl:template-with-space' derivedBy='extension' >
<element name='sort' type='xsl:sort' minOccurs='0' maxOccurs='unbounded' />
<attribute name='select' type='xsl:expr' use='required' />
</complexType>
<complexType name='choose' content='elementOnly' >
<element name='when' type='xsl:conditional-template' maxOccurs='unbounded' />
<element name='otherwise' type='xsl:template-with-space' minOccurs='0' />
</complexType>
<complexType name='call-template' content='elementOnly'>
<element name='with-param' type='variable-definition' minOccurs='0' maxOccurs='unbounded' />
<attribute name='name' type='QName' use='required' />
</complexType>
<complexType name='apply-templates' content='elementOnly'>
<choice minOccurs='0' maxOccurs='unbounded' >
<element name='with-param' type='variable-definition' />
<element name='sort' type='xsl:sort' />
</choice>
<attribute name='select' type='xsl:expr' value='node()' use='default' />
<attribute name='mode' type='QName' />
</complexType>
<complexType name='copy' base='xsl:template-with-space' derivedBy='extension' >
<attribute name='use-attribute-sets' type='xsl:QNames' />
</complexType>
<complexType name='copy-of' content='empty' >
<attribute name='select' type='xsl:expr' use='required' />
</complexType>
<complexType name='value-of' base='xsl:copy-of' derivedBy='extension' >
<attribute name='disable-output-escaping' type='xsl:yesno' use='default' value='no'/>
</complexType>
<complexType name='message' base='xsl:template-with-space' derivedBy='extension' >
<attribute name='terminate' type='xsl:yesno' value='no' use='default'/>
</complexType>
<complexType name='apply-imports' content='empty' />
<complexType name='number' content='empty'>
<attribute name='level' type='xsl:single-multiple-any' value='single' use='default' />
<attribute name='count' type='xsl:pattern'/>
<attribute name='from' type='xsl:pattern'/>
<attribute name='value' type='xsl:expr'/>
<attribute name='format' type='xsl:avt' value='1' use='default' />
<attribute name='lang' type='xsl:avt'/>
<attribute name='letter-value' type='xsl:avt'/>
<attribute name='grouping-separator' type='xsl:avt'/>
<attribute name='grouping-size' type='xsl:avt'/>
</complexType>
<complexType name='text' content='textOnly' >
<attribute name='disable-output-escaping' type='xsl:yesno' value='no' use='default' />
</complexType>
<complexType name='processing-instruction' base='xsl:char-template-with-space' derivedBy='extension' >
<attribute name='name' type='xsl:avt' use='required' />
</complexType>
<complexType name='attribute' base='xsl:processing-instruction' derivedBy='extension' >
<attribute name='namespace' type='xsl:avt' />
</complexType>
<complexType name='element' base='xsl:template-with-space' derivedBy='extension' >
<attribute name='name' type='xsl:avt' use='required' />
<attribute name='namespace' type='xsl:avt' />
<attribute name='use-attribute-sets' type='xsl:QNames' />
</complexType>
<complexType name='preserve-or-strip-space' content='empty' >
<attribute name='elements' type='xsl:QNames' use='required' />
</complexType>
<complexType name='output' content='empty' >
<attribute name='method' type='QName' />
<attribute name='version' type='NMTOKEN' />
<attribute name='encoding' type='xsl:CDATA' />
<attribute name='omit-xml-declaration' type='xsl:yesno' />
<attribute name='standalone' type='xsl:yesno' />
<attribute name='doctype-public' type='string' />
<attribute name='doctype-system' type='string' />
<attribute name='cdata-section-elements' type='xsl:QNames' />
<attribute name='indent' type='xsl:yesno' />
<attribute name='media-type' type='xsl:CDATA' />
</complexType>
<complexType name='key' content='empty' >
<attribute name='name' type='QName' use='required'/>
<attribute name='match' type='xsl:pattern' use='required'/>
<attribute name='use' type='xsl:expr' use='required'/>
</complexType>
<complexType name='decimal-format' content='empty' >
<attribute name='name' type='QName'/>
<attribute name='decimal-separator' type='xsl:char' value='.' use='default' />
<attribute name='grouping-separator' type='xsl:char' value=',' use='default' />
<attribute name='infinity' type='xsl:CDATA' value='Infinity' use='default' />
<attribute name='minus-sign' type='xsl:char' value='-' use='default' />
<attribute name='NaN' type='xsl:CDATA' value='NaN' use='default' />
<attribute name='percent' type='xsl:char' value='%' use='default' />
<attribute name='per-mille' type='xsl:char' value='&#x2030;' use='default' />
<attribute name='zero-digit' type='xsl:char' value='0' use='default' />
<attribute name='digit' type='xsl:char' value='#' use='default' />
<attribute name='pattern-separator' type='xsl:char' value=';' use='default' />
</complexType>
<complexType name='attribute-set' content='elementOnly' >
<element ref='xsl:attribute' minOccurs='0' maxOccurs='unbounded' />
<attribute name='name' type='QName' use='required' />
<attribute name='use-attribute-sets' type='xsl:QNames' />
</complexType>
<complexType name='namespace-alias' content='empty' >
<attribute name='stylesheet-prefix' type='xsl:CDATA' use='required'/>
<attribute name='result-prefix' type='xsl:CDATA' use='required'/>
</complexType>
<element name='apply-templates' type='xsl:apply-templates' equivClass='char-instruction' />
<element name='call-template' type='xsl:call-template' equivClass='char-instruction' />
<element name='apply-imports' type='xsl:apply-imports' equivClass='char-instruction' />
<element name='for-each' type='xsl:for-each' equivClass='char-instruction'/>
<element name='value-of' type='xsl:value-of' equivClass='char-instruction' />
<element name='copy-of' type='xsl:copy-of' equivClass='char-instruction' />
<element name='number' type='xsl:number' equivClass='char-instruction' />
<element name='choose' type='xsl:choose' equivClass='char-instruction'/>
<element name='if' type='xsl:conditional-template' equivClass='char-instruction'/>
<element name='text' type='xsl:text' equivClass='char-instruction'/>
<element name='copy' type='xsl:copy' equivClass='char-instruction' />
<element name='variable' type='variable-definition' equivClass='char-instruction'/>
<element name='message' type='xsl:message' equivClass='char-instruction'/>
<element name='fallback' type='xsl:template-with-space' equivClass='char-instruction'/>
<element name='comment' type='xsl:char-template-with-space' equivClass='instruction' />
<element name='processing-instruction' type='xsl:processing-instruction' equivClass='instruction' />
<element name='attribute' type='xsl:attribute' equivClass='instruction' />
<element name='element' type='xsl:element' equivClass='instruction' />
<complexType name='stylesheet' content='elementOnly' >
<element name='import' type='xsl:import-or-include' minOccurs='0' maxOccurs='unbounded' />
<choice minOccurs='0' maxOccurs='unbounded' >
<element name='include' type='import-or-include' />
<element name='strip-space' type='preserve-or-strip-space' />
<element name='preserve-space' type='preserve-or-strip-space' />
<element name='output' type='xsl:output' />
<element name='key' type='xsl:key' />
<element name='decimal-format' type='xsl:decimal-format' />
<element name='attribute-set' type='xsl:attribute-set' />
<element name='variable' type='variable-definition' />
<element name='param' type='variable-definition' />
<element name='template' type='xsl:named-template' />
<element name='namespace-alias' type='xsl:namespace-alias' />
<any namespace='##other' />
</choice>
<attribute name='version' type='string' use='required' />
<attribute name='extension-element-prefixes' type='string' />
<attribute name='exclude-result-prefixes' type='string' />
<attribute name='use-attribute-sets' type='xsl:QNames' />
</complexType>
<element name='stylesheet' type='xsl:stylesheet' />
<element name='transform' type='xsl:stylesheet' />
</schema>