RelaxNG/publiset.rng
changeset 73 0a3a8006996b
parent 72 c85252fac80c
child 74 ebe0ab8699fc
--- 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>