This is an XSD 1.1 schema for XSLT 3.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.
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:
The schema has a number of limitations:
PART A: definitions of complex types and model groups used as the basis for element definitions
This complex type provides a generic supertype for all XSLT elements; it contains the definitions of the standard attributes that may appear on any element.
This complex type provides a generic supertype for all XSLT elements with the exception of xsl:output; it contains the definitions of the version attribute that may appear on any element.
The xsl:output does not use this definition because, although it has a version attribute, the syntax and semantics of this attribute are unrelated to the standard version attribute allowed on other elements.
This complex type provides a generic supertype for all XSLT elements that allow a sequence constructor as their content.
This complex type allows a sequence constructor and a select attribute.
This complex type allows a sequence constructor or a select attribute, but not both.
This complex type provides a generic supertype for all XSLT elements that allow a sequence constructor as their content.
PART B: definitions of individual XSLT elements Elements are listed in alphabetical order.
This element appears as a child of xsl:use-package and defines any variations that the containing package wishes to make to the visibility of components made available from a library package. For example, it may indicate that some of the public components in the library package are not to be made available to the containing package.
It is a static error if an xsl:sort element other than the first in a sequence of sibling xsl:sort elements has a stable attribute.
The type and validation attributes are mutually exclusive (if one is present, the other must be absent).
The type and validation attributes are mutually exclusive (if one is present, the other must be absent).
The type and validation attributes are mutually exclusive (if one is present, the other must be absent).
The type and validation attributes are mutually exclusive (if one is present, the other must be absent).
The type and validation attributes are mutually exclusive (if one is present, the other must be absent).
This element appears as a child of xsl:use-package and defines the visibility of components that are made available (or not) by this package to other using packages.
It is a static error if an xsl:sort element other than the first in a sequence of sibling xsl:sort elements has a stable attribute.
It is a static error if an xsl:sort element other than the first in a sequence of sibling xsl:sort elements has a stable attribute.
These four attributes are mutually exclusive: it is a static error if none of these four attributes is present or if more than one of them is present.
It is an error to specify the collation attribute or the composite attribute if neither the group-by attribute nor group-adjacent attribute is specified.
A parameter for a function must have no default value.
A parameter for a function must have no visibility attribute.
A parameter for a function must have no required attribute.
XTSE0215: It is a static error if an xsl:import-schema element that contains an xs:schema element has a schema-location attribute
It is a static error if the value attribute of xsl:number is present unless the select, level, count, and from attributes are all absent.
This element appears as a child of xsl:use-package and defines any overriding definitions of components that the containing package wishes to make to the components made available from a library package.
Declaration of the xsl:param element, used both defining function parameters, template parameters, parameters to xsl:iterate, and global stylesheet parameters.
When the attribute static="yes" is specified, the xsl:param element must have empty content.
It is a static error if an xsl:sort element other than the first in a sequence of sibling xsl:sort elements has a stable attribute.
The type and validation attributes are mutually exclusive (if one is present, the other must be absent).
The type and validation attributes are mutually exclusive (if one is present, the other must be absent).
An xsl:template element must have either a match attribute or a name attribute, or both.
An xsl:template element that has no match attribute must have no mode attribute and no priority attribute.
An xsl:template element that has no name attribute must have no visibility attribute
If the visibility attribute is present with the value abstract then (a) the sequence constructor defining the template body must be empty: that is, the only permitted children are xsl:context-item and xsl:param
If the visibility attribute is present with the value abstract then there must be no match attribute.
A parameter for a template must have no visibility attribute.
The version attribute indicates the version of XSLT that the stylesheet module requires. The attribute is required, unless the xsl:stylesheet element is a child of an xsl:package element, in which case it is optional: the default is then taken from the parent xsl:package element.
The static attribute must not be present on an xsl:variable or xsl:param element unless it is a top-level element.
XTSE0808: It is a static error if a namespace prefix is used within the [xsl:]exclude-result-prefixes attribute and there is no namespace binding in scope for that prefix.
XTSE0809: It is a static error if the value #default is used within the [xsl:]exclude-result-prefixes attribute and the parent element of the [xsl:]exclude-result-prefixes attribute has no default namespace.
This element appears as a child of xsl:package and defines a dependency of the containing package on another package, identified by URI in the name attribute. The package-version attribute indicates which version of the library package is required, or may indicate a range of versions.
Declaration of the xsl:variable element, used both for local and global variable bindings.
This definition takes advantage of the ability in XSD 1.1 for an element to belong to more than one substitution group. A global variable is a declaration, while a local variable can appear as an instruction in a sequence constructor.
When the static attribute is present with the value yes, the visibility attribute must not have a value other than private or final.
When the attribute static="yes" is specified, the xsl:variable element must have empty content, and the select attribute must be present to define the value of the variable.
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.
PART D: definitions of simple types used in stylesheet attributes
The use-accumulators attribute of xsl:source-document, xsl:merge-source, or xsl:global-context-item: either a list, each member being a QName; or the value #all
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.1 Recommendation.
A string containing exactly one character.
Describes a kind of component within a package.
The default-mode attribute of xsl:stylesheet, xsl:transform, xsl:package (or any other xsl:* element): either a QName or #unnamed.
An XPath 2.0 expression.
An XPath 2.1 ItemType
Describes how type annotations in source documents are handled.
The level attribute of xsl:number: one of single, multiple, or any.
The mode attribute of xsl:apply-templates: either a QName, or #current, or #unnamed, or #default.
The mode attribute of xsl:template: either a list, each member being either a QName or #default or #unnamed; or the value #all
XTSE0550: It is a static error if the same token is included more than once in the list.
A list of NameTests, as defined in the XPath 2.0 Recommendation. Each NameTest is either a QName, or "*", or "prefix:*", or "*:localname"
Describes the action to be taken when there are several template rules to match an item in a given mode.
Describes the action to be taken when there is no template rule to match an item in a given mode.
The method attribute of xsl:output: Either one of the recognized names "xml", "xhtml", "html", "text", or a QName that must include a prefix.
A match pattern as defined in the XSLT 2.1 Recommendation. The syntax for patterns is a restricted form of the syntax for XPath 2.0 expressions. Change since XSLT 2.0: Patterns may now match any item (not only nodes)
Either a namespace prefix, or #default. Used in the xsl:namespace-alias element.
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
An extended QName. This schema does not use the built-in type xs:QName, but rather defines its own QName type. This may be either a local name, or a prefixed QName, or a name written using the extended QName notation Q{uri}local
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 datatype is therefore defined as a union of NCName and QName, so that an unprefixed name will be validated as an NCName and will therefore not be treated as having the semantics of an unprefixed xs:QName.
A subtype of EQNames that excludes no-namespace names
The description of a datatype, conforming to the SequenceType production defined in the XPath 2.0 Recommendation
Describes the category to which a function belongs, with regards to its streaming behavior.
Describes whether a mode is designed to match typed or untyped nodes.
Describes different ways of type-annotating an element or attribute.
Describes different ways of type-annotating an element or attribute.
Describes the visibility of a component within a package.
Describes the visibility of a component within a package.
One of the values "yes" or "no": the values "true" or "false", or "1" or "0" are accepted as synonyms.
One of the values "yes" or "no" or "omit". The values "true" or "false", or "1" or "0" are accepted as synonyms of "yes" and "no" respectively.
One of the values "yes" or "no" or "omit". The values "true" or "false", or "1" or "0" are accepted as synonyms of "yes" and "no" respectively.
A digit that has the numerical value zero.