1134 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			1134 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" targetNamespace="http://www.w3.org/1999/XSL/Transform" elementFormDefault="qualified">
 | |
| 
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| <xs:annotation>
 | |
|   <xs:documentation>
 | |
|   
 | |
|     This is a schema for XSLT 2.0 stylesheets.
 | |
|     
 | |
|     It defines all the elements that appear in the XSLT namespace; it also
 | |
|     provides hooks that allow the inclusion of user-defined literal result elements,
 | |
|     extension instructions, and top-level data elements.
 | |
|     
 | |
|     The schema is derived (with kind permission) from a schema for XSLT 1.0 stylesheets
 | |
|     produced by Asir S Vedamuthu of WebMethods Inc.
 | |
|     
 | |
|     This schema is available for use under the conditions of the W3C Software License
 | |
|     published at http://www.w3.org/Consortium/Legal/copyright-software-19980720
 | |
|     
 | |
|     The schema is organized as follows:
 | |
|     
 | |
|     PART A: definitions of complex types and model groups used as the basis 
 | |
|             for element definitions
 | |
|     PART B: definitions of individual XSLT elements
 | |
|     PART C: definitions for literal result elements
 | |
|     PART D: definitions of simple types used in attribute definitions
 | |
|     
 | |
|     This schema does not attempt to define all the constraints that apply to a valid
 | |
|     XSLT 2.0 stylesheet module. It is the intention that all valid stylesheet modules 
 | |
|     should conform to this schema; however, the schema is non-normative and in the event 
 | |
|     of any conflict, the text of the Recommendation takes precedence.
 | |
| 
 | |
|     This schema does not implement the special rules that apply when a stylesheet
 | |
|     has sections that use forwards-compatible-mode. In this mode, setting version="3.0"
 | |
|     allows elements from the XSLT namespace to be used that are not defined in XSLT 2.0.
 | |
| 
 | |
|     Simplified stylesheets (those with a literal result element as the outermost element)
 | |
|     will validate against this schema only if validation starts in lax mode.
 | |
|     
 | |
|     This version is dated 2007-03-16
 | |
|     Authors: Michael H Kay, Saxonica Limited
 | |
|              Jeni Tennison, Jeni Tennison Consulting Ltd.
 | |
|              
 | |
|     2007-03-15: added xsl:document element
 | |
|                 revised xsl:sequence element
 | |
|                 see http://www.w3.org/Bugs/Public/show_bug.cgi?id=4237         
 | |
|     
 | |
|   </xs:documentation>
 | |
| </xs:annotation>   
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
|  
 | |
| <!--
 | |
| The declaration of xml:space and xml:lang may need to be commented out because
 | |
| of problems processing the schema using various tools
 | |
| -->
 | |
|       
 | |
| <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
 | |
| 
 | |
| <!-- 
 | |
|     An XSLT stylesheet may contain an in-line schema within an xsl:import-schema element,
 | |
|     so the Schema for schemas needs to be imported
 | |
| -->
 | |
|   
 | |
| <xs:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="http://www.w3.org/2001/XMLSchema.xsd"/>
 | |
| 
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| <xs:annotation>
 | |
|   <xs:documentation>
 | |
|     PART A: definitions of complex types and model groups used as the basis 
 | |
|             for element definitions
 | |
|   </xs:documentation>
 | |
| </xs:annotation>   
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| 
 | |
| <xs:complexType name="generic-element-type" mixed="true">
 | |
|   <xs:attribute name="default-collation" type="xsl:uri-list"/>
 | |
|   <xs:attribute name="exclude-result-prefixes" type="xsl:prefix-list-or-all"/>
 | |
|   <xs:attribute name="extension-element-prefixes" type="xsl:prefix-list"/>
 | |
|   <xs:attribute name="use-when" type="xsl:expression"/>
 | |
|   <xs:attribute name="xpath-default-namespace" type="xs:anyURI"/>
 | |
|   <xs:anyAttribute namespace="##other" processContents="lax"/>
 | |
| </xs:complexType>
 | |
| 
 | |
| <xs:complexType name="versioned-element-type" mixed="true">
 | |
|   <xs:complexContent>
 | |
