| <?xml version="1.0" ?> |
| |
| <!-- |
| |
| This is an updated version of the XSLT schema originally published by WebMethods |
| in March 2001. This version complies with the current W3C XML Schema |
| recommendation. To use this schema, start you stylesheet with: |
| |
| <xsl:stylesheet version="1.0" |
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://www.w3.org/1999/XSL/Transform http://www.orbeon.com/1999/XSL/Transform"> |
| |
| If you have any question or comment, please feel free to contact us: |
| |
| Orbeon, Inc. |
| http://www.orbeon.com/ |
| info@orbeon.com |
| |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| |
| DISCLAIMER OF WARRANTY |
| |
| THIS CODE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, |
| EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES |
| THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A |
| PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY |
| AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED |
| CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL |
| DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY |
| SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY |
| CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED |
| CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. |
| |
| LIMITATION OF LIABILITY |
| |
| UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT |
| (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL |
| DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, |
| OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY |
| INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY |
| CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK |
| STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER |
| COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN |
| INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY |
| SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM |
| SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH |
| LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF |
| INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION |
| MAY NOT APPLY TO YOU. |
| |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| |
| 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/2001/XMLSchema" |
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd" |
| targetNamespace="http://www.w3.org/1999/XSL/Transform" |
| elementFormDefault="qualified"> |
| |
| |
| <import namespace="http://www.w3.org/XML/1998/namespace" |
| schemaLocation="http://www.w3.org/2001/xml.xsd"/> |
| <!--<import namespace="http://www.w3.org/2001/XMLSchema" />--> |
| |
| |
| |
| <!-- *** 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"/> |
| <any namespace="##local" 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="optional" default="."/> |
| <attribute name="grouping-separator" type="string" use="optional" default=","/> |
| <attribute name="infinity" type="string" use="optional" default="Infinity"/> |
| <attribute name="minus-sign" type="string" use="optional" default="-"/> |
| <attribute name="NaN" type="string" use="optional" default="NaN"/> |
| <attribute name="percent" type="string" use="optional" default="%"/> |
| <attribute name="per-mille" type="string" use="optional" default="‰"/> |
| <attribute name="zero-digit" type="string" use="optional" default="0"/> |
| <attribute name="digit" type="string" use="optional" default="#"/> |
| <attribute name="pattern-separator" type="string" use="optional" default=";"/> |
| </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" type="xsl:preserve-space"> |
| |
| <!-- *** |
| |
| <xsl:preserve-space |
| elements = tokens /> |
| |
| --> |
| </element> |
| |
| <complexType name="preserve-space"> |
| <complexContent> |
| <extension base="xsl:anyType"> |
| <attribute name="elements" type="xsl:element-names" use="required"/> |
| </extension> |
| </complexContent> |
| </complexType> |
| |
| <element name="strip-space" substitutionGroup="xsl:preserve-space" type="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="optional" default="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="optional" default="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="optional" default="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="optional" default="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="optional" default="."/> |
| <attribute name="lang" type="xsl:expr-avt"/> |
| <attribute name="data-type" use="optional" default="text"> |
| <simpleType> |
| <union memberTypes="xsl:expr-avt"> |
| <simpleType> |
| <restriction base="string"> |
| <enumeration value="text" /> |
| <enumeration value="number" /> |
| </restriction> |
| </simpleType> |
| </union> |
| </simpleType> |
| </attribute> |
| <attribute name="order" use="optional" default="ascending"> |
| <simpleType> |
| <union memberTypes="xsl:expr-avt"> |
| <simpleType> |
| <restriction base="string"> |
| <enumeration value="ascending" /> |
| <enumeration value="descending" /> |
| </restriction> |
| </simpleType> |
| </union> |
| </simpleType> |
| </attribute> |
| <attribute name="case-order"> |
| <simpleType> |
| <union memberTypes="xsl:expr-avt"> |
| <simpleType> |
| <restriction base="string"> |
| <enumeration value="upper-first" /> |
| <enumeration value="lower-first" /> |
| </restriction> |
| </simpleType> |
| </union> |
| </simpleType> |
| </attribute> |
| </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="anyURI" 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="string"> |
| <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="optional" default="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"/> |
| <attribute name="as" use="optional" /> <!-- supported by Saxon XSLT Processor --> |
| </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> |