--- a/RelaxNG/publidoc.rnc dim. juin 12 16:02:23 2011 +0200
+++ b/RelaxNG/publidoc.rnc dim. juin 12 17:21:39 2011 +0200
@@ -324,10 +324,18 @@
rowsep.attribute = attribute rowsep { "0" | "1" }
# ~~~~~~ thead, tfoot, tbody
-thead = element thead { thead.content }
-tfoot = element tfoot { tfoot.content }
-tbody = element tbody { tbody.content }
+thead = element thead { thead.attributes, thead.content }
+tfoot = element tfoot { tfoot.attributes, tfoot.content }
+tbody = element tbody { tbody.attributes, tbody.content }
+thead.attributes =
+ valign.attribute?
+tfoot.attributes =
+ valign.attribute?
+tbody.attributes =
+ valign.attribute?
+valign.attribute = attribute valign { "top" | "middle" | "bottom" }
+
thead.content =
row+
tfoot.content =
@@ -340,7 +348,6 @@
row.attribute =
valign.attribute?
-valign.attribute = attribute valign { "top" | "middle" | "bottom" }
row.content =
entry+
--- a/RelaxNG/publidoc.rng dim. juin 12 16:02:23 2011 +0200
+++ b/RelaxNG/publidoc.rng dim. juin 12 17:21:39 2011 +0200
@@ -695,19 +695,46 @@
<!-- ~~~~~~ thead, tfoot, tbody -->
<define name="thead">
<element name="thead">
+ <ref name="thead.attributes"/>
<ref name="thead.content"/>
</element>
</define>
<define name="tfoot">
<element name="tfoot">
+ <ref name="tfoot.attributes"/>
<ref name="tfoot.content"/>
</element>
</define>
<define name="tbody">
<element name="tbody">
+ <ref name="tbody.attributes"/>
<ref name="tbody.content"/>
</element>
</define>
+ <define name="thead.attributes">
+ <optional>
+ <ref name="valign.attribute"/>
+ </optional>
+ </define>
+ <define name="tfoot.attributes">
+ <optional>
+ <ref name="valign.attribute"/>
+ </optional>
+ </define>
+ <define name="tbody.attributes">
+ <optional>
+ <ref name="valign.attribute"/>
+ </optional>
+ </define>
+ <define name="valign.attribute">
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </define>
<define name="thead.content">
<oneOrMore>
<ref name="row"/>
@@ -735,15 +762,6 @@
<ref name="valign.attribute"/>
</optional>
</define>
- <define name="valign.attribute">
- <attribute name="valign">
- <choice>
- <value>top</value>
- <value>middle</value>
- <value>bottom</value>
- </choice>
- </attribute>
- </define>
<define name="row.content">
<oneOrMore>
<ref name="entry"/>
--- a/Xml/Documents/torture_test.xml dim. juin 12 16:02:23 2011 +0200
+++ b/Xml/Documents/torture_test.xml dim. juin 12 17:21:39 2011 +0200
@@ -55,6 +55,36 @@
dans l'ombre, quelque ange immense était debout, les ailes déployées,
attendant l'âme.</p>
</section>
+ <section>
+ <head>
+ <title>Germinal</title>
+ <subtitle>Extrait</subtitle>
+ </head>
+ <section>
+ <p>Pas une parole n'était échangée. Ils tapaient tous, on
+ n'entendait que ces coups irréguliers, voilés et comme lointains.
+ Les bruits prenaient une sonorité rauque, sans un écho dans l'air
+ mort. Et il semblait que les ténèbres fussent d'un noir inconnu,
+ épaissi par les poussières volantes du charbon, alourdi par des gaz
+ qui pesaient sur les yeux. Les mèches des lampes, sous leurs
+ chapeaux de toile métallique, n'y mettaient que des points
+ rougeâtres.</p>
+ <p>On ne distinguait rien, la taille s'ouvrait, montait ainsi
+ qu'une large cheminée, plate et oblique, où la suie de dix hivers
+ aurait amassé une nuit profonde. Des formes spectrales s'y
+ agitaient, les lueurs perdues laissaient entrevoir une rondeur de
+ hanche, un bras noueux, une tête violente, barbouillée comme pour
+ un crime. Parfois, en se détachant, luisaient des blocs de houille,
+ des pans et des arêtes, brusquement allumés d'un reflet de cristal.
+ Puis, tout retombait au noir, les rivelaines tapaient à grands
+ coups sourds, il n'y avait plus que le halètement des poitrines, le
+ grognement de gêne et de fatigue, sous la pesanteur de l'air et la
+ pluie des sources.</p>
+ </section>
+ <section status="sign">
+ <p>Émile ZOLA</p>
+ </section>
+ </section>
</topic>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<topic>
@@ -68,9 +98,7 @@
</head>
<speech>
<speaker>Le fâcheux</speaker>
- <p>
- Quoi, pas un grand seigneur pour couvrir de son nom ?…
- </p>
+ <p>Quoi, pas un grand seigneur pour couvrir de son nom ?…</p>
</speech>
<speech>
<speaker>Cyrano</speaker>
@@ -166,24 +194,34 @@
</head>
<section>
<table>
+ <head>
+ <title>Un tableau simple</title>
+ </head>
<tgroup cols="3" align="left">
<thead>
<row>
- <entry>head 1.1</entry>
- <entry>head 1.2</entry>
- <entry>head 1.3</entry>
+ <entry>Head 1</entry>
+ <entry>Head 2</entry>
+ <entry>Head 3</entry>
</row>
</thead>
+ <tfoot>
+ <row>
+ <entry>Foot 1</entry>
+ <entry>Foot 2</entry>
+ <entry>Foot 3</entry>
+ </row>
+ </tfoot>
<tbody>
<row>
- <entry>cell 1.1</entry>
- <entry>cell 1.2</entry>
- <entry>cell 1.3</entry>
+ <entry>Cell 1.1</entry>
+ <entry>Cell 1.2</entry>
+ <entry>Cell 1.3</entry>
</row>
<row>
- <entry>cell 2.1</entry>
- <entry>cell 2.2</entry>
- <entry>cell 2.3</entry>
+ <entry>Cell 2.1</entry>
+ <entry>Cell 2.2</entry>
+ <entry>Cell 2.3</entry>
</row>
</tbody>
</tgroup>
@@ -219,7 +257,8 @@
<list type="glossary">
<item>
<label>Indices et exposants</label>
- <p>Un exposant<sup>2</sup> suivi d'un indice<sub>3</sub>.</p>
+ <p>Un exposant 10<sup>-3</sup> suivi d'un indice
+ H<sub>2</sub>O.</p>
</item>
<item>
<label>Nombres</label>