|     <xs:extension base="xsl:generic-element-type">    
 | |
|       <xs:attribute name="version" type="xs:decimal" use="optional"/>
 | |
|     </xs:extension>
 | |
|   </xs:complexContent>
 | |
| </xs:complexType>
 | |
| 
 | |
| <xs:complexType name="element-only-versioned-element-type" mixed="false">
 | |
|   <xs:complexContent>
 | |
|     <xs:restriction base="xsl:versioned-element-type">
 | |
|       <xs:anyAttribute namespace="##other" processContents="lax"/>
 | |
|     </xs:restriction>
 | |
|   </xs:complexContent>
 | |
| </xs:complexType>
 | |
| 
 | |
| <xs:complexType name="sequence-constructor">
 | |
|   <xs:complexContent mixed="true">
 | |
|     <xs:extension base="xsl:versioned-element-type">    
 | |
|       <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
 | |
|     </xs:extension>
 | |
|   </xs:complexContent>
 | |
| </xs:complexType>
 | |
| 
 | |
| <xs:group name="sequence-constructor-group">
 | |
|   <xs:choice>
 | |
|     <xs:element ref="xsl:variable"/>
 | |
|     <xs:element ref="xsl:instruction"/>
 | |
|     <xs:group ref="xsl:result-elements"/>
 | |
|   </xs:choice>
 | |
| </xs:group>
 | |
| 
 | |
| <xs:element name="declaration" type="xsl:generic-element-type" abstract="true"/>
 | |
| 
 | |
| <xs:element name="instruction" type="xsl:versioned-element-type" abstract="true"/>
 | |
| 
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| <xs:annotation>
 | |
|   <xs:documentation>
 | |
|     PART B: definitions of individual XSLT elements    
 | |
|     Elements are listed in alphabetical order.    
 | |
|   </xs:documentation>
 | |
| </xs:annotation>   
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| 
 | |
| <xs:element name="analyze-string" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:matching-substring" minOccurs="0"/>
 | |
|           <xs:element ref="xsl:non-matching-substring" minOccurs="0"/>
 | |
|           <xs:element ref="xsl:fallback" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="select" type="xsl:expression" use="required"/>
 | |
|         <xs:attribute name="regex" type="xsl:avt" use="required"/>
 | |
|         <xs:attribute name="flags" type="xsl:avt" default=""/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="apply-imports" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:with-param" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="apply-templates" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:choice minOccurs="0" maxOccurs="unbounded">
 | |
|           <xs:element ref="xsl:sort"/>
 | |
|           <xs:element ref="xsl:with-param"/>
 | |
|         </xs:choice>
 | |
|         <xs:attribute name="select" type="xsl:expression" default="child::node()"/>
 | |
|         <xs:attribute name="mode" type="xsl:mode"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="attribute" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:avt" use="required"/>
 | |
|         <xs:attribute name="namespace" type="xsl:avt"/>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|         <xs:attribute name="separator" type="xsl:avt"/>   
 | |
|         <xs:attribute name="type" type="xsl:QName"/>
 | |
|         <xs:attribute name="validation" type="xsl:validation-type"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>        
 | |
| 
 | |
| <xs:element name="attribute-set" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence minOccurs="0" maxOccurs="unbounded">
 | |
|           <xs:element ref="xsl:attribute"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|         <xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="call-template" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:with-param" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="character-map" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:output-character" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|         <xs:attribute name="use-character-maps" type="xsl:QNames" default=""/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="choose" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:when" maxOccurs="unbounded"/>
 | |
|           <xs:element ref="xsl:otherwise" minOccurs="0"/>
 | |
|         </xs:sequence>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="comment" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="copy" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="copy-namespaces" type="xsl:yes-or-no" default="yes"/>
 | |
|         <xs:attribute name="inherit-namespaces" type="xsl:yes-or-no" default="yes"/>
 | |
|         <xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
 | |
|         <xs:attribute name="type" type="xsl:QName"/>
 | |
|         <xs:attribute name="validation" type="xsl:validation-type"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="copy-of" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:versioned-element-type">
 | |
|         <xs:attribute name="select" type="xsl:expression" use="required"/>
 | |
