--- a/RelaxNG/Examples/Documents/torture_test.xml mar. janv. 07 19:33:45 2014 +0100
+++ b/RelaxNG/Examples/Documents/torture_test.xml ven. janv. 10 16:50:33 2014 +0100
@@ -143,6 +143,7 @@
<topic>
<head>
<title>Les types de section</title>
+ <index><entry>section</entry></index>
</head>
<header>
<media>
@@ -154,6 +155,7 @@
<section>
<head>
<title>Section normale</title>
+ <index><entry>section</entry><entry>section normale</entry></index>
</head>
<section>
<p>Il dirigea la pointe du bambou vers le tableau noir : « Eh bien,
@@ -165,9 +167,10 @@
<p>Lorsque ma mère survint, elle me trouva au milieu des quatre
instituteurs, qui avaient renvoyé leurs élèves dans la cour de
récréation, et qui m'entendaient déchiffrer lentement l'histoire du
- Petit Poucet… Mais au lieu d'admirer cet exploit, elle pâlit,
- déposa ses paquets par terre, referma le livre, et m'emporta dans
- ses bras, en disant : « Mon Dieu ! mon Dieu !… »</p>
+ <index><w>Petit Poucet</w></index>… Mais au lieu d'admirer cet
+ exploit, elle pâlit, déposa ses paquets par terre, referma le
+ livre, et m'emporta dans ses bras, en disant : « Mon Dieu ! mon
+ Dieu !… »</p>
<p>Sur la porte de la classe, il y avait la concierge, qui était
une vieille femme corse : elle faisait des signes de croix. J'ai su
plus tard que c'était elle qui était allée chercher ma mère, en
@@ -194,6 +197,8 @@
<section>
<head>
<title>Section profonde</title>
+ <index><entry>section</entry><entry>section profonde</entry></index>
+ <index><entry>Classification phylogénétique</entry></index>
</head>
<section>
<head>
@@ -249,6 +254,8 @@
<head>
<title>Encadré</title>
<subtitle>« Casser sa pipe »</subtitle>
+ <index><entry>section</entry><entry>type encadré</entry></index>
+ <index><entry>pipe</entry></index>
</head>
<p>
Il semblerait que cette expression vienne du Premier empire durant
@@ -266,9 +273,10 @@
<section type="ex">
<head>
<title>Exemple</title>
+ <index><entry>section</entry><entry>type exemple</entry></index>
</head>
<p>Quand on meurt on perd le goût de la vie. Quand on casse sa pipe,
- on perd le goût du tabac.</p>
+ on perd le goût du <index><w>tabac</w></index>.</p>
</section>
<section type="sign">
<p>Jeanson Henri (signature)</p>
@@ -382,13 +390,16 @@
<head>
<title>Les Misérables</title>
<subtitle>Extrait</subtitle>
+ <index><entry>Les Misérables</entry></index>
<abstract>
<p>Où l’on apprend la mort de Jean Valjean.</p>
</abstract>
</head>
- <p>Cosette et Marius tombèrent à genoux, éperdus, étouffés de
- larmes, chacun sur une des mains de Jean Valjean. Ces mains
- augustes ne remuaient plus.</p>
+ <p><index><entry>Les Misérables</entry><w>Cosette</w></index> et
+ <index><entry>Les Misérables</entry><w>Marius</w></index> tombèrent
+ à genoux, éperdus, étouffés de larmes, chacun sur une des mains de
+ <index><entry>Les Misérables</entry><w>Jean Valjean</w></index>.
+ Ces mains augustes ne remuaient plus.</p>
<p>Il était renversé en arrière, la lueur des deux chandeliers
l'éclairait ; sa face blanche regardait le ciel, il laissait
Cosette et Marius couvrir ses mains de baisers ; il était mort.</p>
@@ -580,7 +591,10 @@
</table>
<table type="template">
- <head><title>Journal de navigation</title></head>
+ <head>
+ <title>Journal de navigation</title>
+ <index><entry>Journal de navigation</entry></index>
+ </head>
<thead>
<tr>
<td colspan="5"><p>Avion :</p><p>Horamètre :</p></td>
@@ -876,7 +890,7 @@
<item>
<label>Ancres</label>
<p>
- Une <anchor xml:id="ancre"/>ancre est un objet embarqué, lourd,
+ Une ancre<anchor xml:id="ancre"/> est un objet embarqué, lourd,
souvent de métal et destiné à stabiliser des bateaux à un
endroit spécifique sur les fonds rocheux, vaseux ou sableux. Il
y a deux catégories d’ancrages (ou mouillage), les ancrages
--- a/RelaxNG/Examples/Sets/composition.xml mar. janv. 07 19:33:45 2014 +0100
+++ b/RelaxNG/Examples/Sets/composition.xml ven. janv. 10 16:50:33 2014 +0100
@@ -40,6 +40,7 @@
<division path="../Topics" xslt="composition.xsl">
<head>
<title>Les événements</title>
+ <index><entry>événements</entry></index>
<abstract>
<p>Où l'on évoque pêle-mêle quelques sujets d'actualité.</p>
</abstract>
@@ -53,14 +54,16 @@
<head>
<title>Les brèves</title>
<subtitle>Europe</subtitle>
+ <index><entry>brèves</entry><entry>Europe</entry></index>
</head>
<file xslt="composition.xsl" path="../Topics">portugal_ue.xml</file>
</division>
- <!-- =========================== Photos ============================= -->
+ <!-- ======================== Photographies ========================= -->
<division>
<head>
- <title>Les photos avec légende</title>
+ <title>Les photographies avec légende</title>
+ <index><entry>photographie</entry></index>
</head>
<division as="topic" path="../Topics">
<file xpath="topic/section">prince_belge.xml</file>
--- a/RelaxNG/publidoc.rnc mar. janv. 07 19:33:45 2014 +0100
+++ b/RelaxNG/publidoc.rnc ven. janv. 10 16:50:33 2014 +0100
@@ -37,6 +37,7 @@
& keywordset?
& subjectset?
& abstract?
+ & head.index*
& cover?
& annotation*
@@ -123,6 +124,7 @@
& place?
& keywordset?
& subjectset?
+ & head.index*
& abstract?
& annotation*
@@ -178,6 +180,7 @@
(title, shorttitle?, subtitle*)?
& keywordset?
& subjectset?
+ & head.index*
& abstract?
& audio*
& annotation*
@@ -212,6 +215,7 @@
block.head.content =
(title, shorttitle?, subtitle*)?
+ & head.index*
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -397,13 +401,13 @@
media.content =
block.head?,
- (image | audio | video)+,
+ (media.image | audio | video)+,
media.caption?,
link?
# ~~~~~~ image
-image = element image { image.attributes, image.content }
-hotspot.image = element image { image.attributes }
+image = element image { image.attributes }
+media.image = element image { image.attributes, media.image.content }
image.attributes =
media.id.attribute
@@ -411,7 +415,7 @@
media.id.attribute = attribute id { xsd:NMTOKEN }
image.type = attribute type { "cover" | "thumbnail" | "icon" | "animation" }
-image.content =
+media.image.content =
copyright?,
hotspot*
@@ -448,7 +452,7 @@
hotspot.type.attribute = attribute type { xsd:NCName }
hotspot.content =
- ((link | p+ | hotspot.image | audio | video), (spot, scenario?)?)
+ ((link | p+ | image | audio | video), (spot, scenario?)?)
| (spot, scenario?)
| empty
@@ -565,13 +569,13 @@
copyright = element copyright { copyright.content }
-copyright.content = inlines
+copyright.content = simple.inlines
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
collection = element collection { collection.content }
-collection.content = inlines
+collection.content = simple.inlines
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -597,15 +601,15 @@
lastname = element lastname { lastname.content }
label = element label { label.content }
-firstname.content = inlines
-secondname.content = inlines
-lastname.content = inlines
-label.content = inlines
+firstname.content = simple.inlines
+secondname.content = simple.inlines
+lastname.content = simple.inlines
+label.content = simple.inlines
# ~~~~~~ address
address = element address { address.content }
-address.content = inlines
+address.content = simple.inlines
# ~~~~~~ role
role = element role { role.content }
@@ -616,7 +620,7 @@
place = element place { place.content }
-place.content = inlines
+place.content = simple.inlines
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -641,7 +645,7 @@
# ~~~~~~ keyword
keyword = element keyword { keyword.content }
-keyword.content = mixed { sup*, sub* }
+keyword.content = simple.inlines
# ~~~~~~ subjectset
subjectset = element subjectset { subjectset.content }
@@ -651,7 +655,25 @@
# ~~~~~~ subject
subject = element subject { subject.content }
-subject.content = mixed { sup*, sub* }
+subject.content = simple.inlines
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ index ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# ~~~~~~ index
+index = element index { index.content }
+head.index = element index { head.index.content }
+
+index.content =
+ (index.w, index.entry?)
+ | (index.entry, (index.w | index.entry)?)
+head.index.content =
+ index.entry, index.entry?
+
+# ~~~~~~ index.w
+index.w = element w { simple.inlines }
+
+# ~~~~~~ index.entry
+index.entry = element entry { simple.inlines }
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -670,8 +692,7 @@
cover.image = element image { cover.image.attributes }
cover.image.attributes =
- cover.image.id.attribute
-cover.image.id.attribute = attribute id { xsd:NMTOKEN }
+ media.id.attribute
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ annotation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -686,7 +707,7 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-inlines = mixed {
+simple.inlines = mixed {
sup*
& sub*
& var*
@@ -694,24 +715,28 @@
& math*
& date*
& name*
- & foreign*
& acronym*
& term*
+ & warning*
+}
+
+inlines =
+ simple.inlines
& literal*
- & stage*
+ & foreign*
& highlight*
& emphasis*
& mentioned*
+ & stage*
& initial*
- & note*
& quote*
- & link*
- & anchor*
& image*
& audio*
& smil*
- & warning*
-}
+ & note*
+ & link*
+ & anchor*
+ & index*
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup, var ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -783,15 +808,6 @@
name.content = mixed { sup* & number* & acronym* & warning* }
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-foreign = element foreign { foreign.attributes, foreign.content }
-
-foreign.attributes =
- lang.attribute?
-
-foreign.content = inlines
-
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ acronym ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
acronym = element acronym { acronym.content }
@@ -810,11 +826,14 @@
literal.content = inlines
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ stage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-stage = element stage { stage.content }
+foreign = element foreign { foreign.attributes, foreign.content }
-stage.content = inlines
+foreign.attributes =
+ lang.attribute?
+
+foreign.content = inlines
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -834,27 +853,22 @@
mentioned.content = inlines
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ stage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+stage = element stage { stage.content }
+
+stage.content = inlines
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initial ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
initial = element initial { initial.content }
initial.content =
- c,
- w?
+ initial.c,
+ initial.w?
-c = element c { text }
-w = element w { inlines }
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-note = element note { note.attributes, note.content }
-
-note.attributes =
- note.label.attribute?
-note.label.attribute = attribute label { text }
-
-note.content =
- (w?, block+) | inlines
+initial.c = element c { text }
+initial.w = element w { inlines }
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -867,29 +881,6 @@
phrase.content = inlines
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link = element link { link.attributes, link.content }
-
-link.attributes =
- (uri.attribute | idref.attribute)
-uri.attribute = attribute uri { xsd:anyURI }
-idref.attribute = attribute idref { xsd:IDREF }
-
-link.content = mixed {
- sup* & sub* & var* & number* & math* & date* & name* & foreign* & acronym*
- & term* & literal* & stage* & highlight* & emphasis* & mentioned* & warning* }
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ anchor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-anchor = element anchor { anchor.attributes, anchor.content }
-
-anchor.attributes =
- anchor.id.attribute
-anchor.id.attribute = attribute xml:id { xsd:ID }
-
-anchor.content = inlines
-
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ smil ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
smil = element smil { smil.attributes, smil.content }
@@ -904,6 +895,41 @@
smil.content = inlines
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+note = element note { note.attributes, note.content }
+
+note.attributes =
+ note.label.attribute?
+note.label.attribute = attribute label { text }
+
+note.content =
+ (note.w?, block+)
+ | inlines
+
+note.w = element w { inlines }
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+link = element link { link.attributes, link.content }
+
+link.attributes =
+ (uri.attribute | idref.attribute)
+uri.attribute = attribute uri { xsd:anyURI }
+idref.attribute = attribute idref { xsd:IDREF }
+
+link.content = simple.inlines
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ anchor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+anchor = element anchor { anchor.attributes, anchor.content }
+
+anchor.attributes =
+ anchor.id.attribute
+anchor.id.attribute = attribute xml:id { xsd:ID }
+
+anchor.content = simple.inlines
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ warning ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning = element warning { warning.attributes, warning.content }
--- a/RelaxNG/publiquiz.rnc mar. janv. 07 19:33:45 2014 +0100
+++ b/RelaxNG/publiquiz.rnc ven. janv. 10 16:50:33 2014 +0100
@@ -465,52 +465,15 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-blanks.inlines = mixed {
- sup*
- & sub*
- & var*
- & number*
- & math*
- & date*
- & name*
- & note*
- & foreign*
- & highlight*
- & emphasis*
- & mentioned*
- & quote*
- & acronym*
- & term*
- & link*
- & anchor*
- & image*
- & audio*
+blanks.inlines =
+ inlines
& blank*
-}
-point.inlines = mixed {
- sup*
- & sub*
- & var*
- & number*
- & math*
- & date*
- & name*
- & note*
- & foreign*
- & highlight*
- & emphasis*
- & mentioned*
- & quote*
- & acronym*
- & term*
- & link*
- & anchor*
- & image*
- & audio*
+
+point.inlines =
+ inlines
& blank*
& point.right*
& point.wrong*
-}
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blank ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/RelaxNG/publiset.rnc mar. janv. 07 19:33:45 2014 +0100
+++ b/RelaxNG/publiset.rnc ven. janv. 10 16:50:33 2014 +0100
@@ -61,6 +61,7 @@
& (source, source?)?
& keywordset?
& subjectset?
+ & head.index*
& abstract?
& cover?
@@ -121,6 +122,7 @@
division.head.content =
(title, shorttitle?, subtitle*)?
+ & head.index*
# =============================================================================
@@ -191,13 +193,13 @@
copyright = element copyright { copyright.content }
-copyright.content = inlines
+copyright.content = simple.inlines
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
collection = element collection { collection.content }
-collection.content = inlines
+collection.content = simple.inlines
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -223,15 +225,15 @@
lastname = element lastname { lastname.content }
label = element label { label.content }
-firstname.content = inlines
-secondname.content = inlines
-lastname.content = inlines
-label.content = inlines
+firstname.content = simple.inlines
+secondname.content = simple.inlines
+lastname.content = simple.inlines
+label.content = simple.inlines
# ~~~~~~ address
address = element address { address.content }
-address.content = inlines
+address.content = simple.inlines
# ~~~~~~ role
role = element role { role.content }
@@ -277,7 +279,7 @@
# ~~~~~~ keyword
keyword = element keyword { keyword.content }
-keyword.content = mixed { sup*, sub* }
+keyword.content = simple.inlines
# ~~~~~~ subjectset
subjectset = element subjectset { subjectset.content }
@@ -287,7 +289,18 @@
# ~~~~~~ subject
subject = element subject { subject.content }
-subject.content = mixed { sup*, sub* }
+subject.content = simple.inlines
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ index ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# ~~~~~~ index
+head.index = element index { head.index.content }
+
+head.index.content =
+ index.entry, index.entry?
+
+# ~~~~~~ index.entry
+index.entry = element entry { simple.inlines }
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -306,8 +319,8 @@
cover.image = element image { cover.image.attributes }
cover.image.attributes =
- cover.image.id.attribute
-cover.image.id.attribute = attribute id { xsd:NMTOKEN }
+ media.id.attribute
+media.id.attribute = attribute id { xsd:NMTOKEN }
# =============================================================================
@@ -316,18 +329,22 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-inlines = mixed {
+simple.inlines = mixed {
sup*
& sub*
& date*
& name*
+}
+
+inlines =
+ simple.inlines
& highlight*
+ & emphasis*
& link*
-}
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-sup = element sup { inlines }
+sup = element sup { simple.inlines }
sub = element sub { inlines }
@@ -359,6 +376,12 @@
highlight.content = inlines
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emphasis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+emphasis = element emphasis { emphasis.content }
+
+emphasis.content = inlines
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
link = element link { link.attributes, link.content }
@@ -367,7 +390,7 @@
uri.attribute
uri.attribute = attribute uri { xsd:anyURI }
-link.content = mixed { sup* & sub* & date* & name* & highlight* }
+link.content = simple.inlines
# =============================================================================