| <?xml version="1.0" ?> |
| |
| |
| |
| <!-- |
| |
| |
| |
| |
| |
| |
| |
| This free of charge Software is provided on an "AS IS" basis, without |
| |
| warranty of any kind. The entire risk as to the quality and performance of |
| |
| the software is borne by you. Should the software prove defective, you and |
| |
| only you assume the entire cost of any service and repair. |
| |
| |
| |
| WEBMETHODS DOES NOT MAKE ANY EXPRESS OR IMPLIED WARRANTIES OF ANY KIND |
| |
| INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, MERCHANTABILITY OR |
| |
| FITNESS FOR A PARTICULAR PURPOSE, OR WARRANTIES ARISING BY STATUTE, COURSE |
| |
| OF DEALING, CUSTOM OR USAGE, TRADE PRACTICE OR OTHERWISE. |
| |
| |
| |
| IN NO EVENT WILL WEBMETHODS BE LIABLE FOR ANY LOST REVENUES, PROFITS, |
| |
| BUSINESS OR INTERRUPTION OF BUSINESS OR OTHER SPECIAL, INDIRECT, INCIDENTAL |
| |
| OR CONSEQUENTIAL DAMAGES, EVEN IF WEBMETHODS HAS BEEN ADVISED OF THE |
| |
| POSSIBILITY OF SUCH DAMAGES, AND NOTWITHSTANDING ANY FAILURE OF ESSENTIAL |
| |
| PURPOSE OF ANY LIMITED REMEDY OF ANY KIND, HOWEVER CAUSED AND UNDER ANY |
| |
| THEORY OF LIABILITY. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| Schema for XSLT 1.0 Recommendation, http://www.w3.org/TR/1999/REC-xslt-19991116 |
| |
| Using XML Schema CR Drafts, |
| |
| |
| |
| - Part 1, http://www.w3.org/TR/2000/CR-xmlschema-1-20001024/ |
| |
| - Part 2, http://www.w3.org/TR/2000/CR-xmlschema-2-20001024/ |
| |
| |
| |
| Author: Asir S Vedamuthu |
| |
| Member, XML Schema WG representing webMethods, Inc. |
| |
| Member, XML Schema Processor design and implementation team at webMethods |
| |
| |
| |
| webMethods, Inc. |
| |
| 3930 Pender Drive |
| |
| Fairfax VA 22030 |
| |
| |
| |
| (703) 450-2500 |
| |
| |
| |
| Date - February 28th, 2001 |
| |
| Version - 0.4 |
| |
| |
| |
| This work is a product of the W3C XML Schema WG Task Force for authoring schema |
| |
| for W3C Recommendations as an illustration of the XML Schema Language. This schema |
| |
| is illustrative and non-normative. Internal names created by this schema follows the |
| |
| same convention used by XSLT 1.0 specification. |
| |
| |
| |
| Comments were stolen from the XSLT 1.0 specification, |
| |
| http://www.w3.org/TR/1999/REC-xslt-19991116#element-syntax-summary |
| |
| |
| |
| Asir intends to update this schema as the XML Schema drafts advance from CR to |
| |
| PR and then REC. Expected changes are, |
| |
| |
| |
| [1] XML Schema Namespace URI |
| |
| [2] Change attribute declaration syntax |
| |
| |
| |
| |
| |
| KNOWN ISSUES, |
| |
| |
| |
| (a) XML Schema Definition Language cannot capture a unique wild card expression in XSLT: "In addition, the xsl:stylesheet element may contain any element not from the XSLT namespace, provided that the expanded-name of the element has a non-null namespace URI" - http://www.w3.org/TR/1999/REC-xslt-19991116#stylesheet-element (This will not be an issue as per XML Schema PR) |
| |
| |
| |
| |
| |
| Revision History |
| |
| |
| |
| 0.1 - Created |
| |
| 0.2 - Fixed minor typos |
| |
| 0.3 - Implemented suggestions and added fragments from James Clark |
| |
| 0.4 - Fixed a minor typo |
| |
| |
| |
| Acknowledgement |
| |
| |
| |
| The following have contributed material to this draft: |
| |
| |
| |
| - James Clark, jjc@jclark.com |
| |
| |
| |
| |
| |
| Please send your comments and suggestions to asirv@webmethods.com |
| |
| |
| |
| |
| |
| --> |
| |
| |
| |
| |
| |
| <schema xmlns="http://www.w3.org/2000/10/XMLSchema" |
| |
| targetNamespace="http://www.w3.org/1999/XSL/Transform" |
| |
| elementFormDefault="qualified" |
| |
| |
| |
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
| |
| xmlns:xpath="http://www.w3.org/TR/2001/WD-xptr-20010108/" blockDefault="#all"> |
| |
| |
| |
| |
| |
| <import namespace="http://www.w3.org/XML/1998/namespace" |
| |
| schemaLocation="http://www.w3.org/2000/10/xml.xsd"/> |
| |
| |
| |
| |
| |
| |
| |
| <!-- *** import schema for xpath |
| |
| authored by C. M. Sperberg-McQueen [cmsmcq@acm.org] |
| |
| Chair, XML Schema WG |
| |
| |
| |
| <import namespace="http://www.w3.org/TR/2001/WD-xptr-20010108/" |
| |
| schemaLocation="xpath.xsd"/> |
| |
| --> |
| |
| |
| |
| |
| |
| <!-- *** result elements *** --> |
| |
| <!-- *** *** --> |
| |
| |
| |
| <!-- There are three ways that you can construct a |
| |
| schema for XSLT stylesheets that create instances of a |
| |
| particular result structure |
| |
| |
| |
| (a) Declare all your result elements as a member of |
| |
| xsl:result-element substitution group |
| |
| |
| |
| (b) Redefine model group xsl:result-element to accomodate |
| |
| the desired structure |
| |
| |
| |
| (c) Do nothing. This schema is designed to allow any element node |
| |
| or nodes if they have any namespace other than the XSLT |
| |
| namespace or not namespace qualified |
| |
| |
| |
| I recommend (a) or (b) |
| |
| |
| |
| In addition, I added a an attributeGroup util, 'result-element' |
| |
| for your convenience |
| |
| |
| |
| --> |
| |
| |
| |
| <element name="result-element" abstract="true" type="anyType"/> |
| |
| |
| |
| |
| |
| <attributeGroup name="result-element"> |
| |
| <attribute name="extension-element-prefixes" form="qualified" type="string"/> |
| |
| <attribute name="exclude-result-prefixes" form="qualified" type="string"/> |
| |
| <attribute name="use-attribute-sets" form="qualified" type="xsl:QNames"/> |
| |
| <attribute name="version" form="qualified" type="NMTOKEN"/> |
| |
| <anyAttribute namespace="##other" processContents="skip"/> |
| |
| </attributeGroup> |
| |
| |
| |
| |
| |
| <group name="result-element"> |
| |
| <choice> |
| |
| <element ref="xsl:result-element"/> |
| |
| <any namespace="##other" processContents="skip"/> |
| |
| </choice> |
| |
| </group> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- *** Style Sheet Elements *** --> |
| |
| <!-- *** *** --> |
| |
| |
| |
| |
| |
| <element name="stylesheet" type="xsl:wrapper"/> |
| |
| <element name="transform" type="xsl:wrapper"/> |
| |
| |
| |
| <complexType name="wrapper"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <sequence> |
| |
| <element ref="xsl:import" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:top-level-element"/> |
| |
| <element ref="xsl:variable"/> |
| |
| <any namespace="##other" processContents="skip"/> <!-- weaker than XSLT 1.0 --> |
| |
| </choice> |
| |
| </sequence> |
| |
| <attribute name="id" type="ID"/> |
| |
| <attribute name="extension-element-prefixes" type="xsl:tokens"/> |
| |
| <attribute name="exclude-result-prefixes" type="xsl:tokens"/> |
| |
| <attribute name="version" type="decimal" use="required"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- *** top level elements *** --> |
| |
| <!-- *** *** --> |
| |
| |
| |
| |
| |
| <element name="top-level-element" type="xsl:anyType" abstract="true"/> |
| |
| <element name="top-level-element-and-char-instruction" type="xsl:anyType" abstract="true"/> |
| |
| |
| |
| <element name="attribute-set" substitutionGroup="xsl:top-level-element"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:attribute-set |
| |
| name = qname |
| |
| use-attribute-sets = qnames> |
| |
| Content: xsl:attribute* |
| |
| </xsl:attribute-set> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <sequence minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:attribute"/> |
| |
| </sequence> |
| |
| <attributeGroup ref="xsl:name"/> |
| |
| <attributeGroup ref="xsl:use-attribute-sets"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="decimal-format" substitutionGroup="xsl:top-level-element"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:decimal-format |
| |
| name = qname |
| |
| decimal-separator = char |
| |
| grouping-separator = char |
| |
| infinity = string |
| |
| minus-sign = char |
| |
| NaN = string |
| |
| percent = char |
| |
| per-mille = char |
| |
| zero-digit = char |
| |
| digit = char |
| |
| pattern-separator = char /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attribute name="name" type="xsl:QName"/> |
| |
| <attribute name="decimal-separator" type="string" use="default" value="."/> |
| |
| <attribute name="grouping-separator" type="string" use="default" value=","/> |
| |
| <attribute name="infinity" type="string" use="default" value="Infinity"/> |
| |
| <attribute name="minus-sign" type="string" use="default" value="-"/> |
| |
| <attribute name="NaN" type="string" use="default" value="NaN"/> |
| |
| <attribute name="percent" type="string" use="default" value="%"/> |
| |
| <attribute name="per-mille" type="string" use="default" value="‰"/> |
| |
| <attribute name="zero-digit" type="string" use="default" value="0"/> |
| |
| <attribute name="digit" type="string" use="default" value="#"/> |
| |
| <attribute name="pattern-separator" type="string" use="default" value=";"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="include" substitutionGroup="xsl:top-level-element" type="xsl:combine-stylesheets"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:include |
| |
| href = uri-reference /> |
| |
| |
| |
| --> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="key" substitutionGroup="xsl:top-level-element"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:key |
| |
| name = qname |
| |
| match = pattern |
| |
| use = expression /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attributeGroup ref="xsl:name"/> |
| |
| <attribute name="match" type="xsl:pattern" use="required"/> |
| |
| <attribute name="use" type="xsl:expression" use="required"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="namespace-alias" substitutionGroup="xsl:top-level-element"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attribute name="stylesheet-prefix" type="xsl:prefix" use="required"/> |
| |
| <attribute name="result-prefix" type="xsl:prefix" use="required"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="output" substitutionGroup="xsl:top-level-element"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:output |
| |
| method = "xml" | "html" | "text" | qname-but-not-ncname |
| |
| version = nmtoken |
| |
| encoding = string |
| |
| omit-xml-declaration = "yes" | "no" |
| |
| standalone = "yes" | "no" |
| |
| doctype-public = string |
| |
| doctype-system = string |
| |
| cdata-section-elements = qnames |
| |
| indent = "yes" | "no" |
| |
| media-type = string /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attribute name="method"> |
| |
| <simpleType> |
| |
| <union> |
| |
| <simpleType> |
| |
| <restriction base="string"> |
| |
| <enumeration value="xml"/> |
| |
| <enumeration value="html"/> |
| |
| <enumeration value="text"/> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| <simpleType> |
| |
| <restriction base="xsl:QName"> |
| |
| <pattern value="\c*:\c*"/> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| </union> |
| |
| </simpleType> |
| |
| </attribute> |
| |
| |
| |
| <attribute name="version" type="NMTOKEN"/> |
| |
| <attribute name="encoding" type="string"/> |
| |
| <attribute name="omit-xml-declaration" type="xsl:YesOrNo"/> |
| |
| <attribute name="standalone" type="xsl:YesOrNo"/> |
| |
| <attribute name="doctype-public" type="string"/> |
| |
| <attribute name="doctype-system" type="string"/> |
| |
| <attribute name="cdata-section-elements" type="xsl:QNames"/> |
| |
| <attribute name="indent" type="xsl:YesOrNo"/> |
| |
| <attribute name="media-type" type="string"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="param" substitutionGroup="xsl:top-level-element" type="xsl:variable"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:param |
| |
| name = qname |
| |
| select = expression> |
| |
| Content: template |
| |
| </xsl:param> |
| |
| |
| |
| --> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="preserve-space" substitutionGroup="xsl:top-level-element"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:preserve-space |
| |
| elements = tokens /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attribute name="elements" type="xsl:element-names" use="required"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| <element name="strip-space" substitutionGroup="xsl:preserve-space"/> |
| |
| |
| |
| |
| |
| <element name="template" substitutionGroup="xsl:top-level-element"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:template |
| |
| match = pattern |
| |
| name = qname |
| |
| priority = number |
| |
| mode = qname> |
| |
| Content: (xsl:param*, template) |
| |
| </xsl:template> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <sequence> |
| |
| <element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:top-level-element-and-char-instruction"/> |
| |
| <element ref="xsl:instruction"/> |
| |
| <group ref="xsl:result-element"/> |
| |
| </choice> |
| |
| </sequence> |
| |
| <attribute name="match" type="xsl:pattern"/> |
| |
| <attribute name="name" type="xsl:QName"/> |
| |
| <attribute name="priority" type="decimal"/> |
| |
| <attribute name="mode" type="xsl:QName"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <!-- *** top level elements and char instructions *** --> |
| |
| <!-- *** *** --> |
| |
| |
| |
| |
| |
| <element name="variable" type="xsl:variable" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:variable |
| |
| name = qname |
| |
| select = expression> |
| |
| Content: template |
| |
| </xsl:variable> |
| |
| |
| |
| --> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- *** instructions *** --> |
| |
| <!-- *** *** --> |
| |
| |
| |
| |
| |
| <element name="instruction" type="xsl:anyType" abstract="true"/> |
| |
| |
| |
| <element name="char-instruction" type="xsl:anyType" abstract="true" |
| |
| substitutionGroup="xsl:instruction"/> |
| |
| |
| |
| <element name="apply-imports" type="xsl:anyType" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:apply-imports /> |
| |
| |
| |
| --> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="apply-templates" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:apply-templates |
| |
| select = node-set-expression |
| |
| mode = qname> |
| |
| Content: (xsl:sort | xsl:with-param)* |
| |
| </xsl:apply-templates> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:sort"/> |
| |
| <element ref="xsl:with-param"/> |
| |
| </choice> |
| |
| <attribute name="select" type="xsl:expression" use="default" value="node()"/> |
| |
| <attribute name="mode" type="xsl:QName"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="attribute" type="xsl:attribute-type" substitutionGroup="xsl:instruction"/> |
| |
| |
| |
| |
| |
| <element name="call-template" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:call-template |
| |
| name = qname> |
| |
| Content: xsl:with-param* |
| |
| </xsl:call-template> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <sequence minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:with-param"/> |
| |
| </sequence> |
| |
| <attributeGroup ref="xsl:name"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="choose" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:choose> |
| |
| Content: (xsl:when+, xsl:otherwise?) |
| |
| </xsl:choose> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <sequence> |
| |
| <element ref="xsl:when" minOccurs="1" maxOccurs="unbounded"/> |
| |
| <element ref="xsl:otherwise" minOccurs="0"/> |
| |
| </sequence> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| <element name="comment" substitutionGroup="xsl:instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:comment> |
| |
| Content: template |
| |
| </xsl:comment> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:char-instruction"/> |
| |
| <element ref="xsl:top-level-element-and-char-instruction"/> |
| |
| </choice> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="copy" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:copy |
| |
| use-attribute-sets = qnames> |
| |
| Content: template |
| |
| </xsl:copy> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attribute ref="xml:space"/> |
| |
| <attributeGroup ref="xsl:use-attribute-sets"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="copy-of" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:copy-of |
| |
| select = expression /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attributeGroup ref="xsl:select-required"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="element" substitutionGroup="xsl:instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:element |
| |
| name = { qname } |
| |
| namespace = { uri-reference } |
| |
| use-attribute-sets = qnames> |
| |
| Content: template |
| |
| </xsl:element> |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attributeGroup ref="xsl:name-avt"/> |
| |
| <attribute name="namespace" type="xsl:expr-avt"/> |
| |
| <attributeGroup ref="xsl:use-attribute-sets"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="fallback" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:fallback> |
| |
| Content: template |
| |
| </xsl:fallback> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="for-each" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:for-each |
| |
| select = node-set-expression> |
| |
| Content: (xsl:sort*, template) |
| |
| </xsl:for-each> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <sequence> |
| |
| <element ref="xsl:sort" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:top-level-element-and-char-instruction"/> |
| |
| <element ref="xsl:instruction"/> |
| |
| <group ref="xsl:result-element"/> |
| |
| </choice> |
| |
| </sequence> |
| |
| <attributeGroup ref="xsl:select-required"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| <element name="if" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:if |
| |
| test = boolean-expression> |
| |
| Content: template |
| |
| </xsl:if> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attribute name="test" type="xsl:expression" use="required"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="message" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:message |
| |
| terminate = "yes" | "no"> |
| |
| Content: template |
| |
| </xsl:message> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attribute ref="xml:space"/> |
| |
| <attribute name="terminate" use="default" value="no" type="xsl:YesOrNo"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="number" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:number |
| |
| level = "single" | "multiple" | "any" |
| |
| count = pattern |
| |
| from = pattern |
| |
| value = number-expression |
| |
| format = { string } |
| |
| lang = { nmtoken } |
| |
| letter-value = { "alphabetic" | "traditional" } |
| |
| grouping-separator = { char } |
| |
| grouping-size = { number } /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attribute name="level" use="default" value="single"> |
| |
| <simpleType> |
| |
| <restriction base="NMTOKEN"> |
| |
| <enumeration value="single"/> |
| |
| <enumeration value="multiple"/> |
| |
| <enumeration value="any"/> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| </attribute> |
| |
| |
| |
| <attribute name="count" type="xsl:pattern"/> |
| |
| <attribute name="from" type="xsl:pattern"/> |
| |
| <attribute name="value" type="xsl:expression"/> |
| |
| <attribute name="format" type="xsl:expr-avt" use="default" value="1"/> |
| |
| <attribute name="lang" type="xsl:expr-avt"/> |
| |
| <attribute name="letter-value" type="xsl:expr-avt"/> |
| |
| <attribute name="grouping-separator" type="xsl:expr-avt"/> |
| |
| <attribute name="grouping-size" type="xsl:expr-avt"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="processing-instruction" substitutionGroup="xsl:instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:processing-instruction |
| |
| name = { ncname }> |
| |
| Content: template |
| |
| </xsl:processing-instruction> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:char-instruction"/> |
| |
| <element ref="xsl:top-level-element-and-char-instruction"/> |
| |
| </choice> |
| |
| <attributeGroup ref="xsl:name-avt"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="text" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:text |
| |
| disable-output-escaping = "yes" | "no"> |
| |
| Content: #PCDATA |
| |
| </xsl:text> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attributeGroup ref="xsl:disable-output-escaping"/> |
| |
| <attribute ref="xml:lang"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="value-of" substitutionGroup="xsl:char-instruction"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:value-of |
| |
| select = string-expression |
| |
| disable-output-escaping = "yes" | "no" /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attributeGroup ref="xsl:select-required"/> |
| |
| <attributeGroup ref="xsl:disable-output-escaping"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| |
| |
| <!-- *** orphans *** --> |
| |
| <!-- *** *** --> |
| |
| |
| |
| <element name="import" type="xsl:combine-stylesheets"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:import |
| |
| href = uri-reference /> |
| |
| --> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="otherwise"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:otherwise> |
| |
| Content: template |
| |
| </xsl:otherwise> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="sort"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| xsl:sort |
| |
| select = string-expression |
| |
| lang = { nmtoken } |
| |
| data-type = { "text" | "number" | qname-but-not-ncname } |
| |
| order = { "ascending" | "descending" } |
| |
| case-order = { "upper-first" | "lower-first" } /> |
| |
| |
| |
| --> |
| |
| |
| |
| <complexType> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attribute name="select" type="xsl:expression" use="default" value="."/> |
| |
| <attribute name="lang" type="xsl:expr-avt"/> |
| |
| <attribute name="data-type" type="xsl:expr-avt" use="default" value="text"/> |
| |
| <attribute name="order" type="xsl:expr-avt" use="default" value="ascending"/> |
| |
| <attribute name="case-order" type="xsl:expr-avt"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="when"> |
| |
| |
| |
| <!-- *** |
| |
| <xsl:when |
| |
| test = boolean-expression> |
| |
| Content: template |
| |
| </xsl:when> |
| |
| --> |
| |
| |
| |
| <complexType mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attribute name="test" type="xsl:expression" use="required"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| <element name="with-param" type="xsl:variable"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:with-param |
| |
| name = qname |
| |
| select = expression> |
| |
| Content: template |
| |
| </xsl:with-param> |
| |
| --> |
| |
| |
| |
| </element> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- *** utils - internal types and groups *** --> |
| |
| <!-- *** not for public use *** --> |
| |
| <!-- *** *** --> |
| |
| |
| |
| <complexType name="attribute-type" mixed="true"> |
| |
| |
| |
| <!-- *** |
| |
| |
| |
| <xsl:attribute |
| |
| name = { qname } |
| |
| namespace = { uri-reference }> |
| |
| Content: template |
| |
| </xsl:attribute> |
| |
| |
| |
| --> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| |
| <element ref="xsl:char-instruction"/> |
| |
| <element ref="xsl:top-level-element-and-char-instruction"/> |
| |
| </choice> |
| |
| |
| |
| <attributeGroup ref="xsl:name-avt"/> |
| |
| <attribute name="namespace" type="xsl:expr-avt"/> |
| |
| <attribute ref="xml:space"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| |
| |
| </complexType> |
| |
| |
| |
| |
| |
| <simpleType name="tokens"> |
| |
| <list itemType="token"/> |
| |
| </simpleType> |
| |
| |
| |
| <simpleType name="QNames"> |
| |
| <list itemType="xsl:QName"/> |
| |
| </simpleType> |
| |
| |
| |
| <attributeGroup name="name"> |
| |
| <attribute name="name" type="xsl:QName" use="required"/> |
| |
| </attributeGroup> |
| |
| |
| |
| <attributeGroup name="name-avt"> |
| |
| <attribute name="name" type="xsl:expr-avt" use="required"/> |
| |
| </attributeGroup> |
| |
| |
| |
| <attributeGroup name="select-optional"> |
| |
| <attribute name="select" type="xsl:expression"/> |
| |
| </attributeGroup> |
| |
| |
| |
| <attributeGroup name="select-required"> |
| |
| <attribute name="select" type="xsl:expression" use="required"/> |
| |
| </attributeGroup> |
| |
| |
| |
| <attributeGroup name="use-attribute-sets"> |
| |
| <attribute name="use-attribute-sets" type="xsl:QNames"/> |
| |
| </attributeGroup> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <group name="template"> |
| |
| <choice> |
| |
| <element ref="xsl:top-level-element-and-char-instruction"/> |
| |
| <element ref="xsl:instruction"/> |
| |
| <group ref="xsl:result-element"/> |
| |
| </choice> |
| |
| </group> |
| |
| |
| |
| <complexType name="combine-stylesheets"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <attribute name="href" type="uriReference" use="required"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| <simpleType name="YesOrNo"> |
| |
| <restriction base="string"> |
| |
| <enumeration value="yes"/> |
| |
| <enumeration value="no"/> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| |
| |
| <simpleType name="QName"> |
| |
| <union memberTypes="NCName QName"/> |
| |
| </simpleType> |
| |
| |
| |
| <simpleType name="element-names"> |
| |
| <list> |
| |
| <simpleType> |
| |
| <union memberTypes="QName"> |
| |
| <simpleType> |
| |
| <restriction base="CDATA"> |
| |
| <pattern value="\*"/> |
| |
| <pattern value="\i\c*:\*"/> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| </union> |
| |
| </simpleType> |
| |
| </list> |
| |
| </simpleType> |
| |
| |
| |
| <attributeGroup name="disable-output-escaping"> |
| |
| <attribute name="disable-output-escaping" type="xsl:YesOrNo" |
| |
| use="default" value="no"/> |
| |
| </attributeGroup> |
| |
| |
| |
| <complexType name="variable" mixed="true"> |
| |
| <complexContent> |
| |
| <extension base="xsl:anyType"> |
| |
| <group ref="xsl:template" minOccurs="0" maxOccurs="unbounded"/> |
| |
| <attributeGroup ref="xsl:name"/> |
| |
| <attributeGroup ref="xsl:select-optional"/> |
| |
| </extension> |
| |
| </complexContent> |
| |
| </complexType> |
| |
| |
| |
| |
| |
| <simpleType name="expr-avt"> |
| |
| <restriction base="string"> |
| |
| <!-- <pattern |
| |
| value="([^\{\}]|\{\{|\}\})*\{([^"'\{\}]|"[^"]*"|'[^']*')+\}([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*"/> --> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| |
| |
| <simpleType name="expression"> |
| |
| <restriction base="string"> |
| |
| <!-- **** |
| |
| |
| |
| patterns go here |
| |
| |
| |
| --> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| |
| |
| <simpleType name="pattern"> |
| |
| <restriction base="string"> |
| |
| <!-- *** |
| |
| |
| |
| patterns go here |
| |
| |
| |
| --> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| |
| |
| <simpleType name="prefix"> |
| |
| <union memberTypes="NCName"> |
| |
| <simpleType> |
| |
| <restriction base="string"> |
| |
| <enumeration value="#default"/> |
| |
| </restriction> |
| |
| </simpleType> |
| |
| </union> |
| |
| </simpleType> |
| |
| |
| |
| |
| |
| <complexType name="anyType"> |
| |
| <anyAttribute namespace="##other" processContents="skip"/> |
| |
| </complexType> |
| |
| </schema> |