|         <xs:attribute name="copy-namespaces" type="xsl:yes-or-no" default="yes"/>
 | |
|         <xs:attribute name="type" type="xsl:QName"/>
 | |
|         <xs:attribute name="validation" type="xsl:validation-type"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="document" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="type" type="xsl:QName"/>
 | |
|         <xs:attribute name="validation" type="xsl:validation-type"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="decimal-format" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:attribute name="name" type="xsl:QName"/>
 | |
|         <xs:attribute name="decimal-separator" type="xsl:char" default="."/>
 | |
|         <xs:attribute name="grouping-separator" type="xsl:char" default=","/>
 | |
|         <xs:attribute name="infinity" type="xs:string" default="Infinity"/>
 | |
|         <xs:attribute name="minus-sign" type="xsl:char" default="-"/>
 | |
|         <xs:attribute name="NaN" type="xs:string" default="NaN"/>
 | |
|         <xs:attribute name="percent" type="xsl:char" default="%"/>
 | |
|         <xs:attribute name="per-mille" type="xsl:char" default="‰"/>
 | |
|         <xs:attribute name="zero-digit" type="xsl:char" default="0"/>
 | |
|         <xs:attribute name="digit" type="xsl:char" default="#"/>
 | |
|         <xs:attribute name="pattern-separator" type="xsl:char" default=";"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="element" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType mixed="true">
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:avt" use="required"/>
 | |
|         <xs:attribute name="namespace" type="xsl:avt"/>
 | |
|         <xs:attribute name="inherit-namespaces" type="xsl:yes-or-no" default="yes"/>
 | |
|         <xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
 | |
|         <xs:attribute name="type" type="xsl:QName"/>
 | |
|         <xs:attribute name="validation" type="xsl:validation-type"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="fallback" substitutionGroup="xsl:instruction" type="xsl:sequence-constructor"/>
 | |
| 
 | |
| <xs:element name="for-each" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:sort" minOccurs="0" maxOccurs="unbounded"/>
 | |
|           <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="select" type="xsl:expression" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="for-each-group" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:sort" minOccurs="0" maxOccurs="unbounded"/>
 | |
|           <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="select" type="xsl:expression" use="required"/>
 | |
|         <xs:attribute name="group-by" type="xsl:expression"/>
 | |
|         <xs:attribute name="group-adjacent" type="xsl:expression"/>            
 | |
|         <xs:attribute name="group-starting-with" type="xsl:pattern"/>            
 | |
|         <xs:attribute name="group-ending-with" type="xsl:pattern"/>            
 | |
|         <xs:attribute name="collation" type="xs:anyURI"/>            
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="function" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
 | |
|           <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|         <xs:attribute name="override" type="xsl:yes-or-no" default="yes"/>
 | |
|         <xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="if" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="test" type="xsl:expression" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="import">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:attribute name="href" type="xs:anyURI" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="import-schema" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xs:schema" minOccurs="0" maxOccurs="1"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="namespace" type="xs:anyURI"/>
 | |
|         <xs:attribute name="schema-location" type="xs:anyURI"/>                  
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="include" substitutionGroup="xsl:declaration">
 | |
|     <xs:complexType>
 | |
|       <xs:complexContent>
 | |
|         <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|           <xs:attribute name="href" type="xs:anyURI" use="required"/>
 | |
|         </xs:extension>
 | |
|       </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="key" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|         <xs:attribute name="match" type="xsl:pattern" use="required"/>
 | |
|         <xs:attribute name="use" type="xsl:expression"/>
 | |
|         <xs:attribute name="collation" type="xs:anyURI"/>               
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="matching-substring" type="xsl:sequence-constructor"/>
 | |
| 
 | |
| <xs:element name="message" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|         <xs:attribute name="terminate" type="xsl:avt" default="no"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="namespace" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:avt" use="required"/>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="namespace-alias" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:attribute name="stylesheet-prefix" type="xsl:prefix-or-default" use="required"/>
 | |
|         <xs:attribute name="result-prefix" type="xsl:prefix-or-default" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="next-match" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:choice minOccurs="0" maxOccurs="unbounded">
 | |
