DTD Fragment for XSLT Stylesheets (Non-Normative)

DTD Fragment for XSLT Stylesheets (Non-Normative)

NOTE: This DTD Fragment is not normative because XML 1.0 DTDs do not support XML Namespaces and thus cannot correctly describe the allowed structure of an XSLT stylesheet.

The following entity can be used to construct a DTD for XSLT stylesheets that create instances of a particular result DTD. Before referencing the entity, the stylesheet DTD must define a result-elements parameter entity listing the allowed result element types. For example:

 <!ENTITY % result-elements "     fo:inline-sequence     fo:block  "> 

Such result elements should be declared to have xsl:use-attribute-sets and xsl:extension-element-prefixes attributes. The following entity declares the result-element-atts parameter for this purpose. The content that XSLT allows for result elements is the same as it allows for the XSLT elements that are declared in the following entity with a content model of %template; . The DTD may use a more restrictive content model than %template; to reflect the constraints of the result DTD.

The DTD may define the non-xsl-top-level parameter entity to allow additional top-level elements from namespaces other than the XSLT namespace.

The use of the xsl: prefix in this DTD does not imply that XSLT stylesheets are required to use this prefix. Any of the elements declared in this DTD may have attributes whose name starts with xmlns: or is equal to xmlns in addition to the attributes declared in this DTD.

 <!ENTITY % char-instructions "     xsl:apply-templates     xsl:call-template     xsl:apply-imports     xsl:for-each     xsl:value-of     xsl:copy-of     xsl:number     xsl:choose     xsl:if     xsl:text     xsl:copy     xsl:variable     xsl:message     xsl:fallback  ">  <!ENTITY % instructions "    %char-instructions;     xsl:processing-instruction     xsl:comment     xsl:element     xsl:attribute  ">  <!ENTITY % char-template "   (#PCDATA    %char-instructions;)*  ">  <!ENTITY % template "   (#PCDATA    %instructions;    %result-elements;)*  ">  <!-- Used for the type of an attribute value that is a URI reference.-->  <!ENTITY % URI "CDATA">  <!-- Used for the type of an attribute value that is a pattern.-->  <!ENTITY % pattern "CDATA">  <!-- Used for the type of an attribute value that is an       attribute value template.-->  <!ENTITY % avt "CDATA">  <!-- Used for the type of an attribute value that is a QName; the prefix       gets expanded by the XSLT processor. -->  <!ENTITY % qname "NMTOKEN">  <!-- Like qname but a whitespace-separated list of QNames. -->  <!ENTITY % qnames "NMTOKENS">  <!-- Used for the type of an attribute value that is an expression.-->  <!ENTITY % expr "CDATA">  <!-- Used for the type of an attribute value that consists       of a single character.-->  <!ENTITY % char "CDATA">  <!-- Used for the type of an attribute value that is a priority. -->  <!ENTITY % priority "NMTOKEN">  <!ENTITY % space-att "xml:space (defaultpreserve) #IMPLIED">  <!-- This may be overridden to customize the set of elements allowed  at the top-level. -->  <!ENTITY % non-xsl-top-level "">  <!ENTITY % top-level "   (xsl:import*,    (xsl:include     xsl:strip-space     xsl:preserve-space     xsl:output     xsl:key     xsl:decimal-format     xsl:attribute-set     xsl:variable     xsl:param     xsl:template     xsl:namespace-alias    %non-xsl-top-level;)*)  ">  <!ENTITY % top-level-atts '    extension-element-prefixes CDATA #IMPLIED    exclude-result-prefixes CDATA #IMPLIED    id ID #IMPLIED    version NMTOKEN #REQUIRED    xmlns:xsl CDATA #FIXED "http://www.w3.org/1999/XSL/Transform"    %space-att;  '>  <!-- This entity is defined for use in the ATTLIST declaration  for result elements. -->  <!ENTITY % result-element-atts '    xsl:extension-element-prefixes CDATA #IMPLIED    xsl:exclude-result-prefixes CDATA #IMPLIED    xsl:use-attribute-sets %qnames; #IMPLIED    xsl:version NMTOKEN #IMPLIED  '>  <!ELEMENT xsl:stylesheet %top-level;>  <!ATTLIST xsl:stylesheet %top-level-atts;>  <!ELEMENT xsl:transform %top-level;>  <!ATTLIST xsl:transform %top-level-atts;>  <!ELEMENT xsl:import EMPTY>  <!ATTLIST xsl:import href %URI; #REQUIRED>  <!ELEMENT xsl:include EMPTY>  <!ATTLIST xsl:include href %URI; #REQUIRED>  <!ELEMENT xsl:strip-space EMPTY>  <!ATTLIST xsl:strip-space elements CDATA #REQUIRED>  <!ELEMENT xsl:preserve-space EMPTY>  <!ATTLIST xsl:preserve-space elements CDATA #REQUIRED>  <!ELEMENT xsl:output EMPTY>  <!ATTLIST xsl:output    method %qname; #IMPLIED    version NMTOKEN #IMPLIED    encoding CDATA #IMPLIED    omit-xml-declaration (yesno) #IMPLIED    standalone (yesno) #IMPLIED    doctype-public CDATA #IMPLIED    doctype-system CDATA #IMPLIED    cdata-section-elements %qnames; #IMPLIED    indent (yesno) #IMPLIED    media-type CDATA #IMPLIED  >  <!ELEMENT xsl:key EMPTY>  <!ATTLIST xsl:key    name %qname; #REQUIRED    match %pattern; #REQUIRED    use %expr; #REQUIRED  >  <!ELEMENT xsl:decimal-format EMPTY>  <!ATTLIST xsl:decimal-format    name %qname; #IMPLIED    decimal-separator %char; "."    grouping-separator %char; ","    infinity CDATA "Infinity"    minus-sign %char; "-"    NaN CDATA "NaN"    percent %char; "%"    per-mille %char; "&#x2030;"    zero-digit %char; "0"    digit %char; "#"    pattern-separator %char; ";"  >  <!ELEMENT xsl:namespace-alias EMPTY>  <!ATTLIST xsl:namespace-alias    stylesheet-prefix CDATA #REQUIRED    result-prefix CDATA #REQUIRED  >  <!ELEMENT xsl:template   (#PCDATA    %instructions;    %result-elements;     xsl:param)*  >  <!ATTLIST xsl:template    match %pattern; #IMPLIED    name %qname; #IMPLIED    priority %priority; #IMPLIED    mode %qname; #IMPLIED    %space-att;  >  <!ELEMENT xsl:value-of EMPTY>  <!ATTLIST xsl:value-of    select %expr; #REQUIRED    disable-output-escaping (yesno) "no"  >  <!ELEMENT xsl:copy-of EMPTY>  <!ATTLIST xsl:copy-of select %expr; #REQUIRED>  <!ELEMENT xsl:number EMPTY>  <!ATTLIST xsl:number     level (singlemultipleany) "single"     count %pattern; #IMPLIED     from %pattern; #IMPLIED     value %expr; #IMPLIED     format %avt; '1'     lang %avt; #IMPLIED     letter-value %avt; #IMPLIED     grouping-separator %avt; #IMPLIED     grouping-size %avt; #IMPLIED  >  <!ELEMENT xsl:apply-templates (xsl:sort with-param)*>  <!ATTLIST xsl:apply-templates    select %expr; "node()"    mode %qname; #IMPLIED  >  <!ELEMENT xsl:apply-imports EMPTY>  <!-- xsl:sort cannot occur after any other elements or  any non-whitespace character -->  <!ELEMENT xsl:for-each   (#PCDATA    %instructions;    %result-elements;     xsl:sort)*  >  <!ATTLIST xsl:for-each    select %expr; #REQUIRED    %space-att;  >  <!ELEMENT xsl:sort EMPTY>  <!ATTLIST xsl:sort    select %expr; "."    lang %avt; #IMPLIED    data-type %avt; "text"    order %avt; "ascending"    case-order %avt; #IMPLIED  >  <!ELEMENT xsl:if %template;>  <!ATTLIST xsl:if    test %expr; #REQUIRED    %space-att;  >  <!ELEMENT xsl:choose (xsl:when+, xsl:otherwise?)>  <!ATTLIST xsl:choose %space-att;>  <!ELEMENT xsl:when %template;>  <!ATTLIST xsl:when    test %expr; #REQUIRED    %space-att;  >  <!ELEMENT xsl:otherwise %template;>  <!ATTLIST xsl:otherwise %space-att;>  <!ELEMENT xsl:attribute-set (xsl:attribute)*>  <!ATTLIST xsl:attribute-set    name %qname; #REQUIRED    use-attribute-sets %qnames; #IMPLIED  >  <!ELEMENT xsl:call-template (xsl:with-param)*>  <!ATTLIST xsl:call-template    name %qname; #REQUIRED  >  <!ELEMENT xsl:with-param %template;>  <!ATTLIST xsl:with-param    name %qname; #REQUIRED    select %expr; #IMPLIED  >  <!ELEMENT xsl:variable %template;>  <!ATTLIST xsl:variable    name %qname; #REQUIRED    select %expr; #IMPLIED  >  <!ELEMENT xsl:param %template;>  <!ATTLIST xsl:param    name %qname; #REQUIRED    select %expr; #IMPLIED  >  <!ELEMENT xsl:text (#PCDATA)>  <!ATTLIST xsl:text    disable-output-escaping (yesno) "no"  >  <!ELEMENT xsl:processing-instruction %char-template;>  <!ATTLIST xsl:processing-instruction    name %avt; #REQUIRED    %space-att;  >  <!ELEMENT xsl:element %template;>  <!ATTLIST xsl:element    name %avt; #REQUIRED    namespace %avt; #IMPLIED    use-attribute-sets %qnames; #IMPLIED    %space-att;  >  <!ELEMENT xsl:attribute %char-template;>  <!ATTLIST xsl:attribute    name %avt; #REQUIRED    namespace %avt; #IMPLIED    %space-att;  >  <!ELEMENT xsl:comment %char-template;>  <!ATTLIST xsl:comment %space-att;>  <!ELEMENT xsl:copy %template;>  <!ATTLIST xsl:copy    %space-att;    use-attribute-sets %qnames; #IMPLIED  >  <!ELEMENT xsl:message %template;>  <!ATTLIST xsl:message    %space-att;    terminate (yesno) "no"  >  <!ELEMENT xsl:fallback %template;>  <!ATTLIST xsl:fallback %space-att;> 

Inside XSLT
Inside Xslt
ISBN: B0031W8M4K
Year: 2005
Pages: 196

Similar book on Amazon

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net