You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cr...@apache.org on 2002/11/12 07:24:16 UTC

cvs commit: xml-cocoon2/src/webapp/WEB-INF/entities xslt-20020523.rng

crossley    2002/11/11 22:24:16

  Added:       src/webapp/WEB-INF/entities xslt-20020523.rng
  Log:
  RELAX NG grammar for XSL stylesheets.
  Obtained from: http://www.thaiopensource.com/relaxng/xslt.rng
  
  Revision  Changes    Path
  1.1                  xml-cocoon2/src/webapp/WEB-INF/entities/xslt-20020523.rng
  
  Index: xslt-20020523.rng
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  <!-- Id: xslt.rng,v 1.9 2002/05/23 09:39:03 jjc Exp $ -->
  <!-- http://www.thaiopensource.com/relaxng/xslt.rng -->
  <!-- This was mostly generated from the syntax summary in the XSLT
       Recommendation (using XSLT of course). -->
  <!-- Issues: this validates extension elements as literal result
       elements, which is overly restrictive. -->
  <grammar xmlns="http://relaxng.org/ns/structure/1.0"
           ns="http://www.w3.org/1999/XSL/Transform"
           datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
     <start>
        <choice>
           <ref name="stylesheet.element"/>
           <ref name="transform.element"/>
           <ref name="literal-result-element-as-stylesheet"/>
        </choice>
     </start>
     <define name="version">
        <value>1.0</value>
     </define>
     <define name="top-level-elements.model">
        <zeroOrMore>
           <choice>
              <ref name="top-level-element.category"/>
              <ref name="top-level-extension"/>
           </choice>
        </zeroOrMore>
     </define>
     <define name="top-level-extension">
        <element>
           <anyName>
              <except>
                 <nsName/>
                 <nsName ns=""/>
              </except>
           </anyName>
           <grammar>
              <start>
                <ref name="any"/>
              </start>
              <define name="any">
  	       <zeroOrMore>
  		  <choice>
  		     <attribute>
  			<anyName/>
  		     </attribute>
  		     <text/>
  		     <element>
  			<anyName/>
  			<ref name="any"/>
  		     </element>
  		  </choice>
  	       </zeroOrMore>
              </define>
           </grammar>
        </element>
     </define>
     <define name="template.model">
        <zeroOrMore>
           <choice>
              <ref name="instruction.category"/>
              <ref name="literal-result-element"/>
              <text/>
           </choice>
        </zeroOrMore>
     </define>
     <define name="literal-result-element-as-stylesheet">
        <element>
           <anyName>
              <except>
                 <nsName/>
              </except>
           </anyName>
           <attribute>
              <name>version</name>
              <ref name="version"/>
           </attribute>
           <ref name="literal-result-element-no-version.atts"/>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="literal-result-element">
        <element>
           <anyName>
              <except>
                 <nsName/>
              </except>
           </anyName>
           <ref name="literal-result-element.atts"/>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="literal-result-element.atts">
        <ref name="literal-result-element-no-version.atts"/>
        <optional>
  	 <attribute>
  	    <name>version</name>
  	    <ref name="version"/>
  	 </attribute>
        </optional>
     </define>
     <define name="literal-result-element-no-version.atts">
        <zeroOrMore>
           <choice>
              <attribute>
  	       <anyName>
  		  <except>
  		     <nsName/>
  		  </except>
  	       </anyName>
                 <ref name="avt.datatype"/>
              </attribute>
              <attribute>
                 <name>extension-element-prefixes</name>
                 <ref name="prefixes.datatype"/>
  	    </attribute>
              <attribute>
                 <name>exclude-result-prefixes</name>
                 <ref name="prefixes.datatype"/>
  	    </attribute>
              <attribute>
                 <name>use-attribute-sets</name>
                 <ref name="qnames.datatype"/>
              </attribute>
           </choice>
        </zeroOrMore>
     </define>
     <define name="top-level-element.category">
        <choice>
           <ref name="include.element"/>
           <ref name="strip-space.element"/>
           <ref name="preserve-space.element"/>
           <ref name="template.element"/>
           <ref name="namespace-alias.element"/>
           <ref name="attribute-set.element"/>
           <ref name="variable.element"/>
           <ref name="param.element"/>
           <ref name="key.element"/>
           <ref name="decimal-format.element"/>
           <ref name="output.element"/>
        </choice>
     </define>
     <define name="instruction.category">
        <choice>
           <ref name="apply-templates.element"/>
           <ref name="apply-imports.element"/>
           <ref name="call-template.element"/>
           <ref name="element.element"/>
           <ref name="attribute.element"/>
           <ref name="text.element"/>
           <ref name="processing-instruction.element"/>
           <ref name="comment.element"/>
           <ref name="copy.element"/>
           <ref name="value-of.element"/>
           <ref name="number.element"/>
           <ref name="for-each.element"/>
           <ref name="if.element"/>
           <ref name="choose.element"/>
           <ref name="variable.element"/>
           <ref name="copy-of.element"/>
           <ref name="message.element"/>
           <ref name="fallback.element"/>
        </choice>
     </define>
     <define name="extension.atts">
        <zeroOrMore>
           <attribute>
              <anyName>
                 <except>
                    <nsName/>
                    <nsName ns=""/>
                 </except>
              </anyName>
           </attribute>
        </zeroOrMore>
     </define>
     <define name="stylesheet.element">
        <element name="stylesheet">
           <ref name="stylesheet.model"/>
        </element>
     </define>
     <define name="transform.element">
        <element name="transform">
           <ref name="stylesheet.model"/>
        </element>
     </define>
     <define name="stylesheet.model">
        <ref name="extension.atts"/>
        <optional>
  	 <attribute name="id">
  	    <data type="NCName"/>
  	 </attribute>
        </optional>
        <optional>
  	 <attribute name="extension-element-prefixes">
              <ref name="prefixes.datatype"/>
  	 </attribute>
        </optional>
        <optional>
  	 <attribute name="exclude-result-prefixes">
              <ref name="prefixes.datatype"/>
  	 </attribute>
        </optional>
        <attribute name="version">
  	 <ref name="version"/>
        </attribute>
        <group>
  	 <zeroOrMore>
  	    <ref name="import.element"/>
  	 </zeroOrMore>
  	 <ref name="top-level-elements.model"/>
        </group>
     </define>
     <define name="include.element">
        <element name="include">
           <ref name="extension.atts"/>
           <attribute name="href">
              <data type="anyURI"/>
           </attribute>
        </element>
     </define>
     <define name="import.element">
        <element name="import">
           <ref name="extension.atts"/>
           <attribute name="href">
              <data type="anyURI"/>
           </attribute>
        </element>
     </define>
     <define name="strip-space.element">
        <element name="strip-space">
           <ref name="extension.atts"/>
           <attribute name="elements">
              <ref name="wildcards.datatype"/>
           </attribute>
        </element>
     </define>
     <define name="preserve-space.element">
        <element name="preserve-space">
           <ref name="extension.atts"/>
           <attribute name="elements">
              <ref name="wildcards.datatype"/>
           </attribute>
        </element>
     </define>
     <define name="template.element">
        <element name="template">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="match">
                 <ref name="pattern.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="name">
                 <ref name="qname.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="priority">
                 <ref name="number.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="mode">
                 <ref name="qname.datatype"/>
              </attribute>
           </optional>
           <group>
              <zeroOrMore>
                 <ref name="param.element"/>
              </zeroOrMore>
              <ref name="template.model"/>
           </group>
        </element>
     </define>
     <define name="apply-templates.element">
        <element name="apply-templates">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="select">
                 <ref name="expression.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="mode">
                 <ref name="qname.datatype"/>
              </attribute>
           </optional>
           <zeroOrMore>
              <choice>
                 <ref name="sort.element"/>
                 <ref name="with-param.element"/>
              </choice>
           </zeroOrMore>
        </element>
     </define>
     <define name="apply-imports.element">
        <element name="apply-imports">
           <ref name="extension.atts"/>
        </element>
     </define>
     <define name="call-template.element">
        <element name="call-template">
           <ref name="extension.atts"/>
           <attribute name="name">
              <ref name="qname.datatype"/>
           </attribute>
           <zeroOrMore>
              <ref name="with-param.element"/>
           </zeroOrMore>
        </element>
     </define>
     <define name="namespace-alias.element">
        <element name="namespace-alias">
           <ref name="extension.atts"/>
           <attribute name="stylesheet-prefix">
              <ref name="prefix.datatype"/>
           </attribute>
           <attribute name="result-prefix">
              <ref name="prefix.datatype"/>
           </attribute>
        </element>
     </define>
     <define name="element.element">
        <element name="element">
           <ref name="extension.atts"/>
           <attribute name="name">
              <choice>
                 <ref name="qname.datatype"/>
                 <ref name="expr-avt.datatype"/>
              </choice>
           </attribute>
           <optional>
              <attribute name="namespace">
                 <choice>
                    <data type="anyURI"/>
                    <ref name="brace-avt.datatype"/>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="use-attribute-sets">
                 <ref name="qnames.datatype"/>
              </attribute>
           </optional>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="attribute.element">
        <element name="attribute">
           <ref name="extension.atts"/>
           <attribute name="name">
              <choice>
                 <ref name="qname.datatype"/>
                 <ref name="expr-avt.datatype"/>
              </choice>
           </attribute>
           <optional>
              <attribute name="namespace">
                 <choice>
                    <data type="anyURI"/>
                    <ref name="brace-avt.datatype"/>
                 </choice>
              </attribute>
           </optional>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="attribute-set.element">
        <element name="attribute-set">
           <ref name="extension.atts"/>
           <attribute name="name">
              <ref name="qname.datatype"/>
           </attribute>
           <optional>
              <attribute name="use-attribute-sets">
                 <ref name="qnames.datatype"/>
              </attribute>
           </optional>
           <zeroOrMore>
              <ref name="attribute.element"/>
           </zeroOrMore>
        </element>
     </define>
     <define name="text.element">
        <element name="text">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="disable-output-escaping">
                 <choice>
                    <value type="string">yes</value>
                    <value type="string">no</value>
                 </choice>
              </attribute>
           </optional>
           <text/>
        </element>
     </define>
     <define name="processing-instruction.element">
        <element name="processing-instruction">
           <ref name="extension.atts"/>
           <attribute name="name">
              <choice>
                 <data type="NCName"/>
                 <ref name="expr-avt.datatype"/>
              </choice>
           </attribute>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="comment.element">
        <element name="comment">
           <ref name="extension.atts"/>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="copy.element">
        <element name="copy">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="use-attribute-sets">
                 <ref name="qnames.datatype"/>
              </attribute>
           </optional>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="value-of.element">
        <element name="value-of">
           <ref name="extension.atts"/>
           <attribute name="select">
              <ref name="expression.datatype"/>
           </attribute>
           <optional>
              <attribute name="disable-output-escaping">
                 <choice>
                    <value type="string">yes</value>
                    <value type="string">no</value>
                 </choice>
              </attribute>
           </optional>
        </element>
     </define>
     <define name="number.element">
        <element name="number">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="level">
                 <choice>
                    <value type="string">single</value>
                    <value type="string">multiple</value>
                    <value type="string">any</value>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="count">
                 <ref name="pattern.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="from">
                 <ref name="pattern.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="value">
                 <ref name="expression.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="format">
                 <ref name="avt.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="lang">
                 <choice>
                    <data type="NMTOKEN"/>
                    <ref name="expr-avt.datatype"/>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="letter-value">
  	       <choice>
  		  <value type="string">alphabetic</value>
  		  <value type="string">traditional</value>
  		  <ref name="expr-avt.datatype"/>
  	       </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="grouping-separator">
                 <choice>
                    <ref name="char.datatype"/>
                    <ref name="expr-avt.datatype"/>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="grouping-size">
                 <choice>
                    <ref name="number.datatype"/>
                    <ref name="expr-avt.datatype"/>
                 </choice>
              </attribute>
           </optional>
        </element>
     </define>
     <define name="for-each.element">
        <element name="for-each">
           <ref name="extension.atts"/>
           <attribute name="select">
              <ref name="expression.datatype"/>
           </attribute>
           <group>
              <zeroOrMore>
                 <ref name="sort.element"/>
              </zeroOrMore>
              <ref name="template.model"/>
           </group>
        </element>
     </define>
     <define name="if.element">
        <element name="if">
           <ref name="extension.atts"/>
           <attribute name="test">
              <ref name="expression.datatype"/>
           </attribute>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="choose.element">
        <element name="choose">
           <ref name="extension.atts"/>
           <group>
              <oneOrMore>
                 <ref name="when.element"/>
              </oneOrMore>
              <optional>
                 <ref name="otherwise.element"/>
              </optional>
           </group>
        </element>
     </define>
     <define name="when.element">
        <element name="when">
           <ref name="extension.atts"/>
           <attribute name="test">
              <ref name="expression.datatype"/>
           </attribute>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="otherwise.element">
        <element name="otherwise">
           <ref name="extension.atts"/>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="sort.element">
        <element name="sort">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="select">
                 <ref name="expression.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="lang">
                 <choice>
                    <data type="NMTOKEN"/>
                    <ref name="expr-avt.datatype"/>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="data-type">
  	       <choice>
  		  <value type="string">text</value>
  		  <value type="string">number</value>
  		  <ref name="qname-but-not-ncname.datatype"/>
  		  <ref name="expr-avt.datatype"/>
  	       </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="order">
  	       <choice>
  		  <value type="string">ascending</value>
  		  <value type="string">descending</value>
  		  <ref name="expr-avt.datatype"/>
  	       </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="case-order">
  	       <choice>
  		  <value type="string">upper-first</value>
  		  <value type="string">lower-first</value>
  		  <ref name="expr-avt.datatype"/>
  	       </choice>
              </attribute>
           </optional>
        </element>
     </define>
     <define name="variable.element">
        <element name="variable">
           <ref name="extension.atts"/>
           <attribute name="name">
              <ref name="qname.datatype"/>
           </attribute>
           <choice>
              <attribute name="select">
                 <ref name="expression.datatype"/>
              </attribute>
              <ref name="template.model"/>
           </choice>
        </element>
     </define>
     <define name="param.element">
        <element name="param">
           <ref name="extension.atts"/>
           <attribute name="name">
              <ref name="qname.datatype"/>
           </attribute>
           <choice>
              <attribute name="select">
                 <ref name="expression.datatype"/>
              </attribute>
              <ref name="template.model"/>
           </choice>
        </element>
     </define>
     <define name="copy-of.element">
        <element name="copy-of">
           <ref name="extension.atts"/>
           <attribute name="select">
              <ref name="expression.datatype"/>
           </attribute>
        </element>
     </define>
     <define name="with-param.element">
        <element name="with-param">
           <ref name="extension.atts"/>
           <attribute name="name">
              <ref name="qname.datatype"/>
           </attribute>
           <choice>
              <attribute name="select">
                 <ref name="expression.datatype"/>
              </attribute>
              <ref name="template.model"/>
           </choice>
        </element>
     </define>
     <define name="key.element">
        <element name="key">
           <ref name="extension.atts"/>
           <attribute name="name">
              <ref name="qname.datatype"/>
           </attribute>
           <attribute name="match">
              <ref name="pattern.datatype"/>
           </attribute>
           <attribute name="use">
              <ref name="expression.datatype"/>
           </attribute>
        </element>
     </define>
     <define name="decimal-format.element">
        <element name="decimal-format">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="name">
                 <ref name="qname.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="decimal-separator">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="grouping-separator">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="infinity">
                 <text/>
              </attribute>
           </optional>
           <optional>
              <attribute name="minus-sign">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="NaN">
                 <text/>
              </attribute>
           </optional>
           <optional>
              <attribute name="percent">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="per-mille">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="zero-digit">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="digit">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="pattern-separator">
                 <ref name="char.datatype"/>
              </attribute>
           </optional>
        </element>
     </define>
     <define name="message.element">
        <element name="message">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="terminate">
                 <choice>
                    <value type="string">yes</value>
                    <value type="string">no</value>
                 </choice>
              </attribute>
           </optional>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="fallback.element">
        <element name="fallback">
           <ref name="extension.atts"/>
           <ref name="template.model"/>
        </element>
     </define>
     <define name="output.element">
        <element name="output">
           <ref name="extension.atts"/>
           <optional>
              <attribute name="method">
                 <choice>
                    <value type="string">xml</value>
                    <value type="string">html</value>
                    <value type="string">text</value>
                    <ref name="qname-but-not-ncname.datatype"/>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="version">
                 <data type="NMTOKEN"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="encoding">
                 <text/>
              </attribute>
           </optional>
           <optional>
              <attribute name="omit-xml-declaration">
                 <choice>
                    <value type="string">yes</value>
                    <value type="string">no</value>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="standalone">
                 <choice>
                    <value type="string">yes</value>
                    <value type="string">no</value>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="doctype-public">
                 <text/>
              </attribute>
           </optional>
           <optional>
              <attribute name="doctype-system">
                 <text/>
              </attribute>
           </optional>
           <optional>
              <attribute name="cdata-section-elements">
                 <ref name="qnames.datatype"/>
              </attribute>
           </optional>
           <optional>
              <attribute name="indent">
                 <choice>
                    <value type="string">yes</value>
                    <value type="string">no</value>
                 </choice>
              </attribute>
           </optional>
           <optional>
              <attribute name="media-type">
                 <text/>
              </attribute>
           </optional>
        </element>
     </define>
     <define name="prefixes.datatype">
        <list>
           <zeroOrMore>
              <choice>
                 <data type="NCName"/>
                 <value>#default</value>
              </choice>
           </zeroOrMore>
        </list>
     </define>
     <define name="prefix.datatype">
        <choice>
  	 <data type="NCName"/>
  	 <value>#default</value>
        </choice>
     </define>
     <define name="wildcards.datatype">
        <list>
           <zeroOrMore>
  	    <choice>
  	       <data type="QName"/>
  	       <data type="token">
  		  <param name="pattern">\*|\i\c*:\*</param>
  	       </data>
  	    </choice>
           </zeroOrMore>
        </list> 
     </define>
     <define name="qname.datatype">
        <data type="QName"/>
     </define>
     <define name="qnames.datatype">
        <list>
           <zeroOrMore>
              <data type="QName"/>
           </zeroOrMore>
        </list>
     </define>
     <define name="char.datatype">
        <data type="string">
           <param name="length">1</param>
        </data>
     </define>
     <define name="number.datatype">
        <data type="decimal"/>
     </define>
     <define name="expression.datatype">
        <text/>
     </define>
     <define name="pattern.datatype">
        <text/>
     </define>
     <define name="qname-but-not-ncname.datatype">
        <data type="QName">
          <param name="pattern">.*:.*</param>
        </data>
     </define>
     <!-- An AVT containing at least one expression. -->
     <define name="expr-avt.datatype">
        <data type="string">
           <param name="pattern">([^\{\}]|\{\{|\}\})*\{([^&#34;'\{\}]|&#34;[^&#34;]*&#34;|'[^']*')+\}([^\{\}]|\{\{|\}\}|\{([^&#34;'\{\}]|&#34;[^&#34;]*&#34;|'[^']*')+\})*</param>
        </data>
     </define>
     <!-- An AVT containing at least one brace; ie where instantiated AVT
          is not the same as the literal AVT. -->
     <define name="brace-avt.datatype">
        <data type="string">
           <param name="pattern">[^\{\}]*(\{\{|\}\}|\{([^&#34;'\{\}]|&#34;[^&#34;]*&#34;|'[^']*')+\})([^\{\}]|\{\{|\}\}|\{([^&#34;'\{\}]|&#34;[^&#34;]*&#34;|'[^']*')+\})*</param>
        </data>
     </define>
     <define name="avt.datatype">
        <data type="string">
           <param name="pattern">([^\{\}]|\{\{|\}\}|\{([^&#34;'\{\}]|&#34;[^&#34;]*&#34;|'[^']*')+\})*</param>
        </data>
     </define>
  </grammar>
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org