|           <xs:element ref="xsl:with-param"/>
 | |
|           <xs:element ref="xsl:fallback"/>
 | |
|         </xs:choice>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="non-matching-substring" type="xsl:sequence-constructor"/>
 | |
| 
 | |
| <xs:element name="number" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:versioned-element-type">
 | |
|         <xs:attribute name="value" type="xsl:expression"/>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|         <xs:attribute name="level" type="xsl:level" default="single"/>
 | |
|         <xs:attribute name="count" type="xsl:pattern"/>
 | |
|         <xs:attribute name="from" type="xsl:pattern"/>
 | |
|         <xs:attribute name="format" type="xsl:avt" default="1"/>
 | |
|         <xs:attribute name="lang" type="xsl:avt"/>
 | |
|         <xs:attribute name="letter-value" type="xsl:avt"/>
 | |
|         <xs:attribute name="ordinal" type="xsl:avt"/>        
 | |
|         <xs:attribute name="grouping-separator" type="xsl:avt"/>
 | |
|         <xs:attribute name="grouping-size" type="xsl:avt"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="otherwise" type="xsl:sequence-constructor"/>
 | |
| 
 | |
| <xs:element name="output" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:generic-element-type">
 | |
|         <xs:attribute name="name" type="xsl:QName"/>
 | |
|         <xs:attribute name="method" type="xsl:method"/>
 | |
|         <xs:attribute name="byte-order-mark" type="xsl:yes-or-no"/>
 | |
|         <xs:attribute name="cdata-section-elements" type="xsl:QNames"/>
 | |
|         <xs:attribute name="doctype-public" type="xs:string"/>
 | |
|         <xs:attribute name="doctype-system" type="xs:string"/>
 | |
|         <xs:attribute name="encoding" type="xs:string"/>
 | |
|         <xs:attribute name="escape-uri-attributes" type="xsl:yes-or-no"/>
 | |
|         <xs:attribute name="include-content-type" type="xsl:yes-or-no"/>
 | |
|         <xs:attribute name="indent" type="xsl:yes-or-no"/>
 | |
|         <xs:attribute name="media-type" type="xs:string"/>
 | |
|         <xs:attribute name="normalization-form" type="xs:NMTOKEN"/>
 | |
|         <xs:attribute name="omit-xml-declaration" type="xsl:yes-or-no"/>
 | |
|         <xs:attribute name="standalone" type="xsl:yes-or-no-or-omit"/>
 | |
|         <xs:attribute name="undeclare-prefixes" type="xsl:yes-or-no"/>
 | |
|         <xs:attribute name="use-character-maps" type="xsl:QNames"/>
 | |
|         <xs:attribute name="version" type="xs:NMTOKEN"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="output-character">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:attribute name="character" type="xsl:char" use="required"/>
 | |
|         <xs:attribute name="string" type="xs:string" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="param">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|         <xs:attribute name="as" type="xsl:sequence-type"/>
 | |
|         <xs:attribute name="required" type="xsl:yes-or-no"/>
 | |
|         <xs:attribute name="tunnel" type="xsl:yes-or-no"/>        
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="perform-sort" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:sort" minOccurs="1" maxOccurs="unbounded"/>
 | |
|           <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="preserve-space" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:attribute name="elements" type="xsl:nametests" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="processing-instruction" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:avt" use="required"/>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="result-document" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="format" type="xsl:avt"/>
 | |
|         <xs:attribute name="href" type="xsl:avt"/>
 | |
|         <xs:attribute name="type" type="xsl:QName"/>
 | |
|         <xs:attribute name="validation" type="xsl:validation-type"/>
 | |
|         <xs:attribute name="method" type="xsl:avt"/>
 | |
|         <xs:attribute name="byte-order-mark" type="xsl:avt"/>
 | |
|         <xs:attribute name="cdata-section-elements" type="xsl:avt"/>
 | |
|         <xs:attribute name="doctype-public" type="xsl:avt"/>
 | |
|         <xs:attribute name="doctype-system" type="xsl:avt"/>
 | |
|         <xs:attribute name="encoding" type="xsl:avt"/>
 | |
