author | Patrick PIERRE <patrick.pierre@prismallia.fr> |
sam., 21 janv. 2012 18:03:09 +0100 | |
changeset 73 | 0a3a8006996b |
parent 72 | c85252fac80c |
child 74 | ebe0ab8699fc |
--- a/RelaxNG/publidoc.rnc sam. janv. 14 12:44:31 2012 +0100 +++ b/RelaxNG/publidoc.rnc sam. janv. 21 18:03:09 2012 +0100 @@ -335,8 +335,8 @@ item = element item { item.content } item.content = - block+ - | inlines + inlines + | block+ # ~~~~~~ glossary.item glossary.item = element item { glossary.item.content } @@ -363,6 +363,7 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~ table table = element table { table.content } table.content =
--- a/RelaxNG/publidoc.rng sam. janv. 14 12:44:31 2012 +0100 +++ /dev/null jeu. janv. 01 00:00:00 1970 +0000 @@ -1,1384 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> - <!-- $Id$ --> - <start> - <ref name="publidoc"/> - </start> - <define name="publidoc"> - <element name="publidoc"> - <ref name="publidoc.attributes"/> - <ref name="publidoc.content"/> - </element> - </define> - <define name="publidoc.attributes"> - <ref name="version.attribute"/> - </define> - <define name="version.attribute"> - <attribute name="version"> - <value>1.0</value> - </attribute> - </define> - <define name="publidoc.content"> - <choice> - <ref name="document"/> - <ref name="top.topic"/> - </choice> - </define> - <!-- - ============================================================================= - TOP LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="document"> - <element name="document"> - <ref name="document.attributes"/> - <ref name="document.content"/> - </element> - </define> - <define name="document.attributes"> - <interleave> - <ref name="document.id.attribute"/> - <optional> - <ref name="lang.attribute"/> - </optional> - </interleave> - </define> - <define name="document.id.attribute"> - <attribute name="xml:id"> - <data type="ID"/> - </attribute> - </define> - <define name="lang.attribute"> - <attribute name="xml:lang"> - <data type="language"/> - </attribute> - </define> - <define name="document.content"> - <optional> - <ref name="top.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="division"/> - <ref name="topic"/> - </choice> - </oneOrMore> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="top.topic"> - <element name="topic"> - <ref name="top.topic.attributes"/> - <ref name="top.topic.content"/> - </element> - </define> - <define name="top.topic.attributes"> - <interleave> - <ref name="topic.id.attribute"/> - <optional> - <ref name="topic.type.attribute"/> - </optional> - <optional> - <ref name="lang.attribute"/> - </optional> - </interleave> - </define> - <define name="topic.id.attribute"> - <attribute name="xml:id"> - <data type="ID"/> - </attribute> - </define> - <define name="topic.type.attribute"> - <attribute name="type"> - <data type="NCName"/> - </attribute> - </define> - <define name="top.topic.content"> - <optional> - <ref name="top.head"/> - </optional> - <oneOrMore> - <ref name="section"/> - </oneOrMore> - </define> - <!-- - ============================================================================= - HEAD LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="top.head"> - <element name="head"> - <ref name="top.head.content"/> - </element> - </define> - <define name="division.head"> - <element name="head"> - <ref name="division.head.content"/> - </element> - </define> - <define name="component.head"> - <element name="head"> - <ref name="component.head.content"/> - </element> - </define> - <define name="section.head"> - <element name="head"> - <ref name="section.head.content"/> - </element> - </define> - <define name="block.head"> - <element name="head"> - <ref name="block.head.content"/> - </element> - </define> - <define name="top.head.content"> - <interleave> - <optional> - <ref name="title"/> - <optional> - <ref name="subtitle"/> - </optional> - </optional> - <zeroOrMore> - <ref name="identifier"/> - </zeroOrMore> - <optional> - <ref name="copyright"/> - </optional> - <optional> - <ref name="contributors"/> - </optional> - <optional> - <ref name="date"/> - </optional> - <optional> - <ref name="place"/> - </optional> - <zeroOrMore> - <ref name="source"/> - </zeroOrMore> - <optional> - <ref name="keywordset"/> - </optional> - <optional> - <ref name="subjectset"/> - </optional> - <optional> - <ref name="abstract"/> - </optional> - <optional> - <ref name="cover"/> - </optional> - <zeroOrMore> - <ref name="annotation"/> - </zeroOrMore> - </interleave> - </define> - <define name="division.head.content"> - <interleave> - <optional> - <ref name="title"/> - <optional> - <ref name="subtitle"/> - </optional> - </optional> - <optional> - <ref name="abstract"/> - </optional> - <zeroOrMore> - <ref name="annotation"/> - </zeroOrMore> - </interleave> - </define> - <define name="component.head.content"> - <interleave> - <optional> - <ref name="title"/> - <optional> - <ref name="subtitle"/> - </optional> - </optional> - <optional> - <ref name="contributors"/> - </optional> - <optional> - <ref name="abstract"/> - </optional> - <zeroOrMore> - <ref name="annotation"/> - </zeroOrMore> - </interleave> - </define> - <define name="section.head.content"> - <interleave> - <optional> - <ref name="title"/> - <optional> - <ref name="subtitle"/> - </optional> - </optional> - <optional> - <ref name="abstract"/> - </optional> - <zeroOrMore> - <ref name="annotation"/> - </zeroOrMore> - </interleave> - </define> - <define name="block.head.content"> - <optional> - <ref name="title"/> - <optional> - <ref name="subtitle"/> - </optional> - </optional> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="title"> - <element name="title"> - <ref name="title.content"/> - </element> - </define> - <define name="subtitle"> - <element name="subtitle"> - <ref name="title.content"/> - </element> - </define> - <define name="title.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="identifier.uri"> - <element name="identifier"> - <attribute name="type"> - <value>uri</value> - </attribute> - <data type="anyURI"/> - </element> - </define> - <define name="identifier.ean"> - <element name="identifier"> - <attribute name="type"> - <value>ean</value> - </attribute> - <data type="token"> - <param name="pattern">\d{13}</param> - </data> - </element> - </define> - <define name="identifier"> - <choice> - <ref name="identifier.uri"/> - <ref name="identifier.ean"/> - </choice> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="copyright"> - <element name="copyright"> - <ref name="copyright.content"/> - </element> - </define> - <define name="copyright.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ contributors --> - <define name="contributors"> - <element name="contributors"> - <ref name="contributors.content"/> - </element> - </define> - <define name="contributors.content"> - <oneOrMore> - <ref name="contributor"/> - </oneOrMore> - </define> - <!-- ~~~~~~ contributor --> - <define name="contributor"> - <element name="contributor"> - <ref name="contributor.content"/> - </element> - </define> - <define name="contributor.content"> - <choice> - <group> - <optional> - <ref name="firstname"/> - <optional> - <ref name="secondname"/> - </optional> - </optional> - <ref name="lastname"/> - </group> - <ref name="label"/> - </choice> - <optional> - <ref name="address"/> - </optional> - <optional> - <ref name="link"/> - </optional> - <zeroOrMore> - <ref name="role"/> - </zeroOrMore> - </define> - <!-- ~~~~~~ firstname, secondname, lastname, label --> - <define name="firstname"> - <element name="firstname"> - <ref name="firstname.content"/> - </element> - </define> - <define name="secondname"> - <element name="secondname"> - <ref name="secondname.content"/> - </element> - </define> - <define name="lastname"> - <element name="lastname"> - <ref name="lastname.content"/> - </element> - </define> - <define name="label"> - <element name="label"> - <ref name="label.content"/> - </element> - </define> - <define name="firstname.content"> - <ref name="inlines"/> - </define> - <define name="secondname.content"> - <ref name="inlines"/> - </define> - <define name="lastname.content"> - <ref name="inlines"/> - </define> - <define name="label.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~ address --> - <define name="address"> - <element name="address"> - <ref name="address.content"/> - </element> - </define> - <define name="address.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~ role --> - <define name="role"> - <element name="role"> - <ref name="role.content"/> - </element> - </define> - <define name="role.content"> - <choice> - <value>author</value> - <value>illustrator</value> - <value>publisher</value> - </choice> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="place"> - <element name="place"> - <ref name="place.content"/> - </element> - </define> - <define name="place.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ source --> - <define name="source"> - <element name="source"> - <choice> - <group> - <attribute name="type"> - <value>book</value> - </attribute> - <ref name="source.content.book"/> - </group> - <group> - <attribute name="type"> - <value>file</value> - </attribute> - <ref name="source.content.file"/> - </group> - </choice> - <ref name="source.content"/> - </element> - </define> - <define name="source.content.book"> - <ref name="identifier.ean"/> - <optional> - <ref name="title"/> - </optional> - <zeroOrMore> - <ref name="pagenumber"/> - </zeroOrMore> - </define> - <define name="source.content.file"> - <ref name="identifier.uri"/> - </define> - <define name="source.content"> - <zeroOrMore> - <ref name="annotation"/> - </zeroOrMore> - </define> - <!-- ~~~~~~ pagenumber --> - <define name="pagenumber"> - <element name="pagenumber"> - <ref name="pagenumber.attributes"/> - </element> - </define> - <define name="pagenumber.attributes"> - <ref name="pagenumber.value.attribute"/> - </define> - <define name="pagenumber.value.attribute"> - <attribute name="value"> - <data type="positiveInteger"/> - </attribute> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keyword & subject ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ keywordset --> - <define name="keywordset"> - <element name="keywordset"> - <ref name="keywordset.content"/> - </element> - </define> - <define name="keywordset.content"> - <oneOrMore> - <ref name="keyword"/> - </oneOrMore> - </define> - <!-- ~~~~~~ keyword --> - <define name="keyword"> - <element name="keyword"> - <ref name="keyword.content"/> - </element> - </define> - <define name="keyword.content"> - <mixed> - <zeroOrMore> - <ref name="sup"/> - </zeroOrMore> - <zeroOrMore> - <ref name="sub"/> - </zeroOrMore> - </mixed> - </define> - <!-- ~~~~~~ subjectset --> - <define name="subjectset"> - <element name="subjectset"> - <ref name="subjectset.content"/> - </element> - </define> - <define name="subjectset.content"> - <oneOrMore> - <ref name="subject"/> - </oneOrMore> - </define> - <!-- ~~~~~~ subject --> - <define name="subject"> - <element name="subject"> - <ref name="subject.attributes"/> - </element> - </define> - <define name="subject.attributes"> - <ref name="subject.id.attribute"/> - </define> - <define name="subject.id.attribute"> - <attribute name="id"> - <data type="NMTOKEN"/> - </attribute> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="abstract"> - <element name="abstract"> - <ref name="abstract.content"/> - </element> - </define> - <define name="abstract.content"> - <oneOrMore> - <ref name="p"/> - </oneOrMore> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cover ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="cover"> - <element name="cover"> - <ref name="cover.content"/> - </element> - </define> - <define name="cover.content"> - <ref name="cover.image"/> - </define> - <define name="cover.image"> - <element name="image"> - <ref name="cover.image.attributes"/> - </element> - </define> - <define name="cover.image.attributes"> - <ref name="cover.image.id.attribute"/> - </define> - <define name="cover.image.id.attribute"> - <attribute name="id"> - <data type="NMTOKEN"/> - </attribute> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ annotation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="annotation"> - <element name="annotation"> - <ref name="annotation.content"/> - </element> - </define> - <define name="annotation.content"> - <ref name="inlines"/> - </define> - <!-- - ============================================================================= - DIVISION LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ division ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="division"> - <element name="division"> - <ref name="division.content"/> - </element> - </define> - <define name="division.content"> - <optional> - <ref name="division.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="division"/> - <ref name="topic"/> - </choice> - </oneOrMore> - </define> - <!-- - ============================================================================= - COMPONENT LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="topic"> - <element name="topic"> - <ref name="topic.attributes"/> - <ref name="topic.content"/> - </element> - </define> - <define name="topic.attributes"> - <interleave> - <optional> - <ref name="topic.id.attribute"/> - </optional> - <optional> - <ref name="topic.type.attribute"/> - </optional> - <optional> - <ref name="lang.attribute"/> - </optional> - </interleave> - </define> - <define name="topic.content"> - <optional> - <ref name="component.head"/> - </optional> - <oneOrMore> - <ref name="section"/> - </oneOrMore> - </define> - <!-- - ============================================================================= - SECTION LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ section ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="section"> - <element name="section"> - <ref name="section.attributes"/> - <ref name="section.content"/> - </element> - </define> - <define name="section.attributes"> - <interleave> - <optional> - <ref name="section.type.attribute"/> - </optional> - <optional> - <ref name="lang.attribute"/> - </optional> - </interleave> - </define> - <define name="section.type.attribute"> - <attribute name="type"> - <data type="NCName"/> - </attribute> - </define> - <define name="section.content"> - <optional> - <ref name="section.head"/> - </optional> - <choice> - <oneOrMore> - <ref name="section"/> - </oneOrMore> - <oneOrMore> - <ref name="block"/> - </oneOrMore> - </choice> - </define> - <!-- - ============================================================================= - BLOCK LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="block"> - <choice> - <ref name="p"/> - <ref name="speech"/> - <ref name="list"/> - <ref name="blockquote"/> - <ref name="table"/> - <ref name="media"/> - </choice> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="p"> - <element name="p"> - <ref name="p.content"/> - </element> - </define> - <define name="p.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ speech --> - <define name="speech"> - <element name="speech"> - <ref name="speech.content"/> - </element> - </define> - <define name="speech.content"> - <optional> - <ref name="speaker"/> - </optional> - <optional> - <ref name="stage"/> - </optional> - <oneOrMore> - <ref name="p"/> - </oneOrMore> - </define> - <!-- ~~~~~~ speaker --> - <define name="speaker"> - <element name="speaker"> - <ref name="speaker.content"/> - </element> - </define> - <define name="speaker.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~ stage --> - <define name="stage"> - <element name="stage"> - <ref name="stage.content"/> - </element> - </define> - <define name="stage.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ list --> - <define name="list"> - <element name="list"> - <ref name="list.content"/> - </element> - </define> - <define name="list.content"> - <optional> - <ref name="block.head"/> - </optional> - <choice> - <group> - <optional> - <attribute name="type"> - <value>ordered</value> - </attribute> - </optional> - <ref name="item"/> - <oneOrMore> - <ref name="item"/> - </oneOrMore> - </group> - <group> - <attribute name="type"> - <value>glossary</value> - </attribute> - <oneOrMore> - <ref name="glossary.item"/> - </oneOrMore> - </group> - </choice> - </define> - <!-- ~~~~~~ item --> - <define name="item"> - <element name="item"> - <ref name="item.content"/> - </element> - </define> - <define name="item.content"> - <choice> - <oneOrMore> - <ref name="block"/> - </oneOrMore> - <ref name="inlines"/> - </choice> - </define> - <!-- ~~~~~~ glossary.item --> - <define name="glossary.item"> - <element name="item"> - <ref name="glossary.item.content"/> - </element> - </define> - <define name="glossary.item.content"> - <ref name="label"/> - <oneOrMore> - <ref name="block"/> - </oneOrMore> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blockquote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ blockquote --> - <define name="blockquote"> - <element name="blockquote"> - <ref name="blockquote.content"/> - </element> - </define> - <define name="blockquote.content"> - <optional> - <ref name="block.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="p"/> - <ref name="speech"/> - <ref name="list"/> - </choice> - </oneOrMore> - <optional> - <ref name="attribution"/> - </optional> - </define> - <!-- ~~~~~~ attribution --> - <define name="attribution"> - <element name="attribution"> - <ref name="attribution.content"/> - </element> - </define> - <define name="attribution.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="table"> - <element name="table"> - <ref name="table.content"/> - </element> - </define> - <define name="table.content"> - <optional> - <ref name="block.head"/> - </optional> - <oneOrMore> - <ref name="tgroup"/> - </oneOrMore> - <optional> - <ref name="caption"/> - </optional> - </define> - <!-- ~~~~~~ tgroup --> - <define name="tgroup"> - <element name="tgroup"> - <ref name="tgroup.attributes"/> - <ref name="tgroup.content"/> - </element> - </define> - <define name="tgroup.content"> - <optional> - <ref name="thead"/> - </optional> - <optional> - <ref name="tfoot"/> - </optional> - <ref name="tbody"/> - </define> - <define name="tgroup.attributes"> - <interleave> - <ref name="cols.attribute"/> - <optional> - <ref name="align.attribute"/> - </optional> - <optional> - <ref name="colsep.attribute"/> - </optional> - <optional> - <ref name="rowsep.attribute"/> - </optional> - </interleave> - </define> - <define name="cols.attribute"> - <attribute name="cols"> - <data type="positiveInteger"/> - </attribute> - </define> - <define name="align.attribute"> - <attribute name="align"> - <choice> - <value>left</value> - <value>right</value> - <value>center</value> - <value>justify</value> - </choice> - </attribute> - </define> - <define name="colsep.attribute"> - <attribute name="colsep"> - <choice> - <value>0</value> - <value>1</value> - </choice> - </attribute> - </define> - <define name="rowsep.attribute"> - <attribute name="rowsep"> - <choice> - <value>0</value> - <value>1</value> - </choice> - </attribute> - </define> - <!-- ~~~~~~ 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"/> - </oneOrMore> - </define> - <define name="tfoot.content"> - <oneOrMore> - <ref name="row"/> - </oneOrMore> - </define> - <define name="tbody.content"> - <oneOrMore> - <ref name="row"/> - </oneOrMore> - </define> - <!-- ~~~~~~ row --> - <define name="row"> - <element name="row"> - <ref name="row.attribute"/> - <ref name="row.content"/> - </element> - </define> - <define name="row.attribute"> - <optional> - <ref name="valign.attribute"/> - </optional> - </define> - <define name="row.content"> - <oneOrMore> - <ref name="entry"/> - </oneOrMore> - </define> - <!-- ~~~~~~ entry --> - <define name="entry"> - <element name="entry"> - <ref name="entry.content"/> - </element> - </define> - <define name="entry.content"> - <choice> - <ref name="inlines"/> - <oneOrMore> - <choice> - <ref name="p"/> - <ref name="media"/> - </choice> - </oneOrMore> - </choice> - </define> - <!-- ~~~~~~ caption --> - <define name="caption"> - <element name="caption"> - <ref name="caption.content"/> - </element> - </define> - <define name="caption.content"> - <choice> - <ref name="inlines"/> - <oneOrMore> - <ref name="p"/> - </oneOrMore> - </choice> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ media ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ media --> - <define name="media"> - <element name="media"> - <ref name="media.content"/> - </element> - </define> - <define name="media.content"> - <optional> - <ref name="block.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="image"/> - <ref name="audio"/> - </choice> - </oneOrMore> - <optional> - <ref name="caption"/> - </optional> - <optional> - <ref name="link"/> - </optional> - </define> - <!-- ~~~~~~ image --> - <define name="image"> - <element name="image"> - <ref name="image.attributes"/> - <ref name="image.content"/> - </element> - </define> - <define name="image.attributes"> - <ref name="media.id.attribute"/> - <optional> - <ref name="image.type"/> - </optional> - </define> - <define name="media.id.attribute"> - <attribute name="id"> - <data type="NMTOKEN"/> - </attribute> - </define> - <define name="image.type"> - <attribute name="type"> - <choice> - <value>cover</value> - <value>thumbnail</value> - </choice> - </attribute> - </define> - <define name="image.content"> - <optional> - <ref name="copyright"/> - </optional> - </define> - <!-- ~~~~~~ audio --> - <define name="audio"> - <element name="audio"> - <ref name="audio.attributes"/> - </element> - </define> - <define name="audio.attributes"> - <ref name="media.id.attribute"/> - </define> - <!-- - ============================================================================= - INLINE LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="inlines"> - <mixed> - <interleave> - <zeroOrMore> - <ref name="sup"/> - </zeroOrMore> - <zeroOrMore> - <ref name="sub"/> - </zeroOrMore> - <zeroOrMore> - <ref name="var"/> - </zeroOrMore> - <zeroOrMore> - <ref name="number"/> - </zeroOrMore> - <zeroOrMore> - <ref name="math"/> - </zeroOrMore> - <zeroOrMore> - <ref name="date"/> - </zeroOrMore> - <zeroOrMore> - <ref name="name"/> - </zeroOrMore> - <zeroOrMore> - <ref name="note"/> - </zeroOrMore> - <zeroOrMore> - <ref name="foreign"/> - </zeroOrMore> - <zeroOrMore> - <ref name="highlight"/> - </zeroOrMore> - <zeroOrMore> - <ref name="mentioned"/> - </zeroOrMore> - <zeroOrMore> - <ref name="quote"/> - </zeroOrMore> - <zeroOrMore> - <ref name="acronym"/> - </zeroOrMore> - <zeroOrMore> - <ref name="term"/> - </zeroOrMore> - <zeroOrMore> - <ref name="link"/> - </zeroOrMore> - <zeroOrMore> - <ref name="anchor"/> - </zeroOrMore> - </interleave> - </mixed> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup, var ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="sup"> - <element name="sup"> - <text/> - </element> - </define> - <define name="sub"> - <element name="sub"> - <text/> - </element> - </define> - <define name="var"> - <element name="var"> - <text/> - </element> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ math ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="math"> - <element name="math"> - <choice> - <group> - <attribute name="notation"> - <value>tex</value> - </attribute> - <ref name="math.attributes"/> - <ref name="math.tex.content"/> - </group> - <group> - <ref name="math.attributes"/> - <ref name="math.content"/> - </group> - </choice> - </element> - </define> - <define name="math.attributes"> - <optional> - <ref name="wide.attribute"/> - </optional> - </define> - <define name="wide.attribute"> - <attribute name="wide"> - <data type="boolean"/> - </attribute> - </define> - <define name="math.content"> - <mixed> - <interleave> - <zeroOrMore> - <ref name="sup"/> - </zeroOrMore> - <zeroOrMore> - <ref name="sub"/> - </zeroOrMore> - <zeroOrMore> - <ref name="var"/> - </zeroOrMore> - </interleave> - </mixed> - </define> - <define name="math.tex.content"> - <text/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ number ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="number"> - <element name="number"> - <choice> - <group> - <attribute name="type"> - <value>roman</value> - </attribute> - <ref name="number.attributes"/> - <ref name="number.roman.content"/> - </group> - <group> - <ref name="number.attributes"/> - <ref name="number.content"/> - </group> - </choice> - </element> - </define> - <define name="number.attributes"> - <optional> - <ref name="number.value.attribute"/> - </optional> - </define> - <define name="number.value.attribute"> - <attribute name="value"> - <choice> - <data type="integer"/> - <data type="decimal"/> - </choice> - </attribute> - </define> - <define name="number.content"> - <mixed> - <zeroOrMore> - <ref name="sup"/> - </zeroOrMore> - </mixed> - </define> - <define name="number.roman.content"> - <data type="token"> - <param name="pattern">[dlxvi]+</param> - </data> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="date"> - <element name="date"> - <ref name="date.attributes"/> - <ref name="date.content"/> - </element> - </define> - <define name="date.attributes"> - <interleave> - <ref name="date.value.attribute"/> - <optional> - <ref name="date.of.attribute"/> - </optional> - </interleave> - </define> - <define name="date.value.attribute"> - <attribute name="value"> - <choice> - <data type="date"/> - <data type="gYearMonth"/> - <data type="gYear"/> - </choice> - </attribute> - </define> - <define name="date.of.attribute"> - <attribute name="of"> - <choice> - <value>birth</value> - <value>death</value> - </choice> - </attribute> - </define> - <define name="date.content"> - <mixed> - <zeroOrMore> - <ref name="sup"/> - </zeroOrMore> - </mixed> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="name"> - <element name="name"> - <ref name="name.attributes"/> - <ref name="name.content"/> - </element> - </define> - <define name="name.attributes"> - <optional> - <ref name="name.of.attribute"/> - </optional> - </define> - <define name="name.of.attribute"> - <attribute name="of"> - <choice> - <value>person</value> - <value>company</value> - <value>book</value> - <value>newspaper</value> - <value>party</value> - </choice> - </attribute> - </define> - <define name="name.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="note"> - <element name="note"> - <ref name="note.attributes"/> - <ref name="note.content"/> - </element> - </define> - <define name="note.attributes"> - <optional> - <ref name="note.label.attribute"/> - </optional> - </define> - <define name="note.label.attribute"> - <attribute name="label"/> - </define> - <define name="note.content"> - <choice> - <ref name="inlines"/> - <oneOrMore> - <ref name="p"/> - </oneOrMore> - </choice> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="foreign"> - <element name="foreign"> - <ref name="foreign.attributes"/> - <ref name="foreign.content"/> - </element> - </define> - <define name="foreign.attributes"> - <optional> - <ref name="lang.attribute"/> - </optional> - </define> - <define name="foreign.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="highlight"> - <element name="highlight"> - <ref name="highlight.content"/> - </element> - </define> - <define name="highlight.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mentioned ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="mentioned"> - <element name="mentioned"> - <ref name="mentioned.content"/> - </element> - </define> - <define name="mentioned.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="quote"> - <element name="quote"> - <ref name="quote.content"/> - </element> - </define> - <define name="quote.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ acronym ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="acronym"> - <element name="acronym"> - <ref name="acronym.content"/> - </element> - </define> - <define name="acronym.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ term ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="term"> - <element name="term"> - <ref name="term.content"/> - </element> - </define> - <define name="term.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="link"> - <element name="link"> - <ref name="link.attributes"/> - <ref name="link.content"/> - </element> - </define> - <define name="link.attributes"> - <choice> - <ref name="uri.attribute"/> - <ref name="idref.attribute"/> - </choice> - </define> - <define name="uri.attribute"> - <attribute name="uri"> - <data type="anyURI"/> - </attribute> - </define> - <define name="idref.attribute"> - <attribute name="idref"> - <data type="IDREF"/> - </attribute> - </define> - <define name="link.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ anchor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="anchor"> - <element name="anchor"> - <ref name="anchor.attributes"/> - </element> - </define> - <define name="anchor.attributes"> - <ref name="anchor.id.attribute"/> - </define> - <define name="anchor.id.attribute"> - <attribute name="xml:id"> - <data type="ID"/> - </attribute> - </define> -</grammar>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/RelaxNG/publiquiz.rnc sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,361 @@ +# $Id$ + + +include "publidoc.rnc" { + start = publiquiz + + document.content = + top.head?, + (division | topic | quiz)+ +} + +publiquiz = element publiquiz { + publiquiz.attributes, + publiquiz.content +} + +publiquiz.attributes = + version.attribute + +publiquiz.content = + document + | top.quiz + + +# ============================================================================= +# TOP LEVEL +# ============================================================================= + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quiz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +top.quiz = element quiz { top.quiz.attributes, quiz.content } + +top.quiz.attributes = + quiz.id.attribute + & lang.attribute? + + +# ============================================================================= +# COMPONENT LEVEL +# ============================================================================= + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quiz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +quiz = element quiz { quiz.attributes, quiz.content } + +quiz.attributes = + quiz.id.attribute? + & lang.attribute? +quiz.id.attribute = attribute xml:id { xsd:ID } + +quiz.content = + component.head?, + instructions, + (engine | composite)?, + help?, + commentary? + + +# ============================================================================= +# SECTION LEVEL +# ============================================================================= + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ section ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +blanks.section = element section { section.attributes, blanks.section.content } +point.section = element section { section.attributes, point.section.content } + +blanks.section.content = + section.head?, + (blanks.section+ | blanks.block+) +point.section.content = + section.head?, + (point.section+ | point.block+) + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ instructions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +instructions = element instructions { section.content } + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ engine ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +engine = + choices.radio + | choices.check + | blanks.fill + | blanks.select + | point + | matching + | sort + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ choices ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +choices.radio = element choices { + attribute type { "radio" }, choices.attributes, choices.radio.content } +choices.check = element choices { + attribute type { "check" }, choices.attributes, choices.check.content } + +choices.attributes = + shuffle.attribute? +shuffle.attribute = attribute shuffle { xsd:boolean } + +choices.radio.content = + choices.right + & choices.wrong+ +choices.check.content = + (choices.right | choices.wrong)+ + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blanks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +blanks.fill = element blanks { blanks.fill.attributes, blanks.fill.content } +blanks.select = element blanks { + blanks.select.attributes, blanks.select.content } + +blanks.fill.attributes = + attribute type { "fill" } + & strict.attribute? +blanks.select.attributes = + attribute type { "select" }, + multiple.attribute? +strict.attribute = attribute strict { xsd:boolean } +multiple.attribute = attribute multiple { xsd:boolean } + +blanks.fill.content = + (blanks.block+ | blanks.section+) +blanks.select.content = + blanks.wrongs?, + (blanks.block+ | blanks.section+) + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ point ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +point = element point { point.attributes, point.content } + +point.attributes = + point.type.attribute? +point.type.attribute = attribute type { + "radio" | "radio_button" | "check" | "check_button" } + +point.content = + (point.section+ | point.block+) + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ matching ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +matching = element matching { matching.content } + +matching.content = + match, + match+ + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sort ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +sort = element sort { sort.attributes, sort.content } + +sort.attributes = + shuffle.attribute? + +sort.content = + comparison?, + sort.item, + sort.item+ + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ composite ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +composite = element composite { composite.content } + +composite.content = + (instructions?, engine), + (instructions?, engine)+ + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ help ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +help = element help { help.content } + +help.content = + (section+ | block+)?, + link* + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ commentary ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +commentary = element commentary { commentary.content } + +commentary.content = + (section+ | block+) + + +# ============================================================================= +# BLOCK LEVEL +# ============================================================================= + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +blanks.block = + (blanks.p | speech | blanks.list | blockquote | blanks.table | media) +point.block = + (point.p | speech | point.list | blockquote | point.table | media) + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +blanks.p = element p { blanks.p.content } +point.p = element p { point.p.content } + +blanks.p.content = + inlines + & blank* +point.p.content = + inlines + & point.right* + & point.wrong* + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~~~~~ list +blanks.list = element list { blanks.list.content } +point.list = element list { point.list.content } + +blanks.list.content = + block.head?, + ( (attribute type {"ordered"}?, blanks.item, blanks.item+) + | (attribute type {"glossary"}, glossary.item+) ) +point.list.content = + block.head?, + ( (attribute type {"ordered"}?, point.item, point.item+) + | (attribute type {"glossary"}, glossary.item+) ) + +# ~~~~~~ item +blanks.item = element item { blanks.item.content } +point.item = element item { point.item.content } + +blanks.item.content = + (inlines & blank*) + | blanks.block+ +point.item.content = + (inlines & point.right* & point.wrong*) + | point.block+ + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +blanks.table = element table { blanks.table.content } +point.table = element table { point.table.content } + +blanks.table.content = + block.head?, + blanks.tgroup+, + caption? +point.table.content = + block.head?, + point.tgroup+, + caption? + +# ~~~~~~ tgroup +blanks.tgroup = element tgroup { tgroup.attributes, blanks.tgroup.content } +point.tgroup = element tgroup { tgroup.attributes, point.tgroup.content } + +blanks.tgroup.content = + thead?, + blanks.tbody +point.tgroup.content = + thead?, + point.tbody + +# ~~~~~~ tbody +blanks.tbody = element tbody { tbody.attributes, blanks.tbody.content } +point.tbody = element tbody { tbody.attributes, point.tbody.content } + +blanks.tbody.content = + blanks.row+ +point.tbody.content = + point.row+ + +# ~~~~~~ row +blanks.row = element row { row.attribute, blanks.row.content } +point.row = element row { row.attribute, point.row.content } + +blanks.row.content = + blanks.entry+ +point.row.content = + point.entry+ + +# ~~~~~~ entry +blanks.entry = element entry { blanks.entry.content } +point.entry = element entry { point.entry.content } + +blanks.entry.content = + (inlines & blank*) + | (p | media)+ + +point.entry.content = + (inlines & point.right* & point.wrong*) + | (p | media)+ + + +# ~~~~~~~~~~~~~~~~~~~~~~~~ choices.right, choices.wrong ~~~~~~~~~~~~~~~~~~~~~~~ + +choices.right = element right { choices.right.content } +choices.wrong = element wrong { choices.right.content } + +choices.right.content = + inlines + | p+ + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blanks.wrongs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~~~~~ blanks.wrongs +blanks.wrongs = element wrongs { blanks.wrongs.content } + +blanks.wrongs.content = + blanks.wrong+ + +# ~~~~~~ blanks.wrong +blanks.wrong = element wrong { blanks.wrong.content } + +blanks.wrong.content = text + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ match ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +match = element match { match.content } + +match.content = + (p | section), + (p | section) + +# ~~~~~~~~~~~~~~~~~~~~~~~~ (sort) comparaison, item ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~~~~~ comparison +comparison = element comparison { comparison.content } + +comparison.content = inlines + +# ~~~~~~ sort.item +sort.item = element item { sort.item.attributes, sort.item.content } + +sort.item.attributes = + item.shuffle.attribute? +item.shuffle.attribute = attribute shuffle { xsd:integer } + +sort.item.content = inlines + + +# ============================================================================= +# INLINE LEVEL +# ============================================================================= + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blank ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~~~~~ blank +blank = element blank { blank.content } + +blank.content = + text + | (s+, help?, commentary?) + +# ~~~~~~ s +s = element s { s.content } + +s.content = text + +# ~~~~~~~~~~~~~~~~~~~~~~~~~ point.right, point.wrong ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +point.right = element right { point.right.content } +point.wrong = element wrong { point.right.content } + +point.right.content = inlines
--- a/RelaxNG/publiset.rng sam. janv. 14 12:44:31 2012 +0100 +++ /dev/null jeu. janv. 01 00:00:00 1970 +0000 @@ -1,558 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> - <!-- $Id$ --> - <start> - <ref name="publiset"/> - </start> - <define name="publiset"> - <element name="publiset"> - <ref name="publiset.attributes"/> - <ref name="publiset.content"/> - </element> - </define> - <define name="publiset.attributes"> - <ref name="version.attribute"/> - </define> - <define name="version.attribute"> - <attribute name="version"> - <value>1.0</value> - </attribute> - </define> - <define name="publiset.content"> - <oneOrMore> - <choice> - <ref name="composition"/> - <ref name="selection"/> - </choice> - </oneOrMore> - </define> - <!-- - ============================================================================= - TOP LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ composition ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="composition"> - <element name="composition"> - <ref name="composition.attributes"/> - <ref name="composition.content"/> - </element> - </define> - <define name="composition.attributes"> - <interleave> - <ref name="composition.id.attribute"/> - <optional> - <ref name="path.attribute"/> - </optional> - <optional> - <ref name="xpath.attribute"/> - </optional> - <optional> - <ref name="xslt.attribute"/> - </optional> - <ref name="remap.attributes"/> - <optional> - <ref name="lang.attribute"/> - </optional> - </interleave> - </define> - <define name="composition.id.attribute"> - <attribute name="xml:id"> - <data type="ID"/> - </attribute> - </define> - <define name="path.attribute"> - <attribute name="path"> - <data type="anyURI"/> - </attribute> - </define> - <define name="xslt.attribute"> - <attribute name="xslt"> - <data type="anyURI"/> - </attribute> - </define> - <define name="xpath.attribute"> - <attribute name="xpath"/> - </define> - <define name="lang.attribute"> - <attribute name="xml:lang"> - <data type="language"/> - </attribute> - </define> - <define name="composition.content"> - <optional> - <ref name="composition.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="composition.division"/> - <ref name="composition.file"/> - </choice> - </oneOrMore> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ selection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="selection"> - <element name="selection"> - <ref name="selection.attributes"/> - <ref name="selection.content"/> - </element> - </define> - <define name="selection.attributes"> - <interleave> - <ref name="selection.id.attribute"/> - <optional> - <ref name="path.attribute"/> - </optional> - <optional> - <ref name="lang.attribute"/> - </optional> - </interleave> - </define> - <define name="selection.id.attribute"> - <attribute name="xml:id"> - <data type="ID"/> - </attribute> - </define> - <define name="selection.content"> - <optional> - <ref name="selection.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="selection.division"/> - <ref name="selection.file"/> - <ref name="link"/> - </choice> - </oneOrMore> - </define> - <!-- - ============================================================================= - HEAD LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="composition.head"> - <element name="head"> - <ref name="head.attributes"/> - <ref name="top.head.content"/> - </element> - </define> - <define name="selection.head"> - <element name="head"> - <ref name="top.head.content"/> - </element> - </define> - <define name="division.head"> - <element name="head"> - <ref name="division.head.content"/> - </element> - </define> - <define name="head.attributes"> - <ref name="remap.attributes"/> - </define> - <define name="top.head.content"> - <interleave> - <optional> - <ref name="title"/> - <optional> - <ref name="subtitle"/> - </optional> - </optional> - <zeroOrMore> - <ref name="identifier"/> - </zeroOrMore> - <optional> - <ref name="copyright"/> - </optional> - <optional> - <ref name="contributors"/> - </optional> - <optional> - <ref name="abstract"/> - </optional> - <optional> - <ref name="cover"/> - </optional> - </interleave> - </define> - <define name="division.head.content"> - <optional> - <ref name="title"/> - <optional> - <ref name="subtitle"/> - </optional> - </optional> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="title"> - <element name="title"> - <ref name="title.content"/> - </element> - </define> - <define name="subtitle"> - <element name="subtitle"> - <ref name="title.content"/> - </element> - </define> - <define name="title.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="identifier.uri"> - <element name="identifier"> - <attribute name="type"> - <value>uri</value> - </attribute> - <data type="anyURI"/> - </element> - </define> - <define name="identifier.ean"> - <element name="identifier"> - <attribute name="type"> - <value>ean</value> - </attribute> - <data type="token"> - <param name="pattern">\d{13}</param> - </data> - </element> - </define> - <define name="identifier"> - <choice> - <ref name="identifier.uri"/> - <ref name="identifier.ean"/> - </choice> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="copyright"> - <element name="copyright"> - <ref name="copyright.content"/> - </element> - </define> - <define name="copyright.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <!-- ~~~~~~ contributors --> - <define name="contributors"> - <element name="contributors"> - <ref name="contributors.content"/> - </element> - </define> - <define name="contributors.content"> - <oneOrMore> - <ref name="contributor"/> - </oneOrMore> - </define> - <!-- ~~~~~~ contributor --> - <define name="contributor"> - <element name="contributor"> - <ref name="contributor.content"/> - </element> - </define> - <define name="contributor.content"> - <choice> - <group> - <optional> - <ref name="firstname"/> - <optional> - <ref name="secondname"/> - </optional> - </optional> - <ref name="lastname"/> - </group> - <ref name="label"/> - </choice> - <optional> - <ref name="address"/> - </optional> - <optional> - <ref name="link"/> - </optional> - <zeroOrMore> - <ref name="role"/> - </zeroOrMore> - </define> - <!-- ~~~~~~ firstname, secondname, lastname, label --> - <define name="firstname"> - <element name="firstname"> - <ref name="firstname.content"/> - </element> - </define> - <define name="secondname"> - <element name="secondname"> - <ref name="secondname.content"/> - </element> - </define> - <define name="lastname"> - <element name="lastname"> - <ref name="lastname.content"/> - </element> - </define> - <define name="label"> - <element name="label"> - <ref name="label.content"/> - </element> - </define> - <define name="firstname.content"> - <ref name="inlines"/> - </define> - <define name="secondname.content"> - <ref name="inlines"/> - </define> - <define name="lastname.content"> - <ref name="inlines"/> - </define> - <define name="label.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~ address --> - <define name="address"> - <element name="address"> - <ref name="address.content"/> - </element> - </define> - <define name="address.content"> - <ref name="inlines"/> - </define> - <!-- ~~~~~~ role --> - <define name="role"> - <element name="role"> - <ref name="role.content"/> - </element> - </define> - <define name="role.content"> - <choice> - <value>author</value> - <value>illustrator</value> - <value>publisher</value> - </choice> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="abstract"> - <element name="abstract"> - <ref name="abstract.content"/> - </element> - </define> - <define name="abstract.content"> - <oneOrMore> - <ref name="p"/> - </oneOrMore> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cover ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="cover"> - <element name="cover"> - <ref name="cover.content"/> - </element> - </define> - <define name="cover.content"> - <ref name="cover.image"/> - </define> - <define name="cover.image"> - <element name="image"> - <ref name="cover.image.attributes"/> - </element> - </define> - <define name="cover.image.attributes"> - <ref name="cover.image.id.attribute"/> - </define> - <define name="cover.image.id.attribute"> - <attribute name="id"> - <data type="NMTOKEN"/> - </attribute> - </define> - <!-- - ============================================================================= - DIVISION LEVEL - ============================================================================= - --> - <define name="composition.division"> - <element name="division"> - <ref name="composition.division.attributes"/> - <ref name="composition.division.content"/> - </element> - </define> - <define name="selection.division"> - <element name="division"> - <ref name="selection.division.attributes"/> - <ref name="selection.division.content"/> - </element> - </define> - <define name="composition.division.attributes"> - <interleave> - <optional> - <ref name="path.attribute"/> - </optional> - <optional> - <ref name="xpath.attribute"/> - </optional> - <optional> - <ref name="xslt.attribute"/> - </optional> - <ref name="remap.attributes"/> - </interleave> - </define> - <define name="selection.division.attributes"> - <optional> - <ref name="path.attribute"/> - </optional> - </define> - <define name="composition.division.content"> - <optional> - <ref name="composition.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="composition.division"/> - <ref name="composition.file"/> - </choice> - </oneOrMore> - </define> - <define name="selection.division.content"> - <optional> - <ref name="selection.head"/> - </optional> - <oneOrMore> - <choice> - <ref name="selection.division"/> - <ref name="selection.file"/> - <ref name="link"/> - </choice> - </oneOrMore> - </define> - <!-- - ============================================================================= - FILE LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="composition.file"> - <element name="file"> - <ref name="composition.file.attributes"/> - </element> - </define> - <define name="selection.file"> - <element name="file"> - <ref name="selection.file.attributes"/> - <ref name="file.content"/> - </element> - </define> - <define name="composition.file.attributes"> - <interleave> - <ref name="name.attribute"/> - <optional> - <ref name="xpath.attribute"/> - </optional> - <optional> - <ref name="xslt.attribute"/> - </optional> - </interleave> - </define> - <define name="selection.file.attributes"> - <interleave> - <ref name="name.attribute"/> - <optional> - <ref name="uri.attribute"/> - </optional> - </interleave> - </define> - <define name="name.attribute"> - <attribute name="name"> - <data type="anyURI"/> - </attribute> - </define> - <define name="file.content"> - <ref name="inlines"/> - </define> - <!-- - ============================================================================= - BLOCK LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="p"> - <element name="p"> - <ref name="p.content"/> - </element> - </define> - <define name="p.content"> - <ref name="inlines"/> - </define> - <!-- - ============================================================================= - INLINE LEVEL - ============================================================================= - --> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="inlines"> - <mixed> - <interleave> - <zeroOrMore> - <ref name="sup"/> - </zeroOrMore> - <zeroOrMore> - <ref name="sub"/> - </zeroOrMore> - </interleave> - </mixed> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="sup"> - <element name="sup"> - <ref name="inlines"/> - </element> - </define> - <define name="sub"> - <element name="sub"> - <ref name="inlines"/> - </element> - </define> - <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> - <define name="link"> - <element name="link"> - <ref name="link.attributes"/> - <ref name="link.content"/> - </element> - </define> - <define name="link.attributes"> - <ref name="uri.attribute"/> - </define> - <define name="uri.attribute"> - <attribute name="uri"> - <data type="anyURI"/> - </attribute> - </define> - <define name="link.content"> - <ref name="inlines"/> - </define> - <!-- - ============================================================================= - REMAP ATTRIBUTES - ============================================================================= - --> - <define name="remap.attributes"> - <interleave> - <optional> - <ref name="as.attribute"/> - </optional> - <optional> - <ref name="attributes.attribute"/> - </optional> - </interleave> - </define> - <define name="as.attribute"> - <attribute name="as"> - <data type="QName"/> - </attribute> - </define> - <define name="attributes.attribute"> - <attribute name="attributes"> - <list> - <oneOrMore> - <data type="token"> - <param name="pattern">\c+=\S+</param> - </data> - </oneOrMore> - </list> - </attribute> - </define> -</grammar>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Documents/les_miserables.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,458 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- $Id$ --> +<publidoc version="1.0"> + <document xml:id="les_miserables" xml:lang="fr"> + <head> + <title>Les Misérables (extraits)</title> + <contributors> + <contributor> + <firstname>Victor</firstname><lastname>HUGO</lastname> + </contributor> + </contributors> + <date value="1862"/> + </head> + + <!-- ================================================================== --> + <!-- = = --> + <!-- = Partie 1 = --> + <!-- = = --> + <!-- ================================================================== --> + <division> + <head> + <title>Partie 1. Fantine</title> + </head> + <!-- ================================================================ --> + <!-- = Livre 1 = --> + <!-- ================================================================ --> + <division> + <head> + <title>Livre 1. Un juste</title> + </head> + <!-- ============================================================== --> + <topic> + <head> + <title>1. M. Myriel</title> + </head> + <section> + <p>En 1815, M. Charles-François-Bienvenu Myriel était évêque de + Digne. C'était un vieillard d'environ soixante-quinze ans ; il + occupait le siège de Digne depuis 1806.</p> + <p>Quoique ce détail ne touche en aucune manière au fond même de ce + que nous avons à raconter, il n'est peut-être pas inutile, ne + fût-ce que pour être exact en tout, d'indiquer ici les bruits et + les propos qui avaient couru sur son compte au moment où il était + arrivé dans le diocèse. Vrai ou faux, ce qu'on dit des hommes tient + souvent autant de place dans leur vie et surtout dans leur destinée + que ce qu'ils font. M. Myriel était fils d'un conseiller au + parlement d'Aix ; noblesse de robe. On contait de lui que son père, + le réservant pour hériter de sa charge, l'avait marié de fort bonne + heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans + les familles parlementaires. Charles Myriel, nonobstant ce mariage, + avait, disait-on, beaucoup fait parler de lui. Il était bien fait + de sa personne, quoique d'assez petite taille, élégant, gracieux, + spirituel ; toute la première partie de sa vie avait été donnée au + monde et aux galanteries. La révolution survint, les événements se + précipitèrent, les familles parlementaires décimées, chassées, + traquées, se dispersèrent. M. Charles Myriel, dès les premiers + jours de la révolution, émigra en Italie. Sa femme y mourut d'une + maladie de poitrine dont elle était atteinte depuis longtemps. Ils + n'avaient point d'enfants. Que se passa-t-il ensuite dans la + destinée de M. Myriel ? L'écroulement de l'ancienne société + française, la chute de sa propre famille, les tragiques spectacles + de 93, plus effrayants encore peut-être pour les émigrés qui les + voyaient de loin avec le grossissement de l'épouvante, firent-ils + germer en lui des idées de renoncement et de solitude ? Fut-il, au + milieu d'une de ces distractions et de ces affections qui + occupaient sa vie, subitement atteint d'un de ces coups mystérieux + et terribles qui viennent quelquefois renverser, en le frappant au + coeur, l'homme que les catastrophes publiques n'ébranleraient pas + en le frappant dans son existence et dans sa fortune ? Nul n'aurait + pu le dire ; tout ce qu'on savait, c'est que, lorsqu'il revint + d'Italie, il était prêtre.</p> + <p>En 1804, M. Myriel était curé de Brignolles. Il était déjà + vieux, et vivait dans une retraite profonde.</p> + <p>Vers l'époque du couronnement, une petite affaire de sa cure, on + ne sait plus trop quoi, l'amena à Paris. Entre autres personnes + puissantes, il alla solliciter pour ses paroissiens M. le cardinal + Fesch. Un jour que l'empereur était venu faire visite à son oncle, + le digne curé, qui attendait dans l'antichambre, se trouva sur le + passage de sa majesté. Napoléon, se voyant regardé avec une + certaine curiosité par ce vieillard, se retourna, et dit + brusquement :</p> + <p>– Quel est ce bonhomme qui me regarde ?</p> + <p>– Sire, dit M. Myriel, vous regardez un bonhomme, et moi je + regarde un grand homme. Chacun de nous peut profiter.</p> + <p>L'empereur, le soir même, demanda au cardinal le nom de ce curé, + et quelque temps après M. Myriel fut tout surpris d'apprendre qu'il + était nommé évêque de Digne.</p> + <p>Qu'y avait-il de vrai, du reste, dans les récits qu'on faisait + sur la première partie de la vie de M. Myriel ? Personne ne le + savait. Peu de familles avaient connu la famille Myriel avant la + révolution.</p> + <p>M. Myriel devait subir le sort de tout nouveau venu dans une + petite ville où il y a beaucoup de bouches qui parlent et fort peu + de têtes qui pensent. Il devait le subir, quoiqu'il fût évêque et + parce qu'il était évêque. Mais, après tout, les propos auxquels on + mêlait son nom n'étaient peut-être que des propos ; du bruit, des + mots, des paroles ; moins que des paroles, des palabres, comme dit + l'énergique langue du midi.</p> + <p>Quoi qu'il en fût, après neuf ans d'épiscopat et de résidence à + Digne, tous ces racontages, sujets de conversation qui occupent + dans le premier moment les petites villes et les petites gens, + étaient tombés dans un oubli profond. Personne n'eût osé en parler, + personne n'eût même osé s'en souvenir.</p> + <p>M. Myriel était arrivé à Digne accompagné d'une vieille fille, + mademoiselle Baptistine, qui était sa soeur et qui avait dix ans de + moins que lui.</p> + <p>Ils avaient pour tout domestique une servante du même âge que + mademoiselle Baptistine, et appelée madame Magloire, laquelle, + après avoir été <mentioned>la servante de M. le Curé</mentioned>, + prenait maintenant le double titre de femme de chambre de + mademoiselle et femme de charge de monseigneur.</p> + <p>Mademoiselle Baptistine était une personne longue, pâle, mince, + douce ; elle réalisait l'idéal de ce qu'exprime le mot + « respectable » ; car il semble qu'il soit nécessaire qu'une femme + soit mère pour être vénérable. Elle n'avait jamais été jolie ; + toute sa vie, qui n'avait été qu'une suite de saintes oeuvres, + avait fini par mettre sur elle une sorte de blancheur et de + clarté ; et, en vieillissant, elle avait gagné ce qu'on pourrait + appeler la beauté de la bonté. Ce qui avait été de la maigreur dans + sa jeunesse était devenu, dans sa maturité, de la transparence ; et + cette diaphanéité laissait voir l'ange. C'était une âme plus encore + que ce n'était une vierge. Sa personne semblait faite d'ombre ; à + peine assez de corps pour qu'il y eût là un sexe ; un peu de + matière contenant une lueur ; de grands yeux toujours baissés ; un + prétexte pour qu'une âme reste sur la terre.</p> + <p>Madame Magloire était une petite vieille, blanche, grasse, + replète, affairée, toujours haletante, à cause de son activité + d'abord, ensuite à cause d'un asthme.</p> + <p>A son arrivée, on installa M. Myriel en son palais épiscopal + avec les honneurs voulus par les décrets impériaux qui classent + l'évêque immédiatement après le maréchal de camp. Le maire et le + président lui firent la première visite, et lui de son côté fit la + première visite au général et au préfet.</p> + <p>L'installation terminée, la ville attendit son évêque à + l'oeuvre.</p> + </section> + </topic> + <!-- ============================================================== --> + <topic> + <head> + <title>2. M. Myriel devient monseigneur Bienvenu</title> + </head> + <section> + <p>Le palais épiscopal de Digne était attenant à l'hôpital.</p> + <p>Le palais épiscopal était un vaste et bel hôtel bâti en pierre + au commencement du siècle dernier par monseigneur Henri Puget, + docteur en théologie de la faculté de Paris, abbé de Simore, lequel + était évêque de Digne en 1712. Ce palais était un vrai logis + seigneurial. Tout y avait grand air, les appartements de l'évêque, + les salons, les chambres, la cour d'honneur, fort large, avec + promenoirs à arcades, selon l'ancienne mode florentine, les jardins + plantés de magnifiques arbres. Dans la salle à manger, longue et + superbe galerie qui était au rez-de-chaussée et s'ouvrait sur les + jardins, monseigneur Henri Puget avait donné à manger en cérémonie + le 29 juillet 1714 à messeigneurs Charles Brûlart de Genlis, + archevêque-prince d'Embrun, Antoine de Mesgrigny, capucin, évêque + de Grasse, Philippe de Vendôme, grand prieur de France, abbé de + Saint-Honoré de Lérins, François de Berton de Grillon, évêque-baron + de Vence, César de Sabran de Forcalquier, évêque-seigneur de + Glandève, et Jean Soanen, prêtre de l'oratoire, prédicateur + ordinaire du roi, évêque-seigneur de Senez. Les portraits de ces + sept révérends personnages décoraient cette salle, et cette date + mémorable, 29 juillet 1714, y était gravée en lettres d'or sur une + table de marbre blanc.</p> + <p>L'hôpital était une maison étroite et basse à un seul étage avec + un petit jardin.</p> + <p>Trois jours après son arrivée, l'évêque visita l'hôpital. La + visite terminée, il fit prier le directeur de vouloir bien venir + jusque chez lui.</p> + <p>– Monsieur le directeur de l'hôpital, lui dit-il, combien en ce + moment avez-vous de malades ?</p> + <p>– Vingt-six, monseigneur.</p> + <p>– C'est ce que j'avais compté, dit l'évêque.</p> + <p>– Les lits, reprit le directeur, sont bien serrés les uns contre + les autres.</p> + <p>– C'est ce que j'avais remarqué.</p> + <p>– Les salles ne sont que des chambres, et l'air s'y renouvelle + difficilement.</p> + <p>– C'est ce qui me semble.</p> + <p>– Et puis, quand il y a un rayon de soleil, le jardin est bien + petit pour les convalescents.</p> + <p>– C'est ce que je me disais.</p> + <p>– Dans les épidémies, nous avons eu cette année le typhus, nous + avons eu une suette militaire il y a deux ans, cent malades + quelquefois ; nous ne savons que faire.</p> + <p>– C'est la pensée qui m'était venue.</p> + <p>– Que voulez-vous, monseigneur ? dit le directeur, il faut se + résigner.</p> + <p>Cette conversation avait lieu dans la salle à manger-galerie du + rez-de-chaussée.</p> + <p>L'évêque garda un moment le silence, puis il se tourna + brusquement vers le directeur de l'hôpital :</p> + <p>– Monsieur, dit-il, combien pensez-vous qu'il tiendrait de lits + rien que dans cette salle ?</p> + <p>– La salle à manger de monseigneur ! s'écria le directeur + stupéfait.</p> + <p>L'évêque parcourait la salle du regard et semblait y faire avec + les yeux des mesures et des calculs.</p> + <p>– Il y tiendrait bien vingt lits ! dit-il, comme se parlant à + lui-même.</p> + <p>Puis élevant la voix : – Tenez, monsieur le directeur de + l'hôpital, je vais vous dire. Il y a évidemment une erreur. Vous + êtes vingt-six personnes dans cinq ou six petites chambres. Nous + sommes trois ici, et nous avons place pour soixante. Il y a erreur, + je vous dis. Vous avez mon logis, et j'ai le vôtre. Rendez-moi ma + maison. C'est ici chez vous.</p> + <p>Le lendemain, les vingt-six pauvres étaient installés dans le + palais de l'évêque et l'évêque était à l'hôpital.</p> + <p>M. Myriel n'avait point de bien, sa famille ayant été ruinée par + la révolution. Sa soeur touchait une rente viagère de cinq cents + francs qui, au presbytère, suffisait à sa dépense + personnelle. M. Myriel recevait de l'état comme évêque un + traitement de quinze mille francs. Le jour même où il vint se loger + dans la maison de l'hôpital, M. Myriel détermina l'emploi de cette + somme une fois pour toutes de la manière suivante. Nous + transcrivons ici une note écrite de sa main.</p> + <p>Note pour régler les dépenses de ma maison.</p> + <p>Pour le petit séminaire : quinze cents livres.</p> + <p>Congrégation de la mission : cent livres.</p> + <p>Pour les lazaristes de Montdidier : cent livres.</p> + <p>Séminaire des missions étrangères à Paris : deux cents livres.</p> + <p>Congrégation du Saint-Esprit : cent cinquante livres.</p> + <p>Etablissements religieux de la Terre-Sainte : cent livres.</p> + <p>Sociétés de charité maternelle : trois cents livres.</p> + <p>En sus, pour celle d'Arles : cinquante livres.</p> + <p>Oeuvre pour l'amélioration des prisons : quatre cents livres.</p> + <p>Oeuvre pour le soulagement et la délivrance des prisonniers : cinq + cents livres.</p> + <p>Pour libérer des pères de famille prisonniers pour dettes : mille + livres.</p> + <p>Supplément au traitement des pauvres maîtres d'école du diocèse : + deux mille livres.</p> + <p>Grenier d'abondance des Hautes-Alpes : cent livres.</p> + <p>Congrégation des dames de Digne, de Manosque et de Sisteron, pour + l'enseignement gratuit des filles indigentes : quinze mille + livres.</p> + <p>Pour les pauvres : six mille livres.</p> + <p>Ma dépense personnelle : mille livres.</p> + <p>Total : quinze mille livres.</p> + <p>Pendant tout le temps qu'il occupa le siège de Digne, M. Myriel + ne changea presque rien à cet arrangement. Il appelait cela, comme + on voit, <mentioned>avoir réglé les dépenses de sa + maison</mentioned>.</p> + <p>Cet arrangement fut accepté avec une soumission absolue par + mademoiselle Baptistine. Pour cette sainte fille, M. de Digne était + tout à la fois son frère et son évêque, son ami selon la nature et + son supérieur selon l'église. Elle l'aimait et elle le vénérait + tout simplement. Quand il parlait, elle s'inclinait ; quand il + agissait, elle adhérait. La servante seule, madame Magloire, + murmura un peu. M. l'évêque, on l'a pu remarquer, ne s'était + réservé que mille livres, ce qui, joint à la pension de + mademoiselle Baptistine, faisait quinze cents francs par an. Avec + ces quinze cents francs, ces deux vieilles femmes et ce vieillard + vivaient.</p> + <p>Et quand un curé de village venait à Digne, M. l'évêque trouvait + encore moyen de le traiter, grâce à la sévère économie de madame + Magloire et à l'intelligente administration de mademoiselle + Baptistine.</p> + <p>Un jour, – il était à Digne depuis environ trois mois, – l'évêque + dit :</p> + <p>– Avec tout cela je suis bien gêné !</p> + <p>– Je le crois bien ! s'écria madame Magloire, Monseigneur n'a + seulement pas réclamé la rente que le département lui doit pour ses + frais de carrosse en ville et de tournées dans le diocèse. Pour les + évêques d'autrefois c'était l'usage.</p> + <p>– Tiens ! dit l'évêque, vous avez raison, madame Magloire.</p> + <p>Il fit sa réclamation.</p> + <p>Quelque temps après, le conseil général, prenant cette demande en + considération, lui vota une somme annuelle de trois mille francs, + sous cette rubrique : <mentioned>Allocation à M. l'évêque pour frais + de carrosse, frais de poste et frais de tournées + pastorales</mentioned>.</p> + <p>Cela fit beaucoup crier la bourgeoisie locale, et, à cette + occasion, un sénateur de l'empire, ancien membre du conseil des + cinq-cents favorable au dix-huit brumaire et pourvu près de la + ville de Digne d'une sénatorerie magnifique, écrivit au ministre + des cultes, M. Bigot de Préameneu, un petit billet irrité et + confidentiel dont nous extrayons ces lignes authentiques :</p> + <p>"– Des frais de carrosse ? pourquoi faire dans une ville de moins + de quatre mille habitants ? Des frais de poste et de tournées ? à + quoi bon ces tournées d'abord ? ensuite comment courir la poste dans + un pays de montagnes ? Il n'y a pas de routes. On ne va qu'à + cheval. Le pont même de la Durance à Château-Arnoux peut à peine + porter des charrettes à boeufs. Ces prêtres sont tous ainsi. Avides + et avares. Celui-ci a fait le bon apôtre en arrivant. Maintenant il + fait comme les autres. Il lui faut carrosse et chaise de poste. Il + lui faut du luxe comme aux anciens évêques. Oh ! toute cette + prêtraille ! Monsieur le comte, les choses n'iront bien que lorsque + l'empereur nous aura délivrés des calotins. A bas le pape ! (les + affaires se brouillaient avec Rome). Quant à moi, je suis pour César + tout seul. Etc., etc."</p> + <p>La chose, en revanche, réjouit fort madame Magloire. – Bon, + dit-elle à mademoiselle Baptistine, Monseigneur a commencé par les + autres, mais il a bien fallu qu'il finit par lui-même. Il a réglé + toutes ses charités.</p> + <p>Voilà trois mille livres pour nous. Enfin !</p> + <p>Le soir même, l'évêque écrivit et remit à sa soeur une note ainsi + conçue :</p> + <p>Frais de carrosse et de tournées.</p> + <p>Pour donner du bouillon de viande aux malades de l'hôpital : + quinze cents livres.</p> + <p>Pour la société de charité maternelle d'Aix : deux cent cinquante + livres.</p> + <p>Pour la société de charité maternelle de Draguignan : deux cent + cinquante livres.</p> + <p>Pour les enfants trouvés : cinq cent livres.</p> + <p>Pour les orphelins : cinq cent livres.</p> + <p>Total : trois mille livres.</p> + <p>Tel était le budget de M. Myriel.</p> + <p>Quant au casuel épiscopal, rachats de bans, dispenses, + ondoiements, prédications, bénédictions d'églises ou de chapelles, + mariages, etc., l'évêque le percevait sur les riches avec d'autant + plus d'âpreté qu'il le donnait aux pauvres.</p> + <p>Au bout de peu de temps, les offrandes d'argent affluèrent. Ceux + qui ont et ceux qui manquent frappaient à la porte de M. Myriel, + les uns venant chercher l'aumône que les autres venaient y + déposer. L'évêque, en moins d'un an, devint le trésorier de tous + les bienfaits et le caissier de toutes les détresses. Des sommes + considérables passaient par ses mains ; mais rien ne put faire + qu'il changeât quelque chose à son genre de vie et qu'il ajoutât le + moindre superflu à son nécessaire.</p> + <p>Loin de là. Comme il y a toujours encore plus de misère en bas + que de fraternité en haut, tout était donné, pour ainsi dire, avant + d'être reçu ; c'était comme de l'eau sur une terre sèche ; il avait + beau recevoir de l'argent, il n'en avait jamais. Alors il se + dépouillait.</p> + <p>L'usage étant que les évêques énoncent leurs noms de baptême en + tête de leurs mandements et de leurs lettres pastorales, les pauvres + gens du pays avaient choisi, avec une sorte d'instinct affectueux, + dans les noms et prénoms de l'évêque, celui qui leur présentait un + sens, et ils ne l'appelaient que monseigneur Bienvenu. Nous ferons + comme eux, et nous le nommerons ainsi dans l'occasion. Du reste, + cette appellation lui plaisait. – J'aime ce nom-là, + disait-il. Bienvenu corrige monseigneur.</p> + <p>Nous ne prétendons pas que le portrait que nous faisons ici soit + vraisemblable ; nous nous bornons à dire qu'il est ressemblant.</p> + </section> + </topic> + <!-- ============================================================== --> + <topic> + <head> + <title>3. A bon évêque dur évêché</title> + </head> + <section> + <p>…</p> + </section> + </topic> + </division> + + <!-- ================================================================ --> + <!-- = Livre 2 = --> + <!-- ================================================================ --> + <division> + <head> + <title>Livre 2. La chute</title> + </head> + <!-- ============================================================== --> + <topic> + <head> + <title>1. Le soir d'un jour de marche</title> + </head> + <section> + <p>…</p> + </section> + </topic> + </division> + </division> + + <!-- ================================================================== --> + <!-- = = --> + <!-- = Partie 2 = --> + <!-- = = --> + <!-- ================================================================== --> + <division> + <head> + <title>Partie 2. Cosette</title> + </head> + <!-- ================================================================ --> + <!-- = Livre 1 = --> + <!-- ================================================================ --> + <division> + <head> + <title>Livre 1. Waterloo</title> + </head> + <!-- ============================================================== --> + <topic> + <head> + <title>1. Ce qu'on rencontre en venant de Nivelles</title> + </head> + <section> + <p>L'an dernier (1861), par une belle matinée de mai, un passant, + celui qui raconte cette histoire, arrivait de Nivelles et se + dirigeait vers La Hulpe. Il allait à pied. Il suivait, entre deux + rangées d'arbres, une large chaussée pavée ondulant sur des + collines qui viennent l'une après l'autre, soulèvent la route et la + laissent retomber, et font là comme des vagues énormes. Il avait + dépassé Lillois et Bois-Seigneur-Isaac. Il apercevait, à l'ouest, + le clocher d'ardoise de Braine-l'Alleud qui a la forme d'un vase + renversé. Il venait de laisser derrière lui un bois sur une + hauteur, et, à l'angle d'un chemin de traverse, à côté d'une espèce + de potence vermoulue portant l'inscription : <mentioned>Ancienne + barrière no 4</mentioned>, un cabaret ayant sur sa façade cet + écriteau : <mentioned>Au quatre vents. Echabeau, café de + particulier</mentioned>.</p> + <p>Un demi-quart de lieue plus loin que ce cabaret, il arriva au + fond d'un petit vallon où il y a de l'eau qui passe sous une arche + pratiquée dans le remblai de la route. Le bouquet d'arbres, + clairsemé mais très vert, qui emplit le vallon d'un côté de la + chaussée, s'éparpille de l'autre dans les prairies et s'en va avec + grâce et comme en désordre vers Braine-l'Alleud.</p> + <p>Il y avait là, à droite, au bord de la route, une auberge, une + charrette à quatre roues devant la porte, un grand faisceau de + perches à houblon, une charrue, un tas de broussailles sèches près + d'une haie vive, de la chaux qui fumait dans un trou carré, une + échelle le long d'un vieux hangar à cloisons de paille. Une jeune + fille sarclait dans un champ où une grande affiche jaune, + probablement du spectacle forain de quelque kermesse, volait au + vent. A l'angle de l'auberge, à côté d'une mare où naviguait une + flottille de canards, un sentier mal pavé s'enfonçait dans les + broussailles. Ce passant y entra.</p> + <p>Au bout d'une centaine de pas, après avoir longé un mur du + quinzième siècle surmonté d'un pignon aigu à briques contrariées, + il se trouva en présence d'une grande porte de pierre cintrée, avec + imposte rectiligne, dans le grave style de Louis XIV, accostée de + deux médaillons planes. Une façade sévère dominait cette porte ; un + mur perpendiculaire à la façade venait presque toucher la porte et + la flanquait d'un brusque angle droit. Sur le pré devant la porte + gisaient trois herses à travers lesquelles poussaient pêle-mêle + toutes les fleurs de mai. La porte était fermée. Elle avait pour + clôture deux battants décrépits ornés d'un vieux marteau + rouillé.</p> + <p>Le soleil était charmant ; les branches avaient ce doux + frémissement de mai qui semble venir des nids plus encore que du + vent. Un brave petit oiseau, probablement amoureux, vocalisait + éperdument dans un grand arbre.</p> + <p>Le passant se courba et considéra dans la pierre à gauche, au + bas du pied-droit de la porte, une assez large excavation + circulaire ressemblant à l'alvéole d'une sphère. En ce moment les + battants s'écartèrent et une paysanne sortit.</p> + <p>Elle vit le passant et aperçut ce qu'il regardait.</p> + <p>– C'est un boulet français qui a fait ça, lui dit-elle. Et elle + ajouta :</p> + <p>– Ce que vous voyez là, plus haut, dans la porte, près d'un clou, + c'est le trou d'un gros biscayen. Le biscayen n'a pas traversé le + bois.</p> + <p>– Comment s'appelle cet endroit-ci ? demanda le passant.</p> + <p>– Hougomont, dit la paysanne.</p> + <p>Le passant se redressa. Il fit quelques pas et s'en alla regarder + au-dessus des haies. Il aperçut à l'horizon à travers les arbres une + espèce de monticule et sur ce monticule quelque chose qui, de loin, + ressemblait à un lion.</p> + <p>Il était dans le champ de bataille de Waterloo.</p> + </section> + </topic> + </division> + </division> + </document> +</publidoc>
--- a/Xml/Documents/torture_test.xml sam. janv. 14 12:44:31 2012 +0100 +++ b/Xml/Documents/torture_test.xml sam. janv. 21 18:03:09 2012 +0100 @@ -23,11 +23,11 @@ <role>publisher</role> </contributor> </contributors> - <date value="2011-06"/> + <date value="2012-01"/> <place>Paris</place> <source type="book"> <identifier type="ean">9782843550362</identifier> - <title>Les Misérables</title> + <title>L'art de mettre à l'épreuve</title> <pagenumber value="312"/> </source> <source type="file">
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/blanks_fill.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="blanks_fill"> + <head> + <title>Exercice à trous</title> + </head> + + <instructions> + <p>Écrivez correctement les adjectifs de couleur.</p> + </instructions> + + <blanks type="fill"> + <p> + Ses lèvres sont <blank><s>bleues</s><s>grises</s></blank> + (<mentioned>bleu ou gris</mentioned>) de froid. + </p> + <p> + Les serviettes <blank><s>orange</s> + <help><p>Nom ?</p></help> + <commentary><p>Orange est un nom.</p></commentary></blank> + (<mentioned>orange</mentioned>) sont propres. + </p> + <p> + Il y a des taches <blank>blanchâtres</blank> + (<mentioned>blanchâtre</mentioned>) sur votre veste. + </p> + </blanks> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/blanks_fill_strict.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="blanks_fill_strict"> + <head> + <title>Exercice à trous</title> + </head> + + <instructions> + <p>Écrivez correctement les adjectifs de couleur.</p> + </instructions> + + <blanks type="fill" strict="true"> + <section> + <p>La Mésopotamie est une région du <blank>Moyen + Orient</blank> située entre le <blank>Tigre</blank> + et l'<blank>Euphrate</blank>. Elle correspond à + l'<blank>Irak</blank> actuel. Il s'agit d'une zone + où l'irrigation n'est pas nécessaire pour l'agriculture.</p> + </section> + <section> + <p>Au <number type="roman" value="3">iii</number><sup>e</sup> + millénaire av. J.-C., on distingue le Nord, appelé + l'<blank>Assyrie</blank> de la région du Sud, la + <blank>Babylonie</blank>.</p> + </section> + </blanks> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/blanks_select.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="blanks_select"> + <head> + <title>Exercice à trous avec suggestions</title> + </head> + + <instructions> + <p>Complètez le texte.</p> + </instructions> + + <blanks type="select"> + <wrongs> + <wrong>bergère</wrong> + <wrong>« Au feu ! »</wrong> + </wrongs> + <p> + Un berger aime faire croire que le loup attaque <blank>son + troupeau</blank>. À chaque fois qu'il crie « Au loup ! », tous les gens + du village viennent en courant. Cela amuse beaucoup <blank>le + berger</blank>. + </p> + <p> + <blank>Un jour</blank>, le loup attaque son troupeau. Le berger crie + <blank>« Au loup ! »</blank> mais personne ne vient et le loup emporte + sa plus belle brebis. + </p> + </blanks> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/choices_check.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="choices_check"> + <head> + <title>Exercice QCM cases à cocher</title> + </head> + + <instructions> + <p>Mon chiffre des unités est le double de celui des dizaines, mon + chiffre des dixièmes est inférieur à celui des unités. Mon chiffre des + centièmes est supérieur à 7. Qui suis-je ? (deux solutions)</p> + </instructions> + + <choices type="check"> + <wrong>724,36</wrong> + <right>324,18</right> + <right>812,19</right> + <wrong>963,49</wrong> + </choices> + + <commentary> + <p>Il faut procéder par élimination.</p> + <list> + <item> + Les quatre nombres vérifient la première condition (« mon chiffre des + unités est le double de celui des dizaines ») : + 7<highlight>24</highlight>,36 ; 3<highlight>24</highlight>,18 ; + 8<highlight>12</highlight>,19 et 9<highlight>63</highlight>,49. + </item> + <item> + Mais la deuxième condition (« mon chiffre des dixièmes est inférieur + à celui des unités ») t'amène à écarter le nombre + 96<highlight>3</highlight>,<highlight>4</highlight>9 et la dernière + condition (« mon chiffre des centièmes est supérieur à 7 »), le + nombre 724,3<highlight>6</highlight>. + </item> + </list> + </commentary> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/choices_radio.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="choices_radio"> + <head> + <title>Exercice QCM radio</title> + </head> + + <instructions> + <p>Quand on commande une « surprise » à Otorino le pizzaïolo, il choisit + au hasard trois des ingrédients :</p> + <list> + <item>olives ou anchois ;</item> + <item>poivrons ou artichaut ou champignons ;</item> + <item>jambon ou coppa.</item> + </list> + <p>Quelle est la probabilité d'obtenir une pizza contenant des anchois + et des poivrons ?</p> + </instructions> + + <choices type="radio"> + <wrong>½</wrong> + <right>⅙</right> + <wrong>⅓</wrong> + </choices> + + <help> + <p>Pour trouver le nombre de cas possibles, le plus simple est de faire + un arbre.</p> + </help> + + <commentary> + <p>Pour trouver le nombre de cas possibles, le plus simple est de faire + un arbre.</p> + <p>Le nombre de cas favorables est 2.</p> + <p>On en déduit la probabilité cherchée : 2/12 = 1/6</p> + </commentary> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/composite.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="composite"> + <head> + <title>Assemblage d'exercices</title> + </head> + + <instructions> + <p>À quelle catégorie appartiennent les animaux suivants ?</p> + </instructions> + + <composite> + <instructions> + <p>abeille</p> + </instructions> + <choices type="radio"> + <wrong>gastéropode</wrong> + <right>insecte</right> + <wrong>mollusque</wrong> + </choices> + + <instructions> + <p>aigle</p> + </instructions> + <choices type="check"> + <right>oiseau</right> + <wrong>passereau</wrong> + <wrong>charognard</wrong> + <right>rapace</right> + </choices> + + <instructions> + <p>albatros</p> + </instructions> + <point type="radio"> + <p> + <right>oiseau</right>_/ + <wrong>rongeur</wrong> / + <wrong>reptile</wrong> + </p> + </point> + </composite> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/matching.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="matching"> + <head> + <title>Exercice d'appariement</title> + </head> + + <instructions> + <p>Associez les phrases suivantes avec leur contraire.</p> + </instructions> + + <matching> + <match> + <p>On s'entend très bien.</p> + <p>On s'entend comme chien et chat.</p> + </match> + <match> + <p>On a perdu le contact.</p> + <p>On a gardé contact.</p> + </match> + <match> + <p>On se chipote souvent.</p> + <p>On ne se dispute jamais.</p> + </match> + <match> + <p>On s’amuse comme des fous.</p> + <p>On est plutôt sérieux ensemble.</p> + </match> + </matching> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/point.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="point"> + <head> + <title>Exercice de pointage</title> + </head> + + <instructions> + <p>Sélectionne le nom ou le pronom qui détermine l'accord de + chaque verbe mis en valeur.</p> + </instructions> + + <point> + <section> + <p>Le centième <right>anniversaire</right> de la <wrong>mort</wrong> de + <wrong>Jules Verne</wrong> <highlight>a été célébré</highlight> en + 2005. Cet <right>écrivain</right> du <number type="roman" + value="19">xix</number><sup>e</sup> siècle <highlight>a</highlight> + encore aujourd'hui de nombreux <wrong>lecteurs</wrong>. + <right>Certains</right> le <highlight>considèrent</highlight> comme + l'<wrong>inventeur</wrong> du roman de science-fiction.</p> + </section> + <section> + <p>La <right>découverte</right> de la <wrong>Terre</wrong> + <highlight>est</highlight> le <wrong >thème</wrong> principal de ses + <wrong>romans</wrong>. Passionné de <wrong >géographie</wrong> et de + <wrong>sciences</wrong>, <right>Jules Verne</right> <highlight>a + imaginé</highlight> des <right>machines</right> extraordinaires qui + <highlight>permettent</highlight> d'explorer des + <wrong>contrées</wrong> lointaines ou inconnues. Ses + <right>héros</right> hors du commun <highlight>parcourent</highlight> + ainsi aussi bien les <wrong>profondeurs</wrong> sous-marines que + l'<wrong>espace</wrong> interstellaire.</p> + </section> + </point> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/point_radio.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="point_radio"> + <head> + <title>Exercice de pointage radio</title> + </head> + + <instructions> + <section> + <p>Désignez Le mot qui représente le substantif du verbe.</p> + </section> + </instructions> + + <point type="radio"> + <p> + Changer : + <wrong>changage</wrong> / <right>changement</right> / <wrong>changation</wrong> + </p> + </point> + </quiz> +</publiquiz>
--- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/Xml/Quiz/sort.xml sam. janv. 21 18:03:09 2012 +0100 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- $Id$ --> +<publiquiz version="1.0"> + <quiz xml:id="sort"> + <head> + <title>Exercice de tri</title> + </head> + + <instructions> + <p>Rangez les nombres du plus petit au plus grand.</p> + </instructions> + + <sort> + <comparison><</comparison> + <item shuffle="6">59</item> + <item shuffle="5">66</item> + <item shuffle="1">73</item> + <item shuffle="4">87</item> + <item shuffle="2">91</item> + <item shuffle="3">94</item> + </sort> + </quiz> +</publiquiz>