packages feed

concrete-relaxng-parser-0.1: xhtml-concrete.rng

<grammar ns="omissible+http://www.w3.org/1999/xhtml"
         xmlns:explicit="http://www.w3.org/1999/xhtml"
         xmlns:terminal="http://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols#Terminal_symbols"
         xmlns="http://relaxng.org/ns/structure/1.0">

<include href="xhtml/xhtml-strict.rng"/>

<define name="head" combine="choice">
  <element name="head">
    <ref name="head.content"/>
  </element>
</define>

<define name="title" combine="choice">
  <element name="title">
    <text/>
  </element>
</define>

<define name="body" combine="choice">
  <element name="body">
    <ref name="Block.model"/>
  </element>
</define>

<define name="p" combine="choice">
  <element name="p">
    <ref name="paragraph_separator"/>
    <ref name="Inline.model"/>
  </element>
</define>

<define name="ol" combine="choice">
  <element name="ol">
    <oneOrMore>
      <ref name="ol.li"/>
    </oneOrMore>
  </element>
</define>

<define name="ul" combine="choice">
  <element name="ul">
    <oneOrMore>
      <ref name="ul.li"/>
    </oneOrMore>
  </element>
</define>

<define name="hr" combine="choice">
  <element name="hr">
    <ref name="hr_marker"/>
  </element>
</define>

<define name="em" combine="choice">
  <element name="em">
    <ref name="emphasis_marker"/>
    <ref name="em.content.non-recursive"/>
    <ref name="emphasis_marker"/>
  </element>
</define>

<define name="ol.li">
  <element name="li">
    <ref name="ol_item_marker"/>
    <ref name="li.content.non-recursive"/>
  </element>
</define>

<define name="ul.li">
  <element name="li">
    <ref name="ul_item_marker"/>
    <ref name="li.content.non-recursive"/>
  </element>
</define>

<define name="em.content.non-recursive">
  <zeroOrMore>
    <choice>
      <text/>
      <ref name="abbr"/>
      <ref name="acronym"/>
      <ref name="br"/>
      <ref name="cite"/>
      <ref name="code"/>
      <ref name="dfn"/>
      <ref name="kbd"/>
      <ref name="q"/>
      <ref name="samp"/>
      <ref name="span"/>
      <ref name="strong"/>
      <ref name="var"/>
      <ref name="em.explicit"/>
    </choice>
  </zeroOrMore>
</define>

<define name="li.content.non-recursive">
  <zeroOrMore>
    <choice>
      <text/>
      <ref name="Inline.class"/>
      <ref name="address"/>
      <ref name="blockquote"/>
      <ref name="div"/>
      <ref name="pre"/>
      <ref name="Heading.class"/>
      <ref name="dl"/>
      <ref name="p.explicit"/>
      <ref name="ol.explicit"/>
      <ref name="ul.explicit"/>
    </choice>
  </zeroOrMore>
</define>

<define name="em.explicit">
  <element name="explicit:em">
    <ref name="em.attlist"/>
    <ref name="Inline.model"/>
  </element>
</define>

<define name="p.explicit">
  <element name="explicit:p">
    <ref name="p.attlist"/>
    <ref name="Inline.model"/>
  </element>
</define>

<define name="ol.explicit">
  <element name="explicit:ol">
    <ref name="ol.attlist"/>
    <oneOrMore>
      <ref name="li"/>
    </oneOrMore>
  </element>
</define>

<define name="ul.explicit">
  <element name="explicit:ul">
    <ref name="ul.attlist"/>
    <oneOrMore>
      <ref name="li"/>
    </oneOrMore>
  </element>
</define>

<define name="emphasis_marker">
  <element name="terminal:emphasis_marker">
    <value type="string">*</value>
  </element>
</define>

<define name="paragraph_separator">
  <element name="terminal:paragraph_separator">
    <value type="string">&#x0a;&#x0a;</value>
  </element>
</define>

<define name="line_separator">
  <element name="terminal:line_separator">
    <value type="string">&#x0a;</value>
  </element>
</define>

<define name="ol_item_marker">
  <element name="terminal:ol_item_marker">
    <value type="token">&#x0a;# </value>
  </element>
</define>

<define name="ul_item_marker">
  <element name="terminal:ul_item_marker">
    <value type="token">&#x0a;* </value>
  </element>
</define>

<define name="hr_marker">
  <element name="terminal:hr_marker">
    <value type="token">&#x0a;----</value>
  </element>
</define>
</grammar>