|         <xs:attribute name="escape-uri-attributes" type="xsl:avt"/>
 | |
|         <xs:attribute name="include-content-type" type="xsl:avt"/>
 | |
|         <xs:attribute name="indent" type="xsl:avt"/>
 | |
|         <xs:attribute name="media-type" type="xsl:avt"/>
 | |
|         <xs:attribute name="normalization-form" type="xsl:avt"/>
 | |
|         <xs:attribute name="omit-xml-declaration" type="xsl:avt"/>
 | |
|         <xs:attribute name="standalone" type="xsl:avt"/>
 | |
|         <xs:attribute name="undeclare-prefixes" type="xsl:avt"/>
 | |
|         <xs:attribute name="use-character-maps" type="xsl:QNames"/>
 | |
|         <xs:attribute name="output-version" type="xsl:avt"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="sequence" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:sequence minOccurs="0" maxOccurs="unbounded">
 | |
|           <xs:element ref="xsl:fallback"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="sort">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="select" type="xsl:expression"/>  
 | |
|         <xs:attribute name="lang" type="xsl:avt"/>        
 | |
|         <xs:attribute name="data-type" type="xsl:avt" default="text"/>        
 | |
|         <xs:attribute name="order" type="xsl:avt" default="ascending"/>        
 | |
|         <xs:attribute name="case-order" type="xsl:avt"/>
 | |
|         <xs:attribute name="collation" type="xsl:avt"/>
 | |
|         <xs:attribute name="stable" type="xsl:yes-or-no"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="strip-space" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:element-only-versioned-element-type">
 | |
|         <xs:attribute name="elements" type="xsl:nametests" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="stylesheet" substitutionGroup="xsl:transform"/>
 | |
| 
 | |
| <xs:element name="template" substitutionGroup="xsl:declaration">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:versioned-element-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
 | |
|           <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="match" type="xsl:pattern"/>
 | |
|         <xs:attribute name="priority" type="xs:decimal"/>
 | |
|         <xs:attribute name="mode" type="xsl:modes"/>
 | |
|         <xs:attribute name="name" type="xsl:QName"/>
 | |
|         <xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:complexType name="text-element-base-type">
 | |
|   <xs:simpleContent>
 | |
|     <xs:restriction base="xsl:versioned-element-type">
 | |
|       <xs:simpleType>
 | |
|         <xs:restriction base="xs:string"/>
 | |
|       </xs:simpleType>
 | |
|       <xs:anyAttribute namespace="##other" processContents="lax"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleContent>
 | |
| </xs:complexType>
 | |
| 
 | |
| <xs:element name="text" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:simpleContent>
 | |
|       <xs:extension base="xsl:text-element-base-type">
 | |
|         <xs:attribute name="disable-output-escaping" type="xsl:yes-or-no" default="no"/>
 | |
|       </xs:extension>
 | |
|     </xs:simpleContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:complexType name="transform-element-base-type">
 | |
|   <xs:complexContent>
 | |
|     <xs:restriction base="xsl:element-only-versioned-element-type">
 | |
|       <xs:attribute name="version" type="xs:decimal" use="required"/>
 | |
|       <xs:anyAttribute namespace="##other" processContents="lax"/>
 | |
|     </xs:restriction>
 | |
|   </xs:complexContent>
 | |
| </xs:complexType>
 | |
| 
 | |
| <xs:element name="transform">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent>
 | |
|       <xs:extension base="xsl:transform-element-base-type">
 | |
|         <xs:sequence>
 | |
|           <xs:element ref="xsl:import" minOccurs="0" maxOccurs="unbounded"/>
 | |
|           <xs:choice minOccurs="0" maxOccurs="unbounded">
 | |
|             <xs:element ref="xsl:declaration"/>
 | |
|             <xs:element ref="xsl:variable"/>
 | |
|             <xs:element ref="xsl:param"/>              
 | |
|             <xs:any namespace="##other" processContents="lax"/> <!-- weaker than XSLT 1.0 -->
 | |
|           </xs:choice>
 | |
|         </xs:sequence>
 | |
|         <xs:attribute name="id" type="xs:ID"/>
 | |
