home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / xampp / xampp-cocoon-addon-1.4.9-installer.exe / xslt-20020523.rng < prev    next >
Encoding:
Extensible Markup Language  |  2004-07-12  |  26.1 KB  |  898 lines

  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <!-- Id: xslt.rng,v 1.9 2002/05/23 09:39:03 jjc Exp $ -->
  3. <!-- http://www.thaiopensource.com/relaxng/xslt.rng -->
  4. <!-- This was mostly generated from the syntax summary in the XSLT
  5.      Recommendation (using XSLT of course). -->
  6. <!-- Issues: this validates extension elements as literal result
  7.      elements, which is overly restrictive. -->
  8. <grammar xmlns="http://relaxng.org/ns/structure/1.0"
  9.          ns="http://www.w3.org/1999/XSL/Transform"
  10.          datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  11.    <start>
  12.       <choice>
  13.          <ref name="stylesheet.element"/>
  14.          <ref name="transform.element"/>
  15.          <ref name="literal-result-element-as-stylesheet"/>
  16.       </choice>
  17.    </start>
  18.    <define name="version">
  19.       <value>1.0</value>
  20.    </define>
  21.    <define name="top-level-elements.model">
  22.       <zeroOrMore>
  23.          <choice>
  24.             <ref name="top-level-element.category"/>
  25.             <ref name="top-level-extension"/>
  26.          </choice>
  27.       </zeroOrMore>
  28.    </define>
  29.    <define name="top-level-extension">
  30.       <element>
  31.          <anyName>
  32.             <except>
  33.                <nsName/>
  34.                <nsName ns=""/>
  35.             </except>
  36.          </anyName>
  37.          <grammar>
  38.             <start>
  39.               <ref name="any"/>
  40.             </start>
  41.             <define name="any">
  42.            <zeroOrMore>
  43.           <choice>
  44.              <attribute>
  45.             <anyName/>
  46.              </attribute>
  47.              <text/>
  48.              <element>
  49.             <anyName/>
  50.             <ref name="any"/>
  51.              </element>
  52.           </choice>
  53.            </zeroOrMore>
  54.             </define>
  55.          </grammar>
  56.       </element>
  57.    </define>
  58.    <define name="template.model">
  59.       <zeroOrMore>
  60.          <choice>
  61.             <ref name="instruction.category"/>
  62.             <ref name="literal-result-element"/>
  63.             <text/>
  64.          </choice>
  65.       </zeroOrMore>
  66.    </define>
  67.    <define name="literal-result-element-as-stylesheet">
  68.       <element>
  69.          <anyName>
  70.             <except>
  71.                <nsName/>
  72.             </except>
  73.          </anyName>
  74.          <attribute>
  75.             <name>version</name>
  76.             <ref name="version"/>
  77.          </attribute>
  78.          <ref name="literal-result-element-no-version.atts"/>
  79.          <ref name="template.model"/>
  80.       </element>
  81.    </define>
  82.    <define name="literal-result-element">
  83.       <element>
  84.          <anyName>
  85.             <except>
  86.                <nsName/>
  87.             </except>
  88.          </anyName>
  89.          <ref name="literal-result-element.atts"/>
  90.          <ref name="template.model"/>
  91.       </element>
  92.    </define>
  93.    <define name="literal-result-element.atts">
  94.       <ref name="literal-result-element-no-version.atts"/>
  95.       <optional>
  96.      <attribute>
  97.         <name>version</name>
  98.         <ref name="version"/>
  99.      </attribute>
  100.       </optional>
  101.    </define>
  102.    <define name="literal-result-element-no-version.atts">
  103.       <zeroOrMore>
  104.          <choice>
  105.             <attribute>
  106.            <anyName>
  107.           <except>
  108.              <nsName/>
  109.           </except>
  110.            </anyName>
  111.                <ref name="avt.datatype"/>
  112.             </attribute>
  113.             <attribute>
  114.                <name>extension-element-prefixes</name>
  115.                <ref name="prefixes.datatype"/>
  116.         </attribute>
  117.             <attribute>
  118.                <name>exclude-result-prefixes</name>
  119.                <ref name="prefixes.datatype"/>
  120.         </attribute>
  121.             <attribute>
  122.                <name>use-attribute-sets</name>
  123.                <ref name="qnames.datatype"/>
  124.             </attribute>
  125.          </choice>
  126.       </zeroOrMore>
  127.    </define>
  128.    <define name="top-level-element.category">
  129.       <choice>
  130.          <ref name="include.element"/>
  131.          <ref name="strip-space.element"/>
  132.          <ref name="preserve-space.element"/>
  133.          <ref name="template.element"/>
  134.          <ref name="namespace-alias.element"/>
  135.          <ref name="attribute-set.element"/>
  136.          <ref name="variable.element"/>
  137.          <ref name="param.element"/>
  138.          <ref name="key.element"/>
  139.          <ref name="decimal-format.element"/>
  140.          <ref name="output.element"/>
  141.       </choice>
  142.    </define>
  143.    <define name="instruction.category">
  144.       <choice>
  145.          <ref name="apply-templates.element"/>
  146.          <ref name="apply-imports.element"/>
  147.          <ref name="call-template.element"/>
  148.          <ref name="element.element"/>
  149.          <ref name="attribute.element"/>
  150.          <ref name="text.element"/>
  151.          <ref name="processing-instruction.element"/>
  152.          <ref name="comment.element"/>
  153.          <ref name="copy.element"/>
  154.          <ref name="value-of.element"/>
  155.          <ref name="number.element"/>
  156.          <ref name="for-each.element"/>
  157.          <ref name="if.element"/>
  158.          <ref name="choose.element"/>
  159.          <ref name="variable.element"/>
  160.          <ref name="copy-of.element"/>
  161.          <ref name="message.element"/>
  162.          <ref name="fallback.element"/>
  163.       </choice>
  164.    </define>
  165.    <define name="extension.atts">
  166.       <zeroOrMore>
  167.          <attribute>
  168.             <anyName>
  169.                <except>
  170.                   <nsName/>
  171.                   <nsName ns=""/>
  172.                </except>
  173.             </anyName>
  174.          </attribute>
  175.       </zeroOrMore>
  176.    </define>
  177.    <define name="stylesheet.element">
  178.       <element name="stylesheet">
  179.          <ref name="stylesheet.model"/>
  180.       </element>
  181.    </define>
  182.    <define name="transform.element">
  183.       <element name="transform">
  184.          <ref name="stylesheet.model"/>
  185.       </element>
  186.    </define>
  187.    <define name="stylesheet.model">
  188.       <ref name="extension.atts"/>
  189.       <optional>
  190.      <attribute name="id">
  191.         <data type="NCName"/>
  192.      </attribute>
  193.       </optional>
  194.       <optional>
  195.      <attribute name="extension-element-prefixes">
  196.             <ref name="prefixes.datatype"/>
  197.      </attribute>
  198.       </optional>
  199.       <optional>
  200.      <attribute name="exclude-result-prefixes">
  201.             <ref name="prefixes.datatype"/>
  202.      </attribute>
  203.       </optional>
  204.       <attribute name="version">
  205.      <ref name="version"/>
  206.       </attribute>
  207.       <group>
  208.      <zeroOrMore>
  209.         <ref name="import.element"/>
  210.      </zeroOrMore>
  211.      <ref name="top-level-elements.model"/>
  212.       </group>
  213.    </define>
  214.    <define name="include.element">
  215.       <element name="include">
  216.          <ref name="extension.atts"/>
  217.          <attribute name="href">
  218.             <data type="anyURI"/>
  219.          </attribute>
  220.       </element>
  221.    </define>
  222.    <define name="import.element">
  223.       <element name="import">
  224.          <ref name="extension.atts"/>
  225.          <attribute name="href">
  226.             <data type="anyURI"/>
  227.          </attribute>
  228.       </element>
  229.    </define>
  230.    <define name="strip-space.element">
  231.       <element name="strip-space">
  232.          <ref name="extension.atts"/>
  233.          <attribute name="elements">
  234.             <ref name="wildcards.datatype"/>
  235.          </attribute>
  236.       </element>
  237.    </define>
  238.    <define name="preserve-space.element">
  239.       <element name="preserve-space">
  240.          <ref name="extension.atts"/>
  241.          <attribute name="elements">
  242.             <ref name="wildcards.datatype"/>
  243.          </attribute>
  244.       </element>
  245.    </define>
  246.    <define name="template.element">
  247.       <element name="template">
  248.          <ref name="extension.atts"/>
  249.          <optional>
  250.             <attribute name="match">
  251.                <ref name="pattern.datatype"/>
  252.             </attribute>
  253.          </optional>
  254.          <optional>
  255.             <attribute name="name">
  256.                <ref name="qname.datatype"/>
  257.             </attribute>
  258.          </optional>
  259.          <optional>
  260.             <attribute name="priority">
  261.                <ref name="number.datatype"/>
  262.             </attribute>
  263.          </optional>
  264.          <optional>
  265.             <attribute name="mode">
  266.                <ref name="qname.datatype"/>
  267.             </attribute>
  268.          </optional>
  269.          <group>
  270.             <zeroOrMore>
  271.                <ref name="param.element"/>
  272.             </zeroOrMore>
  273.             <ref name="template.model"/>
  274.          </group>
  275.       </element>
  276.    </define>
  277.    <define name="apply-templates.element">
  278.       <element name="apply-templates">
  279.          <ref name="extension.atts"/>
  280.          <optional>
  281.             <attribute name="select">
  282.                <ref name="expression.datatype"/>
  283.             </attribute>
  284.          </optional>
  285.          <optional>
  286.             <attribute name="mode">
  287.                <ref name="qname.datatype"/>
  288.             </attribute>
  289.          </optional>
  290.          <zeroOrMore>
  291.             <choice>
  292.                <ref name="sort.element"/>
  293.                <ref name="with-param.element"/>
  294.             </choice>
  295.          </zeroOrMore>
  296.       </element>
  297.    </define>
  298.    <define name="apply-imports.element">
  299.       <element name="apply-imports">
  300.          <ref name="extension.atts"/>
  301.       </element>
  302.    </define>
  303.    <define name="call-template.element">
  304.       <element name="call-template">
  305.          <ref name="extension.atts"/>
  306.          <attribute name="name">
  307.             <ref name="qname.datatype"/>
  308.          </attribute>
  309.          <zeroOrMore>
  310.             <ref name="with-param.element"/>
  311.          </zeroOrMore>
  312.       </element>
  313.    </define>
  314.    <define name="namespace-alias.element">
  315.       <element name="namespace-alias">
  316.          <ref name="extension.atts"/>
  317.          <attribute name="stylesheet-prefix">
  318.             <ref name="prefix.datatype"/>
  319.          </attribute>
  320.          <attribute name="result-prefix">
  321.             <ref name="prefix.datatype"/>
  322.          </attribute>
  323.       </element>
  324.    </define>
  325.    <define name="element.element">
  326.       <element name="element">
  327.          <ref name="extension.atts"/>
  328.          <attribute name="name">
  329.             <choice>
  330.                <ref name="qname.datatype"/>
  331.                <ref name="expr-avt.datatype"/>
  332.             </choice>
  333.          </attribute>
  334.          <optional>
  335.             <attribute name="namespace">
  336.                <choice>
  337.                   <data type="anyURI"/>
  338.                   <ref name="brace-avt.datatype"/>
  339.                </choice>
  340.             </attribute>
  341.          </optional>
  342.          <optional>
  343.             <attribute name="use-attribute-sets">
  344.                <ref name="qnames.datatype"/>
  345.             </attribute>
  346.          </optional>
  347.          <ref name="template.model"/>
  348.       </element>
  349.    </define>
  350.    <define name="attribute.element">
  351.       <element name="attribute">
  352.          <ref name="extension.atts"/>
  353.          <attribute name="name">
  354.             <choice>
  355.                <ref name="qname.datatype"/>
  356.                <ref name="expr-avt.datatype"/>
  357.             </choice>
  358.          </attribute>
  359.          <optional>
  360.             <attribute name="namespace">
  361.                <choice>
  362.                   <data type="anyURI"/>
  363.                   <ref name="brace-avt.datatype"/>
  364.                </choice>
  365.             </attribute>
  366.          </optional>
  367.          <ref name="template.model"/>
  368.       </element>
  369.    </define>
  370.    <define name="attribute-set.element">
  371.       <element name="attribute-set">
  372.          <ref name="extension.atts"/>
  373.          <attribute name="name">
  374.             <ref name="qname.datatype"/>
  375.          </attribute>
  376.          <optional>
  377.             <attribute name="use-attribute-sets">
  378.                <ref name="qnames.datatype"/>
  379.             </attribute>
  380.          </optional>
  381.          <zeroOrMore>
  382.             <ref name="attribute.element"/>
  383.          </zeroOrMore>
  384.       </element>
  385.    </define>
  386.    <define name="text.element">
  387.       <element name="text">
  388.          <ref name="extension.atts"/>
  389.          <optional>
  390.             <attribute name="disable-output-escaping">
  391.                <choice>
  392.                   <value type="string">yes</value>
  393.                   <value type="string">no</value>
  394.                </choice>
  395.             </attribute>
  396.          </optional>
  397.          <text/>
  398.       </element>
  399.    </define>
  400.    <define name="processing-instruction.element">
  401.       <element name="processing-instruction">
  402.          <ref name="extension.atts"/>
  403.          <attribute name="name">
  404.             <choice>
  405.                <data type="NCName"/>
  406.                <ref name="expr-avt.datatype"/>
  407.             </choice>
  408.          </attribute>
  409.          <ref name="template.model"/>
  410.       </element>
  411.    </define>
  412.    <define name="comment.element">
  413.       <element name="comment">
  414.          <ref name="extension.atts"/>
  415.          <ref name="template.model"/>
  416.       </element>
  417.    </define>
  418.    <define name="copy.element">
  419.       <element name="copy">
  420.          <ref name="extension.atts"/>
  421.          <optional>
  422.             <attribute name="use-attribute-sets">
  423.                <ref name="qnames.datatype"/>
  424.             </attribute>
  425.          </optional>
  426.          <ref name="template.model"/>
  427.       </element>
  428.    </define>
  429.    <define name="value-of.element">
  430.       <element name="value-of">
  431.          <ref name="extension.atts"/>
  432.          <attribute name="select">
  433.             <ref name="expression.datatype"/>
  434.          </attribute>
  435.          <optional>
  436.             <attribute name="disable-output-escaping">
  437.                <choice>
  438.                   <value type="string">yes</value>
  439.                   <value type="string">no</value>
  440.                </choice>
  441.             </attribute>
  442.          </optional>
  443.       </element>
  444.    </define>
  445.    <define name="number.element">
  446.       <element name="number">
  447.          <ref name="extension.atts"/>
  448.          <optional>
  449.             <attribute name="level">
  450.                <choice>
  451.                   <value type="string">single</value>
  452.                   <value type="string">multiple</value>
  453.                   <value type="string">any</value>
  454.                </choice>
  455.             </attribute>
  456.          </optional>
  457.          <optional>
  458.             <attribute name="count">
  459.                <ref name="pattern.datatype"/>
  460.             </attribute>
  461.          </optional>
  462.          <optional>
  463.             <attribute name="from">
  464.                <ref name="pattern.datatype"/>
  465.             </attribute>
  466.          </optional>
  467.          <optional>
  468.             <attribute name="value">
  469.                <ref name="expression.datatype"/>
  470.             </attribute>
  471.          </optional>
  472.          <optional>
  473.             <attribute name="format">
  474.                <ref name="avt.datatype"/>
  475.             </attribute>
  476.          </optional>
  477.          <optional>
  478.             <attribute name="lang">
  479.                <choice>
  480.                   <data type="NMTOKEN"/>
  481.                   <ref name="expr-avt.datatype"/>
  482.                </choice>
  483.             </attribute>
  484.          </optional>
  485.          <optional>
  486.             <attribute name="letter-value">
  487.            <choice>
  488.           <value type="string">alphabetic</value>
  489.           <value type="string">traditional</value>
  490.           <ref name="expr-avt.datatype"/>
  491.            </choice>
  492.             </attribute>
  493.          </optional>
  494.          <optional>
  495.             <attribute name="grouping-separator">
  496.                <choice>
  497.                   <ref name="char.datatype"/>
  498.                   <ref name="expr-avt.datatype"/>
  499.                </choice>
  500.             </attribute>
  501.          </optional>
  502.          <optional>
  503.             <attribute name="grouping-size">
  504.                <choice>
  505.                   <ref name="number.datatype"/>
  506.                   <ref name="expr-avt.datatype"/>
  507.                </choice>
  508.             </attribute>
  509.          </optional>
  510.       </element>
  511.    </define>
  512.    <define name="for-each.element">
  513.       <element name="for-each">
  514.          <ref name="extension.atts"/>
  515.          <attribute name="select">
  516.             <ref name="expression.datatype"/>
  517.          </attribute>
  518.          <group>
  519.             <zeroOrMore>
  520.                <ref name="sort.element"/>
  521.             </zeroOrMore>
  522.             <ref name="template.model"/>
  523.          </group>
  524.       </element>
  525.    </define>
  526.    <define name="if.element">
  527.       <element name="if">
  528.          <ref name="extension.atts"/>
  529.          <attribute name="test">
  530.             <ref name="expression.datatype"/>
  531.          </attribute>
  532.          <ref name="template.model"/>
  533.       </element>
  534.    </define>
  535.    <define name="choose.element">
  536.       <element name="choose">
  537.          <ref name="extension.atts"/>
  538.          <group>
  539.             <oneOrMore>
  540.                <ref name="when.element"/>
  541.             </oneOrMore>
  542.             <optional>
  543.                <ref name="otherwise.element"/>
  544.             </optional>
  545.          </group>
  546.       </element>
  547.    </define>
  548.    <define name="when.element">
  549.       <element name="when">
  550.          <ref name="extension.atts"/>
  551.          <attribute name="test">
  552.             <ref name="expression.datatype"/>
  553.          </attribute>
  554.          <ref name="template.model"/>
  555.       </element>
  556.    </define>
  557.    <define name="otherwise.element">
  558.       <element name="otherwise">
  559.          <ref name="extension.atts"/>
  560.          <ref name="template.model"/>
  561.       </element>
  562.    </define>
  563.    <define name="sort.element">
  564.       <element name="sort">
  565.          <ref name="extension.atts"/>
  566.          <optional>
  567.             <attribute name="select">
  568.                <ref name="expression.datatype"/>
  569.             </attribute>
  570.          </optional>
  571.          <optional>
  572.             <attribute name="lang">
  573.                <choice>
  574.                   <data type="NMTOKEN"/>
  575.                   <ref name="expr-avt.datatype"/>
  576.                </choice>
  577.             </attribute>
  578.          </optional>
  579.          <optional>
  580.             <attribute name="data-type">
  581.            <choice>
  582.           <value type="string">text</value>
  583.           <value type="string">number</value>
  584.           <ref name="qname-but-not-ncname.datatype"/>
  585.           <ref name="expr-avt.datatype"/>
  586.            </choice>
  587.             </attribute>
  588.          </optional>
  589.          <optional>
  590.             <attribute name="order">
  591.            <choice>
  592.           <value type="string">ascending</value>
  593.           <value type="string">descending</value>
  594.           <ref name="expr-avt.datatype"/>
  595.            </choice>
  596.             </attribute>
  597.          </optional>
  598.          <optional>
  599.             <attribute name="case-order">
  600.            <choice>
  601.           <value type="string">upper-first</value>
  602.           <value type="string">lower-first</value>
  603.           <ref name="expr-avt.datatype"/>
  604.            </choice>
  605.             </attribute>
  606.          </optional>
  607.       </element>
  608.    </define>
  609.    <define name="variable.element">
  610.       <element name="variable">
  611.          <ref name="extension.atts"/>
  612.          <attribute name="name">
  613.             <ref name="qname.datatype"/>
  614.          </attribute>
  615.          <choice>
  616.             <attribute name="select">
  617.                <ref name="expression.datatype"/>
  618.             </attribute>
  619.             <ref name="template.model"/>
  620.          </choice>
  621.       </element>
  622.    </define>
  623.    <define name="param.element">
  624.       <element name="param">
  625.          <ref name="extension.atts"/>
  626.          <attribute name="name">
  627.             <ref name="qname.datatype"/>
  628.          </attribute>
  629.          <choice>
  630.             <attribute name="select">
  631.                <ref name="expression.datatype"/>
  632.             </attribute>
  633.             <ref name="template.model"/>
  634.          </choice>
  635.       </element>
  636.    </define>
  637.    <define name="copy-of.element">
  638.       <element name="copy-of">
  639.          <ref name="extension.atts"/>
  640.          <attribute name="select">
  641.             <ref name="expression.datatype"/>
  642.          </attribute>
  643.       </element>
  644.    </define>
  645.    <define name="with-param.element">
  646.       <element name="with-param">
  647.          <ref name="extension.atts"/>
  648.          <attribute name="name">
  649.             <ref name="qname.datatype"/>
  650.          </attribute>
  651.          <choice>
  652.             <attribute name="select">
  653.                <ref name="expression.datatype"/>
  654.             </attribute>
  655.             <ref name="template.model"/>
  656.          </choice>
  657.       </element>
  658.    </define>
  659.    <define name="key.element">
  660.       <element name="key">
  661.          <ref name="extension.atts"/>
  662.          <attribute name="name">
  663.             <ref name="qname.datatype"/>
  664.          </attribute>
  665.          <attribute name="match">
  666.             <ref name="pattern.datatype"/>
  667.          </attribute>
  668.          <attribute name="use">
  669.             <ref name="expression.datatype"/>
  670.          </attribute>
  671.       </element>
  672.    </define>
  673.    <define name="decimal-format.element">
  674.       <element name="decimal-format">
  675.          <ref name="extension.atts"/>
  676.          <optional>
  677.             <attribute name="name">
  678.                <ref name="qname.datatype"/>
  679.             </attribute>
  680.          </optional>
  681.          <optional>
  682.             <attribute name="decimal-separator">
  683.                <ref name="char.datatype"/>
  684.             </attribute>
  685.          </optional>
  686.          <optional>
  687.             <attribute name="grouping-separator">
  688.                <ref name="char.datatype"/>
  689.             </attribute>
  690.          </optional>
  691.          <optional>
  692.             <attribute name="infinity">
  693.                <text/>
  694.             </attribute>
  695.          </optional>
  696.          <optional>
  697.             <attribute name="minus-sign">
  698.                <ref name="char.datatype"/>
  699.             </attribute>
  700.          </optional>
  701.          <optional>
  702.             <attribute name="NaN">
  703.                <text/>
  704.             </attribute>
  705.          </optional>
  706.          <optional>
  707.             <attribute name="percent">
  708.                <ref name="char.datatype"/>
  709.             </attribute>
  710.          </optional>
  711.          <optional>
  712.             <attribute name="per-mille">
  713.                <ref name="char.datatype"/>
  714.             </attribute>
  715.          </optional>
  716.          <optional>
  717.             <attribute name="zero-digit">
  718.                <ref name="char.datatype"/>
  719.             </attribute>
  720.          </optional>
  721.          <optional>
  722.             <attribute name="digit">
  723.                <ref name="char.datatype"/>
  724.             </attribute>
  725.          </optional>
  726.          <optional>
  727.             <attribute name="pattern-separator">
  728.                <ref name="char.datatype"/>
  729.             </attribute>
  730.          </optional>
  731.       </element>
  732.    </define>
  733.    <define name="message.element">
  734.       <element name="message">
  735.          <ref name="extension.atts"/>
  736.          <optional>
  737.             <attribute name="terminate">
  738.                <choice>
  739.                   <value type="string">yes</value>
  740.                   <value type="string">no</value>
  741.                </choice>
  742.             </attribute>
  743.          </optional>
  744.          <ref name="template.model"/>
  745.       </element>
  746.    </define>
  747.    <define name="fallback.element">
  748.       <element name="fallback">
  749.          <ref name="extension.atts"/>
  750.          <ref name="template.model"/>
  751.       </element>
  752.    </define>
  753.    <define name="output.element">
  754.       <element name="output">
  755.          <ref name="extension.atts"/>
  756.          <optional>
  757.             <attribute name="method">
  758.                <choice>
  759.                   <value type="string">xml</value>
  760.                   <value type="string">html</value>
  761.                   <value type="string">text</value>
  762.                   <ref name="qname-but-not-ncname.datatype"/>
  763.                </choice>
  764.             </attribute>
  765.          </optional>
  766.          <optional>
  767.             <attribute name="version">
  768.                <data type="NMTOKEN"/>
  769.             </attribute>
  770.          </optional>
  771.          <optional>
  772.             <attribute name="encoding">
  773.                <text/>
  774.             </attribute>
  775.          </optional>
  776.          <optional>
  777.             <attribute name="omit-xml-declaration">
  778.                <choice>
  779.                   <value type="string">yes</value>
  780.                   <value type="string">no</value>
  781.                </choice>
  782.             </attribute>
  783.          </optional>
  784.          <optional>
  785.             <attribute name="standalone">
  786.                <choice>
  787.                   <value type="string">yes</value>
  788.                   <value type="string">no</value>
  789.                </choice>
  790.             </attribute>
  791.          </optional>
  792.          <optional>
  793.             <attribute name="doctype-public">
  794.                <text/>
  795.             </attribute>
  796.          </optional>
  797.          <optional>
  798.             <attribute name="doctype-system">
  799.                <text/>
  800.             </attribute>
  801.          </optional>
  802.          <optional>
  803.             <attribute name="cdata-section-elements">
  804.                <ref name="qnames.datatype"/>
  805.             </attribute>
  806.          </optional>
  807.          <optional>
  808.             <attribute name="indent">
  809.                <choice>
  810.                   <value type="string">yes</value>
  811.                   <value type="string">no</value>
  812.                </choice>
  813.             </attribute>
  814.          </optional>
  815.          <optional>
  816.             <attribute name="media-type">
  817.                <text/>
  818.             </attribute>
  819.          </optional>
  820.       </element>
  821.    </define>
  822.    <define name="prefixes.datatype">
  823.       <list>
  824.          <zeroOrMore>
  825.             <choice>
  826.                <data type="NCName"/>
  827.                <value>#default</value>
  828.             </choice>
  829.          </zeroOrMore>
  830.       </list>
  831.    </define>
  832.    <define name="prefix.datatype">
  833.       <choice>
  834.      <data type="NCName"/>
  835.      <value>#default</value>
  836.       </choice>
  837.    </define>
  838.    <define name="wildcards.datatype">
  839.       <list>
  840.          <zeroOrMore>
  841.         <choice>
  842.            <data type="QName"/>
  843.            <data type="token">
  844.           <param name="pattern">\*|\i\c*:\*</param>
  845.            </data>
  846.         </choice>
  847.          </zeroOrMore>
  848.       </list> 
  849.    </define>
  850.    <define name="qname.datatype">
  851.       <data type="QName"/>
  852.    </define>
  853.    <define name="qnames.datatype">
  854.       <list>
  855.          <zeroOrMore>
  856.             <data type="QName"/>
  857.          </zeroOrMore>
  858.       </list>
  859.    </define>
  860.    <define name="char.datatype">
  861.       <data type="string">
  862.          <param name="length">1</param>
  863.       </data>
  864.    </define>
  865.    <define name="number.datatype">
  866.       <data type="decimal"/>
  867.    </define>
  868.    <define name="expression.datatype">
  869.       <text/>
  870.    </define>
  871.    <define name="pattern.datatype">
  872.       <text/>
  873.    </define>
  874.    <define name="qname-but-not-ncname.datatype">
  875.       <data type="QName">
  876.         <param name="pattern">.*:.*</param>
  877.       </data>
  878.    </define>
  879.    <!-- An AVT containing at least one expression. -->
  880.    <define name="expr-avt.datatype">
  881.       <data type="string">
  882.          <param name="pattern">([^\{\}]|\{\{|\}\})*\{([^"'\{\}]|"[^"]*"|'[^']*')+\}([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*</param>
  883.       </data>
  884.    </define>
  885.    <!-- An AVT containing at least one brace; ie where instantiated AVT
  886.         is not the same as the literal AVT. -->
  887.    <define name="brace-avt.datatype">
  888.       <data type="string">
  889.          <param name="pattern">[^\{\}]*(\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*</param>
  890.       </data>
  891.    </define>
  892.    <define name="avt.datatype">
  893.       <data type="string">
  894.          <param name="pattern">([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*</param>
  895.       </data>
  896.    </define>
  897. </grammar>
  898.