--- 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>