|         <xs:attribute name="default-validation" type="xsl:validation-strip-or-preserve" default="strip"/>
 | |
|         <xs:attribute name="input-type-annotations" type="xsl:input-type-annotations-type" default="unspecified"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="value-of" substitutionGroup="xsl:instruction">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|         <xs:attribute name="separator" type="xsl:avt"/>            
 | |
|         <xs:attribute name="disable-output-escaping" type="xsl:yes-or-no" default="no"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="variable">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|         <xs:attribute name="select" type="xsl:expression" use="optional"/>
 | |
|         <xs:attribute name="as" type="xsl:sequence-type" use="optional"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="when">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="test" type="xsl:expression" use="required"/>
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <xs:element name="with-param">
 | |
|   <xs:complexType>
 | |
|     <xs:complexContent mixed="true">
 | |
|       <xs:extension base="xsl:sequence-constructor">
 | |
|         <xs:attribute name="name" type="xsl:QName" use="required"/>
 | |
|         <xs:attribute name="select" type="xsl:expression"/>
 | |
|         <xs:attribute name="as" type="xsl:sequence-type"/>
 | |
|         <xs:attribute name="tunnel" type="xsl:yes-or-no"/>   
 | |
|       </xs:extension>
 | |
|     </xs:complexContent>
 | |
|   </xs:complexType>
 | |
| </xs:element>
 | |
| 
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| <xs:annotation>
 | |
|   <xs:documentation>
 | |
|     PART C: definition of literal result elements
 | |
|     
 | |
|     There are three ways to define the literal result elements
 | |
|     permissible in a stylesheet.
 | |
|     
 | |
|     (a) do nothing. This allows any element to be used as a literal
 | |
|         result element, provided it is not in the XSLT namespace
 | |
|     
 | |
|     (b) declare all permitted literal result elements as members
 | |
|         of the xsl:literal-result-element substitution group
 | |
|         
 | |
|     (c) redefine the model group xsl:result-elements to accommodate
 | |
|         all permitted literal result elements.
 | |
|         
 | |
|     Literal result elements are allowed to take certain attributes
 | |
|     in the XSLT namespace. These are defined in the attribute group
 | |
|     literal-result-element-attributes, which can be included in the
 | |
|     definition of any literal result element.
 | |
|     
 | |
|   </xs:documentation>
 | |
| </xs:annotation>   
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| 
 | |
| <xs:element name="literal-result-element" abstract="true" type="xs:anyType"/>
 | |
| 
 | |
| <xs:attributeGroup name="literal-result-element-attributes">
 | |
|   <xs:attribute name="default-collation" form="qualified" type="xsl:uri-list"/>
 | |
|   <xs:attribute name="extension-element-prefixes" form="qualified" type="xsl:prefixes"/>
 | |
|   <xs:attribute name="exclude-result-prefixes" form="qualified" type="xsl:prefixes"/>
 | |
|   <xs:attribute name="xpath-default-namespace" form="qualified" type="xs:anyURI"/>    
 | |
|   <xs:attribute name="inherit-namespaces" form="qualified" type="xsl:yes-or-no" default="yes"/>
 | |
|   <xs:attribute name="use-attribute-sets" form="qualified" type="xsl:QNames" default=""/>
 | |
|   <xs:attribute name="use-when" form="qualified" type="xsl:expression"/>
 | |
|   <xs:attribute name="version" form="qualified" type="xs:decimal"/>
 | |
|   <xs:attribute name="type" form="qualified" type="xsl:QName"/>
 | |
|   <xs:attribute name="validation" form="qualified" type="xsl:validation-type"/>
 | |
| </xs:attributeGroup>
 | |
| 
 | |
| <xs:group name="result-elements">
 | |
|   <xs:choice>
 | |
|     <xs:element ref="xsl:literal-result-element"/>
 | |
|     <xs:any namespace="##other" processContents="lax"/>
 | |
|     <xs:any namespace="##local" processContents="lax"/>
 | |
|   </xs:choice>
 | |
| </xs:group>
 | |
| 
 | |
| 
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| <xs:annotation>
 | |
|   <xs:documentation>
 | |
