blob: 9da1ba392c05977418eb02c068c1483833fa5674 [file] [log] [blame]
<?xml version="1.0"?>
<!--
*******************************************************************************
* Copyright (c) 2001, 2007 - W3C, Standards for Technology in Automotive Retail,
* and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* David Carver - 20071228 - STAR - Updated to XML Schemas 2001 1.0
* Note this schemas is a modified version of the schema for XSLT 2.0, it has
* been stripped of all XSLT 2.0 additions, to bring it in line with the XSLT 1.0
* specification.
* The original version may be found at http://www.w3.org/2007/schema-for-xslt20.xsd
* The original W3C copyright notice is included:
* David Carver - 20080330 - STAR - bug 224819 - changed procesContents from lax to skip
* David Carver - STAR - bug 293902 - correct exclude-result-prefix to use prefix-list
*******************************************************************************
*******************************************************************************
* W3C® SOFTWARE NOTICE AND LICENSE
* http://www.w3.org/Consortium/Legal/copyright-software-19980720
*
* Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en Automatique,
* Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* This W3C work (including software, documents, or other related items) is being
* provided by the copyright holders under the following license. By obtaining,
* using and/or copying this work, you (the licensee) agree that you have read,
* understood, and will comply with the following terms and conditions:
*
* Permission to use, copy, modify, and distribute this software and its
* documentation, with or without modification, for any purpose and without fee
* or royalty is hereby granted, provided that you include the following on ALL copies
* of the software and documentation or portions thereof, including modifications, that
* you make:
*
* 1. The full text of this NOTICE in a location viewable to users of the redistributed
* or derivative work.
* 2. Any pre-existing intellectual property disclaimers, notices, or terms and
* conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/"
* 3. Notice of any changes or modifications to the W3C files, including the date changes
* were made. (We recommend you provide URIs to the location from which the code is
* derived.)
*
* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
* REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO,
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF
* THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
* TRADEMARKS OR OTHER RIGHTS.
*
* COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL
* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
*
* The name and trademarks of copyright holders may NOT be used in advertising or publicity
* pertaining to the software without specific, written prior permission. Title to copyright
* in this software and any associated documentation will at all times remain with copyright
* holders.
********************************************************************************************
-->
<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>
</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"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<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:anyAttribute namespace="##other" processContents="skip"/>
</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:generic-element-type">
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="sequence-constructor">
<xs:complexContent mixed="true">
<xs:extension base="xsl:generic-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:generic-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="apply-imports" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
This command applies template rule from an imported style sheet.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="xsl:element-only-versioned-element-type"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="apply-templates" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Applies template rules based on a given XPath selection criteria. If no template
is found the built in templates are used.
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Specifies the XPath criteria to be used to apply the templates.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="mode" type="xsl:mode">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Specifies the type of template to be used if there is more than
one way in which to process the given criteria.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="attribute" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Defines an attribute that will be put in the result set.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="name" type="xsl:avt" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the attribute to be created.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="namespace" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The namespace for the attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="attribute-set" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Defines a group of attributes that will be created and can be reused
by other portions of the stylesheet during processing. These attributes
will appear on the resulting document when used.
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. Name of the attribute set.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="use-attribute-sets" type="xsl:QNames" default="">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
A list of attributes-sets separated by spaces to be used in this
attribute set.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="call-template" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Specifies the name of a template to be called. A called template
is only executed when it is called. It is not executed directly by
an apply-templates command.
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the template to be called.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="choose" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Choose is the beginning of a When/Otherwise combination. It is
the way to implement case selection of If/Then/ElseIf type logical
processing.
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Creates a comment node in the result document.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="copy" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Copy creates a duplicate of the current node being processed. It
does not copy the attributes or children nodes. See copy-of for
copying attributes and children nodes.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="use-attribute-sets" type="xsl:QNames" default="">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. A space separated list of attributes sets to apply to the
result document.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="copy-of" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Creates a copy-of the current node and all attributes, and children nodes.
It copies the nodes specified by the XPath selection criteria.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:generic-element-type">
<xs:attribute name="select" type="xsl:expression" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. XPath expressions that select the nodes to be copied.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="decimal-format" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Defines the output format to be used when converting numbers into strings when
used with the XPath function format-number().
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="xsl:element-only-versioned-element-type">
<xs:attribute name="name" type="xsl:QName">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The unique name for this format.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="decimal-separator" type="xsl:char" default=".">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to use to represent a decimal point.
The default value is a period.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="grouping-separator" type="xsl:char" default=",">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to seperate thousands. The
default is a comma.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="infinity" type="xs:string" default="Infinity">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The string to be used to represent infinity. The default
is Infinity.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="minus-sign" type="xsl:char" default="-">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to represent negative numbers.
The default is the minus sign.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NaN" type="xs:string" default="NaN">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The string to be used when the input is Not a Number.
The default is NaN.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="percent" type="xsl:char" default="%">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to represent a percent.
The default is a percent sign.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="per-mille" type="xsl:char" default="&#x2030;">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to represet per thousand.
The default is &#x2030;
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="zero-digit" type="xsl:char" default="0">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to represent the digit zero.
The default is the number zero.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="digit" type="xsl:char" default="#">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to indicated where a digit
is required. The default values is # character.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="pattern-separator" type="xsl:char" default=";">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to separate positive and
negative sub-patterns in a pattern. The default is a semi-colon.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="element" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Creates an element in the result document.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="name" type="xsl:avt" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the element to be created.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="namespace" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The namespace the element belongs.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="use-attribute-sets" type="xsl:QNames" default="">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. A space separated list of attribute-set names to
be included on the element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="fallback" substitutionGroup="xsl:instruction" type="xsl:sequence-constructor">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Specifies alternate code to be run if the XSLT processor doesn't understand
a particular xsl element.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="for-each" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
A looping command that processes each node returned from the
XPath selection criteria.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:generic-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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The XPath selection criteria to be used to retrieve the
node set to be processed by the loop.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="if" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
A logical construct, that will only be applied when the XPath expression
test returns true. It does not support a Else statement, see Choose
for implementing If/Then/ElseIf logic.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="test" type="xsl:expression" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The XPath expression to test the variable or node against.
The statements nested will only be executed if the test returns
true.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="import">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Allows the inclusion of one stylesheet into another. If there are
templates that are the same in the parent stylesheet that are in the
stylesheet being imported, the parent stylesheet's templates will
take precedence.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="xsl:element-only-versioned-element-type">
<xs:attribute name="href" type="xs:anyURI" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The URI for the stylesheet. This is either a relative
or physical URI. If it is relative, it is relative to the location
of the stylesheet.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="include" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Include brings in another stylesheet into the current one. Unlike
the Import statement, the stylesheet templates have the same precedence
as the one being included in to.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="xsl:element-only-versioned-element-type">
<xs:attribute name="href" type="xs:anyURI" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The URI for the stylesheet. This is either a relative
or physical URI. If it is relative, it is relative to the location
of the stylesheet.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="key" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
A key is a way to index a set of nodes to be retrieved later by the XPath
key() function. It allows faster access to a series of nodes based off of a
unique key with in a list of nodes.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="name" type="xsl:QName" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the key to be created.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="match" type="xsl:pattern" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Defines the XPath expression to which the nodes will
be applied.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="use" type="xsl:expression" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The value of the key for each of the nodes.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="message" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Writes a message to the output, usually stdout or stderro. Typically
used to report errors during processing.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="terminate" type="xsl:avt" default="no">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Indicates whether processing should be ended after
producing the message. The default value is no.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="namespace-alias" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Allows replacing of a particular namespace from the style sheet to a different
namespace when writing the result document.
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. Specifies the name of the prefix you want to change.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="result-prefix" type="xsl:prefix-or-default" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. Specifies the name of the prefix the result is to use.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="number" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Used to determine the integer position of the current node. Also used
in formatting a number.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:generic-element-type">
<xs:attribute name="value" type="xsl:expression">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. A number provided by the implementor instead of
a system generated number. The position() xpath function can
be used as well.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="level" type="xsl:level" default="single">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Specifies how the sequence number is assigned. Valid values
are single (default), multiple, and any.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="count" type="xsl:pattern">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. An XPath expression that indicates what nodes are to be
counted.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="from" type="xsl:pattern">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. An XPath expression that indicates where counting will start.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="format" type="xsl:avt" default="1">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The format string in which the number is to be formatted.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="lang" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The language code used to indicate what spoken language is
to be used for the format string.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="letter-value" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Specifies whether the number is alphabetical or traditional.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="grouping-separator" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The character to be used to seperate a group of numbers.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="grouping-size" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. A number indicating the number of digits in a group. The
default is 3.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="otherwise" type="xsl:sequence-constructor">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Otherwise is used to indicate the default action when none of the
When tests are true, in a Choose statement.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="output" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Specifies the format for the result document.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:generic-element-type">
<xs:attribute name="method" type="xsl:method">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Valid values are xml, html, and text.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="cdata-section-elements" type="xsl:QNames">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. A space separated list of elements whose content should
be wrapped with CDATA.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="doctype-public" type="xs:string">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Sets the value of the Public doctype attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="doctype-system" type="xs:string">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Sets the value of the System doctype attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="encoding" type="xs:string">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Specifies the type of encoding to use. i.e. UTF-8, UTF-16, etc.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="indent" type="xsl:yes-or-no">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Should the result document be pretty-printed.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="media-type" type="xs:string">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The mime type of the result document. i.e. text/xml
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="omit-xml-declaration" type="xsl:yes-or-no">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Whether the xml declation should be created in the
result document.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="standalone" type="xsl:yes-or-no-or-omit">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Indicates if a standalone declartion should occcur in the
result document.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="version" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Sets the W3C version number to be used with the
result document. Only used for HTML or XML output.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Used to declare a local or global parameter.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="name" type="xsl:QName" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the parameter to be created.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="select" type="xsl:expression">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. An XPath expression to be used to populate the parameter
if nothing is passed to it.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="preserve-space" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Indicates the elements that are to have white space preserved when
creating the result document.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="xsl:element-only-versioned-element-type">
<xs:attribute name="elements" type="xsl:nametests" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. A space seperated list of elements in which
white space is significant and should be preserved when
creating the result document.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="processing-instruction" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Creates a processing instruction in the result document.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="name" type="xsl:avt" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the processing instruction to be created.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="sort">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Sorts the output of the node set.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="select" type="xsl:expression">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Specifies the XPath expression to be used to create the nodeset
to be sorted.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="lang" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The language code to be used for sorting.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="data-type" type="xsl:avt" default="text">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The type of data that is being sorted. The default
is text.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="order" type="xsl:avt" default="ascending">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The order in which the data is to be sorted. The
default is ascending.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="case-order" type="xsl:avt">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Specifies if upper or lowercase letters are to
be sorted first.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="strip-space" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Defines which elements are to have white space stripped when
writing the result document.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="xsl:element-only-versioned-element-type">
<xs:attribute name="elements" type="xsl:nametests" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. A space separeated list of elements are to have
white space removed when writing the result document.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="stylesheet" substitutionGroup="xsl:transform">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
The root element of a style sheet. Also see the transform element.
Either stylesheet or transform can be used. Typically stylsheet is
used.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="template" substitutionGroup="xsl:declaration">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
A template contains processing instructions and commands for nodes in the
input document that match the specified XPath expression.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:generic-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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. An XPath expression or expressions that this template will
be applied to. Note if this is omitted, then a name attribute must
be used. Either a namoe or a match are to be used, but not both.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="priority" type="xs:decimal">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Indicates the numeric priortity for processing the
template.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="mode" type="xsl:modes">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The name of the mode for this template. Used to match
up with the apply-templates mode attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xsl:QName">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The name of a called template. Note that if name is
not used, then match must be used. You can have one or the other
but not both.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="text-element-base-type">
<xs:simpleContent>
<xs:restriction base="xsl:generic-element-type">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
<xs:element name="text" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Writes text data to the output. i.e. #PCData
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Indicates if non friendly html and xml content should be converted
to their entity types.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:complexType name="transform-element-base-type">
<xs:complexContent>
<xs:extension base="xsl:element-only-versioned-element-type">
<xs:attribute name="version" type="xs:decimal" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The version number corresponding the the
XSLT specification being used. For XSLT 1.0, this will
be 1.0.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="exclude-result-prefixes" type="xsl:prefix-list" use="optional">
<xs:annotation>
<xs:documentation source="http:/www.w3.org/TR/xslt">
Optional. A list of namespace prefixes to exclude from the result document. #default excludes the default namespace.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="extension-element-prefixes" type="xsl:prefix-list" use="optional">
<xs:annotation>
<xs:documentation source="http:/www.w3.org/TR/xslt">
Optional. A list of extension namespace prefixes. This is used to identify namespaces that
contain XSLT processor extensions. #default can be used to specify the default namespace.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="transform">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
The root element of a style sheet. Also see the stylesheet element.
Either stylesheet or transform can be used. Typically stylsheet is
used.
</xs:documentation>
</xs:annotation>
<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="skip"/> <!-- weaker than XSLT 1.0 -->
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. A unique ID for the stylesheet.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="value-of" substitutionGroup="xsl:instruction">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Used to pull the data value from the selected node or XPath expression.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="select" type="xsl:expression" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The XPath expression or current node to be used
to pull the data from.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="disable-output-escaping" type="xsl:yes-or-no" default="no">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. Whether non-xml friendly data should be entity escaped.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="variable">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Declares a local or global variable to be used during processing.
The contents of variable can be populated by either a series of
XSLT commands or XPath expressions.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="name" type="xsl:QName" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the variable. This is how the
variable is accessed later in the stylesheet.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="select" type="xsl:expression" use="optional">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. The XPath expression in which the variable is
populated from. This specifies where the variable is to get
it's data value from.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="when">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
A conditional statement similiar to an if statement, used to test
if a particular expression is true or false. Use with the Choose and
Other wise elements.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="test" type="xsl:expression" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
An XPath expression that tests to true or false. If true
the statements within are executed.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="with-param">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Defines the value of a parameter to be passed to a called template.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="true">
<xs:extension base="xsl:sequence-constructor">
<xs:attribute name="name" type="xsl:QName" use="required">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Required. The name of the parameter to be set. This
must exist in the template that is being called.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="select" type="xsl:expression">
<xs:annotation>
<xs:documentation source="http://www.w3.org/TR/xslt">
Optional. An XPath expression that is used to set
the value for the parameter being passed to a template.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</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="skip"/>
<xs:any namespace="##local" processContents="skip"/>
</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>