Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
257 lines (235 sloc) 5.11 KB
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Tables Module -->
<!-- This builds on the basic tables module, unlike with the DTD
implementation. -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<include href="basic-table.rng">
<define name="table">
<element name="table">
<ref name="table.attlist"/>
<optional>
<ref name="caption"/>
</optional>
<choice>
<zeroOrMore>
<ref name="col"/>
</zeroOrMore>
<zeroOrMore>
<ref name="colgroup"/>
</zeroOrMore>
</choice>
<choice>
<group>
<optional>
<ref name="thead"/>
</optional>
<optional>
<ref name="tfoot"/>
</optional>
<oneOrMore>
<ref name="tbody"/>
</oneOrMore>
</group>
<oneOrMore>
<ref name="tr"/>
</oneOrMore>
</choice>
</element>
</define>
<define name="th">
<element name="th">
<ref name="th.attlist"/>
<ref name="Flow.model"/>
</element>
</define>
<define name="td">
<element name="td">
<ref name="td.attlist"/>
<ref name="Flow.model"/>
</element>
</define>
<define name="CellHAlign.attrib">
<optional>
<attribute name="align">
<choice>
<value>left</value>
<value>center</value>
<value>right</value>
<value>justify</value>
<value>char</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="char">
<ref name="Character.datatype"/>
</attribute>
</optional>
<optional>
<attribute name="charoff">
<ref name="Length.datatype"/>
</attribute>
</optional>
</define>
<define name="CellVAlign.attrib">
<optional>
<attribute name="valign">
<choice>
<value>top</value>
<value>middle</value>
<value>bottom</value>
<value>baseline</value>
</choice>
</attribute>
</optional>
</define>
<define name="scope.attrib">
<optional>
<attribute name="scope">
<choice>
<value>row</value>
<value>col</value>
<value>rowgroup</value>
<value>colgroup</value>
</choice>
</attribute>
</optional>
</define>
</include>
<define name="table.attlist" combine="interleave">
<optional>
<attribute name="width">
<ref name="Length.datatype"/>
</attribute>
</optional>
<optional>
<attribute name="border">
<ref name="Pixels.datatype"/>
</attribute>
</optional>
<ref name="frame.attrib"/>
<ref name="rules.attrib"/>
<optional>
<attribute name="cellspacing">
<ref name="Length.datatype"/>
</attribute>
</optional>
<optional>
<attribute name="cellpadding">
<ref name="Length.datatype"/>
</attribute>
</optional>
</define>
<define name="col">
<element name="col">
<ref name="col.attlist"/>
</element>
</define>
<define name="col.attlist">
<ref name="Common.attrib"/>
<optional>
<attribute name="span">
<ref name="Number.datatype"/>
</attribute>
</optional>
<optional>
<attribute name="width">
<ref name="MultiLength.datatype"/>
</attribute>
</optional>
<ref name="CellHAlign.attrib"/>
<ref name="CellVAlign.attrib"/>
</define>
<define name="colgroup">
<element name="colgroup">
<ref name="colgroup.attlist"/>
<zeroOrMore>
<ref name="col"/>
</zeroOrMore>
</element>
</define>
<define name="colgroup.attlist">
<ref name="Common.attrib"/>
<optional>
<attribute name="span">
<ref name="Number.datatype"/>
</attribute>
</optional>
<optional>
<attribute name="width">
<ref name="MultiLength.datatype"/>
</attribute>
</optional>
<ref name="CellHAlign.attrib"/>
<ref name="CellVAlign.attrib"/>
</define>
<define name="tbody">
<element name="tbody">
<ref name="tbody.attlist"/>
<oneOrMore>
<ref name="tr"/>
</oneOrMore>
</element>
</define>
<define name="tbody.attlist">
<ref name="Common.attrib"/>
<ref name="CellHAlign.attrib"/>
<ref name="CellVAlign.attrib"/>
</define>
<define name="thead">
<element name="thead">
<ref name="thead.attlist"/>
<oneOrMore>
<ref name="tr"/>
</oneOrMore>
</element>
</define>
<define name="thead.attlist">
<ref name="Common.attrib"/>
<ref name="CellHAlign.attrib"/>
<ref name="CellVAlign.attrib"/>
</define>
<define name="tfoot">
<element name="tfoot">
<ref name="tfoot.attlist"/>
<oneOrMore>
<ref name="tr"/>
</oneOrMore>
</element>
</define>
<define name="tfoot.attlist">
<ref name="Common.attrib"/>
<ref name="CellHAlign.attrib"/>
<ref name="CellVAlign.attrib"/>
</define>
<define name="frame.attrib">
<optional>
<attribute name="frame">
<choice>
<value>void</value>
<value>above</value>
<value>below</value>
<value>hsides</value>
<value>lhs</value>
<value>rhs</value>
<value>vsides</value>
<value>box</value>
<value>border</value>
</choice>
</attribute>
</optional>
</define>
<define name="rules.attrib">
<optional>
<attribute name="rules">
<choice>
<value>none</value>
<value>groups</value>
<value>rows</value>
<value>cols</value>
<value>all</value>
</choice>
</attribute>
</optional>
</define>
</grammar>