|     PART D: definitions of simple types used in stylesheet attributes 
 | |
|   </xs:documentation>
 | |
| </xs:annotation>   
 | |
| <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 | |
| 
 | |
| <xs:simpleType name="avt">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       This type is used for all attributes that allow an attribute value template.
 | |
|       The general rules for the syntax of attribute value templates, and the specific
 | |
|       rules for each such attribute, are described in the XSLT 2.0 Recommendation.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:string"/>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="char">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       A string containing exactly one character.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:string">
 | |
|     <xs:length value="1"/>
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="expression">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       An XPath 2.0 expression.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:token">
 | |
|     <xs:pattern value=".+"/>
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="input-type-annotations-type">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       Describes how type annotations in source documents are handled.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:token">
 | |
|     <xs:enumeration value="preserve"/>
 | |
|     <xs:enumeration value="strip"/>   
 | |
|     <xs:enumeration value="unspecified"/>        
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="level">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       The level attribute of xsl:number: 
 | |
|       one of single, multiple, or any.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:NCName">
 | |
|     <xs:enumeration value="single"/>
 | |
|     <xs:enumeration value="multiple"/>
 | |
|     <xs:enumeration value="any"/>
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="mode">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       The mode attribute of xsl:apply-templates: 
 | |
|       either a QName, or #current, or #default.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:union memberTypes="xsl:QName">
 | |
|     <xs:simpleType>
 | |
|       <xs:restriction base="xs:token">
 | |
|         <xs:enumeration value="#default"/>
 | |
|         <xs:enumeration value="#current"/>
 | |
|       </xs:restriction>
 | |
|     </xs:simpleType>
 | |
|   </xs:union>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="modes">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       The mode attribute of xsl:template: 
 | |
|       either a list, each member being either a QName or #default;
 | |
|       or the value #all
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:union>
 | |
|     <xs:simpleType>
 | |
|       <xs:list>
 | |
|         <xs:simpleType>
 | |
|           <xs:union memberTypes="xsl:QName">
 | |
|             <xs:simpleType>
 | |
|               <xs:restriction base="xs:token">
 | |
|                 <xs:enumeration value="#default"/>
 | |
|               </xs:restriction>
 | |
|             </xs:simpleType>
 | |
|           </xs:union>
 | |
|         </xs:simpleType>
 | |
|       </xs:list>
 | |
|     </xs:simpleType>
 | |
|     <xs:simpleType>
 | |
|       <xs:restriction base="xs:token">
 | |
|         <xs:enumeration value="#all"/>
 | |
|       </xs:restriction>
 | |
|     </xs:simpleType>
 | |
|   </xs:union>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="nametests">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       A list of NameTests, as defined in the XPath 2.0 Recommendation.
 | |
|       Each NameTest is either a QName, or "*", or "prefix:*", or "*:localname"
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:list>
 | |
|     <xs:simpleType>
 | |
|       <xs:union memberTypes="xsl:QName">
 | |
|         <xs:simpleType>
 | |
|           <xs:restriction base="xs:token">
 | |
|             <xs:enumeration value="*"/>
 | |
|           </xs:restriction>
 | |
|         </xs:simpleType>
 | |
|         <xs:simpleType>
 | |
|           <xs:restriction base="xs:token">
 | |
|             <xs:pattern value="\i\c*:\*"/>
 | |
|             <xs:pattern value="\*:\i\c*"/>            
 | |
|           </xs:restriction>
 | |
|         </xs:simpleType>
 | |
|       </xs:union>
 | |
|     </xs:simpleType>
 | |
|   </xs:list>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="prefixes">
 | |
|   <xs:list itemType="xs:NCName"/>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="prefix-list-or-all">
 | |
|   <xs:union memberTypes="xsl:prefix-list">
 | |
|     <xs:simpleType>
 | |
|       <xs:restriction base="xs:token">
 | |
|         <xs:enumeration value="#all"/>
 | |
|       </xs:restriction>
 | |
|     </xs:simpleType>
 | |
|   </xs:union>
 | |
| </xs:simpleType>
 | |
|       
 | |
| <xs:simpleType name="prefix-list">
 | |
|   <xs:list itemType="xsl:prefix-or-default"/>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="method">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       The method attribute of xsl:output:
 | |
|       Either one of the recognized names "xml", "xhtml", "html", "text",
 | |
|       or a QName that must include a prefix.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:union>
 | |
|     <xs:simpleType>
 | |
|       <xs:restriction base="xs:NCName">
 | |
|         <xs:enumeration value="xml"/>
 | |
|         <xs:enumeration value="xhtml"/>
 | |
|         <xs:enumeration value="html"/>
 | |
|         <xs:enumeration value="text"/>
 | |
|       </xs:restriction>
 | |
|     </xs:simpleType>
 | |
|     <xs:simpleType>
 | |
|       <xs:restriction base="xsl:QName">
 | |
|         <xs:pattern value="\c*:\c*"/>
 | |
|       </xs:restriction>
 | |
|     </xs:simpleType>
 | |
|   </xs:union>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="pattern">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       A match pattern as defined in the XSLT 2.0 Recommendation.
 | |
|       The syntax for patterns is a restricted form of the syntax for
 | |
|       XPath 2.0 expressions.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xsl:expression"/>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="prefix-or-default">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       Either a namespace prefix, or #default.
 | |
|       Used in the xsl:namespace-alias element.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:union memberTypes="xs:NCName">
 | |
|     <xs:simpleType>
 | |
|       <xs:restriction base="xs:token">
 | |
|         <xs:enumeration value="#default"/>
 | |
|       </xs:restriction>
 | |
|     </xs:simpleType>
 | |
|   </xs:union>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="QNames">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       A list of QNames.
 | |
|       Used in the [xsl:]use-attribute-sets attribute of various elements,
 | |
|       and in the cdata-section-elements attribute of xsl:output
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:list itemType="xsl:QName"/>          
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="QName">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       A QName.
 | |
|       This schema does not use the built-in type xs:QName, but rather defines its own
 | |
|       QName type. Although xs:QName would define the correct validation on these attributes,
 | |
|       a schema processor would expand unprefixed QNames incorrectly when constructing the PSVI,
 | |
|       because (as defined in XML Schema errata) an unprefixed xs:QName is assumed to be in
 | |
|       the default namespace, which is not the correct assumption for XSLT.
 | |
|       The data type is defined as a restriction of the built-in type Name, restricted
 | |
|       so that it can only contain one colon which must not be the first or last character.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:Name">
 | |
|     <xs:pattern value="([^:]+:)?[^:]+"/>      
 | |
|   </xs:restriction>        
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="sequence-type">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       The description of a data type, conforming to the
 | |
|       SequenceType production defined in the XPath 2.0 Recommendation
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:token">
 | |
|     <xs:pattern value=".+"/>      
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="uri-list">
 | |
|   <xs:list itemType="xs:anyURI"/>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="validation-strip-or-preserve">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       Describes different ways of type-annotating an element or attribute.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xsl:validation-type">
 | |
|     <xs:enumeration value="preserve"/>
 | |
|     <xs:enumeration value="strip"/>    
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="validation-type">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       Describes different ways of type-annotating an element or attribute.
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:token">
 | |
|     <xs:enumeration value="strict"/>
 | |
|     <xs:enumeration value="lax"/>
 | |
|     <xs:enumeration value="preserve"/>
 | |
|     <xs:enumeration value="strip"/>    
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="yes-or-no">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       One of the values "yes" or "no".
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:token">
 | |
|     <xs:enumeration value="yes"/>
 | |
|     <xs:enumeration value="no"/>
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| <xs:simpleType name="yes-or-no-or-omit">
 | |
|   <xs:annotation>
 | |
|     <xs:documentation>
 | |
|       One of the values "yes" or "no" or "omit".
 | |
|     </xs:documentation>
 | |
|   </xs:annotation>
 | |
|   <xs:restriction base="xs:token">
 | |
|     <xs:enumeration value="yes"/>
 | |
|     <xs:enumeration value="no"/>
 | |
|     <xs:enumeration value="omit"/>
 | |
|   </xs:restriction>
 | |
| </xs:simpleType>
 | |
| 
 | |
| </xs:schema> | 
