RelaxNG/lg_nc_v3-2.rnc
author Patrick PIERRE <patrick.pierre@prismallia.fr>
jeu., 15 nov. 2012 21:41:38 +0100
changeset 36 d01d5f014c3f
child 38 c1685c404f53
permissions -rw-r--r--
Ajout d'un document LG
# **********************************************************************

# ******      DTD LITTERATURE GENERALE XML NC             V3.2    ******

# ******             (c) Nord Compo  (juin 1999)                  ******

# ******                realisee par : GD                         ******

# ******          mise a jour par : GD (juillet 2000)             ******

# ******       transformation en XML par : JMD (Aout 2000)        ******

# ******         mise a jour XML par : GD (janvier 2001)          ******

# ******             mise a jour de la version 2.1                ******

# ******               mise ‡ jour : GD (juin 2007)               ******

# ******               mise a jour : GD septembre 2007            ******

# ******               mise a jour : GD octobre 2007              ******

# ******               mise a jour : GD novembre 2007             ******

# ******               mise a jour : GD janvier 2008              ******

# ******               mise a jour : PT mai 2009                  ******

# ******               mise a jour : PT octobre 2009              ******

# **********************************************************************

# ******                    Entites externes                      ******

# ******                    Entites internes                      ******

texte = text | sup | inf | pc | sl
# Texte avec Exposant, Indice petites caps, ou souligne
typo = texte | i | b | r
# Texte avec mise en forme  (ital, gras, romain)
appel =
  indx
  | indx2
  | indx3
  | apnb
  | apnb2
  | apnb3
  | apnf
  | apnm
  | apfi
  | apta
# Entite d'appels divers
depart =
  apfi?,
  surtit?,
  n?,
  (((tit, apfi?),
    ((stit, apfi?), (sstit, apfi?)?)?)
   | ((stit, apfi?), (sstit, apfi?)?))?,
  (accro | trad | auteur | illustrateur | exer)*
# Entite Numero, titre et sous-titre

# Mai 2009 : ajout appels de figure optionnels

# Mai 2009 : ajout surtitre, illustrateur, sstit

# ******                       Elements Livre                     ******
livre =
  element livre {
    attlist.livre,
    ident,
    (appcrit | pre)*,
    corps,
    (appcrit | appen)*,
    collec*
  }
# Element Livre

# Octobre 2009 : ÈlÈment collec rÈpÈtable
attlist.livre &=
  attribute compo { text }?,
  attribute saisie { text }?,
  attribute type { text }?
#     Nom du photocompositeur
# lieu de la saisie
# Type coll

# ******                      Elements typo                       ******
b = element b { attlist.b, (texte | i | appel)* }
attlist.b &= empty
# Element Gras
i = element i { attlist.i, (texte | b | appel)* }
attlist.i &= empty
# Element ital
r = element r { attlist.r, (texte | appel)* }
attlist.r &= empty
# Element Romain
sup = element sup { attlist.sup, (text | appel | i | b | r)* }
attlist.sup &= empty
# Element Exposant
inf = element inf { attlist.inf, (text | appel | i | b | r)* }
attlist.inf &= empty
# Element Indice
pc = element pc { attlist.pc, (text | appel | i | b | r)* }
attlist.pc &= empty
# Element petites capitales
sl = element sl { attlist.sl, (text | appel | i | b | r)* }
attlist.sl &= empty
# Element souligne
br = element br { attlist.br, empty }
attlist.br &= empty
# Retour a la ligne dans un element titre

# ******               Elements Entete (pages de titre)           ******
ident =
  element ident {
    attlist.ident,
    (ftit
     | fstit
     | info
     | accro
     | collec
     | auteur
     | illustrateur
     | tit
     | stit
     | edit
     | copy
     | trad
     | ean
     | coned
     | type
     | ref
     | isbn
     | issn
     | modulus
     | fig
     | tableau
     | dedi
     | exer)+
  }
attlist.ident &= empty
# Element Entete ou pages de titre

# Mai 2009 : ajout illustrateur
ftit =
  element ftit { attlist.ftit, (typo | br | appel | renv | renvlnk)* }
attlist.ftit &= empty
# FAUX TITRE ouvrage
accro =
  element accro { attlist.accro, (typo | br | appel | renv | renvlnk)* }
attlist.accro &= empty
# Accroche ouvrage
fstit =
  element fstit { attlist.fstit, (typo | br | appel | renv | renvlnk)* }
attlist.fstit &= empty
# SOUS TITRE ouvrage
auteur = element auteur { attlist.auteur, (typo | appel)* }
attlist.auteur &= empty
# Auteur(s) de l'ouvrage ou de citation ou exergue
illustrateur =
  element illustrateur { attlist.illustrateur, (typo | appel)* }
attlist.illustrateur &= empty
# Mai 2009 : ajout element illustrateur
surtit =
  element surtit {
    attlist.surtit, (typo | appel | br | renv | renvlnk)*
  }
attlist.surtit &= empty
# Mai 2009 : ajout element surtitre
tit = element tit { attlist.tit, (typo | appel | br | renv | renvlnk)* }
attlist.tit &= empty
# Titre de l'ouvrage
stit =
  element stit { attlist.stit, (typo | appel | br | renv | renvlnk)* }
attlist.stit &= empty
# Sous-titre de l'ouvrage
sstit =
  element sstit { attlist.sstit, (typo | appel | br | renv | renvlnk)* }
attlist.sstit &= empty
# Mai 2009 : ajout Sous-sous-titre
type = element type { attlist.type, (typo | br | appel)* }
attlist.type &= empty
# Type d'ouvrage dans page de titre
info = element info { attlist.info, (typo | br | appel)* }
attlist.info &= empty
# Texte page de titre
collec =
  element collec {
    attlist.collec,
    (tit | stit | cint | cint2 | cint3 | auteur | p | pbib | fig)*
  }
attlist.collec &= empty
# page de collection

# Octobre 2009 : ajout ÈlÈment fig
cint = element cint { attlist.cint, (typo | br | appel)* }
attlist.cint &= empty
# intertitre dans page de collection
cint2 = element cint2 { attlist.cint2, (typo | br | appel)* }
attlist.cint2 &= empty
# intertitre dans page de collection
cint3 = element cint3 { attlist.cint3, (typo | br | appel)* }
attlist.cint3 &= empty
# intertitre dans page de collection
trad = element trad { attlist.trad, (typo | br | appel)* }
attlist.trad &= empty
# traduction par
edit = element edit { attlist.edit, (typo | appel)* }
attlist.edit &= empty
# Editeur(s)
copy = element copy { attlist.copy, (typo | br | appel)* }
attlist.copy &= empty
# Copyright de l'ouvrage
ref = element ref { attlist.ref, (typo | br | appel)* }
attlist.ref &= empty
# References de l'ouvrage
isbn = element isbn { attlist.isbn, (typo | appel)* }
attlist.isbn &= empty
# isbn
issn = element issn { attlist.issn, (typo | appel)* }
attlist.issn &= empty
# issn
modulus = element modulus { attlist.modulus, (typo | appel)* }
attlist.modulus &= empty
# modulus
ean = element ean { attlist.ean, text }
attlist.ean &= empty
# EAN 13
coned = element coned { attlist.coned, text }
attlist.coned &= empty
# Rang d'impression
dedi = element dedi { attlist.dedi, (typo | br | appel)* }
attlist.dedi &= empty
# Dedicace
exer = element exer { attlist.exer, p+, (source | auteur)* }
attlist.exer &= empty
# Exergue
source = element source { attlist.source, (typo | appel | p | br)* }
attlist.source &= empty
# Source(s) citation, image, exergue

# ******                    Elements paragraphe                    ******
p = element p { attlist.p, (typo | appel | renv | renvlnk)* }
attlist.p &=
  attribute align {
    "centre" | "justif" | "gauche" | "droite" | "ssalinea"
  }?
# Element paragraphe

# ******             Elements paragraphe bibliographique           ******
pbib =
  element pbib {
    attlist.pbib,
    (typo
     | appel
     | autbib
     | titbib
     | editbib
     | datebib
     | renv
     | renvlnk)*
  }
attlist.pbib &= empty
# Element paragraphe bibliographique (auteur, titre, editeur, date)
autbib = element autbib { attlist.autbib, (typo | appel)* }
attlist.autbib &= empty
# auteur
titbib = element titbib { attlist.titbib, (typo | appel)* }
attlist.titbib &= empty
# titre ouvrage
editbib = element editbib { attlist.editbib, (typo | appel)* }
attlist.editbib &= empty
# editeur
datebib = element datebib { attlist.datebib, (typo | appel)* }
attlist.datebib &= empty
# date de parution

# ******             Elements renvois pour reference croisee       ******
renv = element renv { attlist.renv, typo* }
# Renvoi point d'appel
attlist.renv &= attribute id { xsd:IDREF }
# Lien appel de reference croisee
renvlnk = element renvlnk { attlist.renvlnk, typo* }
# Renvoi point d'arrivee
attlist.renvlnk &= attribute id { xsd:ID }
# Lien de reference croisee

# ******               Elements d'appels de figures et notes      ******
apnb = element apnb { attlist.apnb, empty }
attlist.apnb &= attribute id { xsd:IDREF }
# Lien appel de note de bas de page niv 1
apnb2 = element apnb2 { attlist.apnb2, empty }
attlist.apnb2 &= attribute id { xsd:IDREF }
# Lien appel de note de bas de page niv 2
apnb3 = element apnb3 { attlist.apnb3, empty }
attlist.apnb3 &= attribute id { xsd:IDREF }
# Lien appel de note de bas de page niv 3
apnf = element apnf { attlist.apnf, empty }
attlist.apnf &= attribute id { xsd:IDREF }
# Lien appel de note de fin d'ouvrage
apnm = element apnm { attlist.apnm, empty }
attlist.apnm &= attribute id { xsd:IDREF }
# Lien appel de note de marge
apfi = element apfi { attlist.apfi, empty }
attlist.apfi &=
  attribute id { xsd:IDREF },
  attribute place {
    "haut" | "bas" | "intexte" | "pagesui" | "pagepre"
  }?,
  attribute align {
    "centre" | "gauche" | "droite" | "retrait" | "inline"
  }?
# Lien appel de figure

# Emplacement de l'illustration : haut de page, bas de page, ‡ la hauteur du texte, page suivante, page precedente

# Mai 2009 : ajout align : centre | gauche | droite | retrait | inline=dans le texte
apta = element apta { attlist.apta, empty }
attlist.apta &= attribute id { xsd:IDREF }
# Lien appel de tableaux

# ******                   Elements d'indexation                   ******

# Rem : Le separateur de niveau d'index est le ;
indx = element indx { attlist.indx, (typo | appel)* }
# Indexation
attlist.indx &= attribute LIBEL { text }?
# Libelle dans l'index
indx2 = element indx2 { attlist.indx2, (typo | appel)* }
# Indexation
attlist.indx2 &= attribute LIBEL { text }?
# Libelle dans l'index
indx3 = element indx3 { attlist.indx3, (typo | appel)* }
# Indexation
attlist.indx3 &= attribute LIBEL { text }?
# Libelle dans l'index

# ******                   Elements corps de l'ouvrage             ******
corps =
  element corps {
    attlist.corps, (vol+ | part+ | section+ | chap+ | dev)
  }
attlist.corps &= empty
# Corps de l'ouvrage

# ******                 Elements preliminaire de l'ouvrage        ******
pre =
  element pre {
    attlist.pre,
    apfi?,
    surtit?,
    (((tit, apfi?),
      ((stit, apfi?), (sstit, apfi?)?)?)
     | ((stit, apfi?), (sstit, apfi?)?))?,
    exer*,
    chapeau?,
    dev,
    (source | sign)*,
    collec*,
    defnotes?,
    apfi?
  }
# preliminaire : Intro, preface, Avertissement etc...
attlist.pre &=
  attribute id { xsd:ID }?,
  attribute num { text }?,
  attribute type {
    "intro"
    | "prologue"
    | "pref"
    | "remer"
    | "avpro"
    | "biblio"
    | "bio"
    | "remarque"
    | "note"
    | "chrono"
    | "presentation"
    | "personnages"
    | "sommaire"
    | "tdm"
    | "autre"
  }?
# Type de preliminaire : introduction, prologue, preface, remerciements, avant propos , bibliographie, remarque, note, chronologie, presentation et autre

# Indentifiant et numero permettant de referencer les titres pour une gestion electronique

# Mai 2009 : ajout type bio, personnages, sommaire, tdm

# Mai 2009 : ajout appels de figure optionnels en dÈbut et en fin de prÈliminaire

# Mai 2009 : ajout surtitre optionnel

# Mai 2009 : ajout sous-soustitre optionnel

# mai 2009 : ajout ÈlÈment chapeau ******

# mai 2009 : ajout appels de figure optionnels au niveau de titre et sous titre ******

# mai 2009 : ajout source optionnel ******

# dÈcembre 2009 : ajout collec optionnel en fin de pre, pour les titre du meme auteur d un pre bio******
sign = element sign { attlist.sign, (typo | appel | br)* }
attlist.sign &= empty
# Signature de la preface ou de l'intro, etc...**

# ******               Elements volume de l'ouvrage                ******
vol =
  element vol {
    attlist.vol,
    depart,
    (appcrit | pre)*,
    ((dev, part*) | part+),
    defnotes?,
    (appcrit | appen)*
  }
attlist.vol &=
  attribute id { xsd:ID }?,
  attribute num { text }?
# Indentifiant et numero permettant de referencer les titres pour une gestion electronique

# ******               Elements partie de l'ouvrage                ******
part =
  element part {
    attlist.part,
    depart,
    (appcrit | pre)*,
    ((dev, (section | chap)*)
     | (section | chap)+),
    defnotes?,
    (appcrit | appen)*
  }
attlist.part &=
  attribute id { xsd:ID }?,
  attribute num { text }?
# Indentifiant et numero permettant de referencer les titres pour une gestion electronique

# ******               Elements partie de l'ouvrage                ******
section =
  element section {
    attlist.section,
    depart,
    (appcrit | pre)*,
    ((dev, chap*) | chap+),
    defnotes?,
    (appcrit | appen)*
  }
attlist.section &=
  attribute id { xsd:ID }?,
  attribute num { text }?
# Indentifiant et numero permettant de referencer les titres pour une gestion electronique
n = element n { attlist.n, (typo | appel | br | renv | renvlnk)* }
attlist.n &= empty
# Numero de partie, Chapitre, sous-chapitre ou section

# ******              Elements Chapitre de l'ouvrage               ******
chap =
  element chap {
    attlist.chap,
    depart,
    (appcrit | pre)*,
    ((chapeau?, dev, schap*) | schap+),
    source?,
    defnotes?,
    (appcrit | appen)*
  }
attlist.chap &=
  attribute id { xsd:ID }?,
  attribute num { text }?
# Indentifiant et numero permettant de referencer les titres pour une gestion electronique

# Chapitre

# mai 2009 : ajout ÈlÈment chapeau ******

# mai 2009 : ajout ÈlÈment source ******

# ******               Elements Sous-chapitre                      ******
schap =
  element schap {
    attlist.schap,
    depart,
    (appcrit | pre)*,
    chapeau?,
    dev,
    defnotes?,
    (appcrit | appen)*
  }
attlist.schap &=
  attribute id { xsd:ID }?,
  attribute num { text }?
# Indentifiant et numero permettant de referencer les titres pour une gestion electronique

# Sous-chapitre

# mai 2009 : ajout ÈlÈment chapeau ******

# ******             Elements postliminaire de l'ouvrage           ******
appen =
  element appen {
    attlist.appen,
    (apfi?,
     surtit?,
     (((tit, apfi?),
       ((stit, apfi?), (sstit, apfi?)?)?)
      | ((stit, apfi?), (sstit, apfi?)?))?,
     exer*,
     ((((chapeau?, dev) | notefin),
       sect*)
      | sect+),
     (source | sign)*,
     defnotes?),
    collec*,
    apfi?
  }
attlist.appen &=
  attribute id { xsd:ID }?,
  attribute num { text }?,
  attribute type {
    "postface"
    | "conclusion"
    | "remer"
    | "biblio"
    | "bio"
    | "chrono"
    | "remarque"
    | "annexe"
    | "notes"
    | "glossaire"
    | "lexique"
    | "historique"
    | "genealogie"
    | "epilogue"
    | "tdm"
    | "horstexte"
    | "personnages"
    | "autre"
  }?
# Indentifiant et numero permettant de referencer les titres pour une gestion electronique

# Appendice : conclusion, postface, annexes etc...

# mai 2009 : ajout types glossaire, lexique, historique, genealogie, Èpilogue, tdm, horstexte ******

# mai 2009 : ajout appels de figure optionnels en dÈbut et en fin appendice ******

# mai 2009 : ajout exergue optionnel en dÈbut d' appendice ******

# mai 2009 : ajout surtitre optionnel ******

# Mai 2009 : ajout sous-soustitre optionnel

# mai 2009 : ajout ÈlÈment chapeau******

# mai 2009 : ajout ÈlÈment source******

# mai 2009 : ajout appels de figure optionnels au niveau de titre et sous titre ******

# dÈcembre 2009 : ajout collec optionnel en fin de pre, pour les titre du meme auteur d un pre bio******

# dÈcembre 2009 : ajout valeur attribut personnages ******

# ******             Appareil critique           ******
appcrit =
  element appcrit {
    attlist.appcrit,
    surtit?,
    (((tit, apfi?),
      ((stit, apfi?), (sstit, apfi?)?)?)
     | ((stit, apfi?), (sstit, apfi?)?))?,
    ((((chapeau?, dev) | notefin),
      sect*)
     | sect+),
    (source | sign)*,
    collec*,
    defnotes?
  }
attlist.appcrit &=
  attribute id { xsd:ID }?,
  attribute num { text }?,
  attribute type {
    "intro"
    | "prologue"
    | "pref"
    | "remer"
    | "avpro"
    | "biblio"
    | "remarque"
    | "note"
    | "chrono"
    | "presentation"
    | "personnages"
    | "sommaire"
    | "tdm"
    | "postface"
    | "conclusion"
    | "bio"
    | "annexe"
    | "glossaire"
    | "lexique"
    | "historique"
    | "genealogie"
    | "epilogue"
    | "horstexte"
    | "autre"
  }?
# mai 2009 : Definition des types d' appareils critiques : tous ceux de pre et d'appen

# mai 2009 : ajout surtitre optionnel ******

# Mai 2009 : ajout sous-soustitre optionnel

# mai 2009 : ajout ÈlÈment chapeau******

# mai 2009 : ajout ÈlÈment source******

# mai 2009 : ajout appels de figure optionnels au niveau de titre et sous titre ******

# dÈcembre 2009 : ajout collec optionnel en fin de pre, pour les titre du meme auteur d un pre bio******

# ******                 Elements Section                          ******
sect =
  element sect {
    attlist.sect,
    depart,
    ((chapeau?, dev) | notefin),
    sign*,
    defnotes?
  }
attlist.sect &=
  attribute id { xsd:ID }?,
  attribute num { text }?,
  attribute type {
    "postface"
    | "conclusion"
    | "remer"
    | "biblio"
    | "bio"
    | "chrono"
    | "remarque"
    | "annexe"
    | "notes"
    | "autre"
  }?
# Indentifiant et numero permettant de referencer les titres pour une gestion electronique

# Section

# mai 2009 : ajout ÈlÈment chapeau******

# ******                Elements Developpement                     ******
dev =
  element dev {
    attlist.dev,
    (((let?, (p | pbib))
      | bl
      | sep
      | dialogue
      | theatre
      | \list
      | stroplg
      | cita
      | infratexte
      | lettre
      | fig
      | tableau
      | enc
      | sign)
     | (niv1 | niv2 | niv3 | niv4 | niv5))+,
    fin?,
    source?
  }
attlist.dev &= empty
# mai 2009 : ajout source ******

# Developpement des chapitres, parties ou sections...
chapeau = element chapeau { attlist.chapeau, let?, p+ }
attlist.chapeau &= empty
# mai 2009 : ajout ÈlÈment chapeau pour preliminaire, appendice, chapitre, sous chapitre, sect ******

# ******                Elements Theatre                         ******
theatre = element theatre { attlist.theatre, distrib*, acte+ }
attlist.theatre &= empty
# Module d'enrichissement pour ouvrage de theatre...
distrib = element distrib { attlist.distrib, tit, role+, expos* }
attlist.distrib &= empty
# liste des personnage de la piece...
role = element role { attlist.role, (pers | acteur)* }
attlist.role &= empty
# role du personnage
expos =
  element expos { attlist.expos, (typo | appel | renv | renvlnk)* }
attlist.expos &= empty
# exposition (ou se deroule la piece)
acte =
  element acte {
    attlist.acte, n?, tit?, stit?, (pers | didasc)*, scene+
  }
attlist.acte &= empty
# acte
pers =
  element pers {
    attlist.pers, (typo | appel | renv | renvlnk | didasc)*
  }
attlist.pers &= empty
# personnage(s)
acteur =
  element acteur {
    attlist.acteur, (typo | appel | renv | renvlnk | didasc)*
  }
attlist.acteur &= empty
# acteur(s)
didasc =
  element didasc { attlist.didasc, (typo | appel | renv | renvlnk)* }
attlist.didasc &= empty
# didascalie
scene =
  element scene {
    attlist.scene, n?, tit?, stit?, (pers | didasc)*, replique+
  }
attlist.scene &= empty
# scene
replique =
  element replique {
    attlist.replique,
    (pers+, (p | vers | didasc)*)+
  }
attlist.replique &= empty
# replique
vers = element vers { attlist.vers, (typo | appel | renv | renvlnk)* }
attlist.vers &=
  attribute align {
    "centre" | "justif" | "gauche" | "droite" | "stichomythie"
  }?,
  attribute num { text }?
# Attribut du vers (stichomytie pour les vers qui se suivent

# vers
bl = element bl { attlist.bl, empty }
# Ligne de blanc
attlist.bl &= attribute v { text }
# Valeur de blanc
sep = element sep { attlist.sep, empty }
# Separateur
attlist.sep &=
  attribute type {
    "filet" | "frise" | "etoiles" | "etoile" | "logo" | "autre"
  },
  attribute src { text }?
# type de separateur

# Mai 2009 : ajout scr : nom de l'image pour logo, cul de lampe...

# ******				Element liste		 		******
\list = element list { attlist.list, item+ }
attlist.list &=
  attribute type {
    "puce"
    | "tiret"
    | "num"
    | "alpha"
    | "none"
    | "imagelist1"
    | "imagelist2"
    | "imagelist3"
    | "autre"
  }?
# Liste, Enumeration

# mai 2009 : ajout valeur type imagelist1 imagelist2 imagelist3 pour utiliser une image comme symbole optionnel ******

# Item liste
item = element item { attlist.item, (n?, p+), \list* }
attlist.item &= empty
# ******		Strophe et vers dans la LG... 		******
stroplg = element stroplg { attlist.stroplg, tit?, (verslg | bl)+ }
# Strophe
attlist.stroplg &= attribute type { text }?
# Type de vers : centre, retrait, ligne

# Vers
verslg = element verslg { attlist.verslg, (typo | appel)* }
attlist.verslg &=
  attribute type { text }?,
  attribute num { text }?
# Dialogue
dialogue =
  element dialogue {
    attlist.dialogue,
    (interloc,
     (p | stroplg | bl | sep | \list | cita | fig | tableau | enc)+)+,
    fin?
  }
attlist.dialogue &= empty
interloc =
  element interloc {
    attlist.interloc, (typo | appel | renv | renvlnk)*
  }
attlist.interloc &= empty
cita =
  element cita {
    attlist.cita,
    (date | lieu | entete)*,
    (p | stroplg | bl)+,
    (source | auteur | polit)*,
    fin?
  }
attlist.cita &= attribute type { "citation" | "lettre" }?
lettre =
  element lettre {
    attlist.lettre,
    (date | lieu | entete)*,
    (p | stroplg | bl)+,
    (source | auteur | polit)*
  }
attlist.lettre &= empty
infratexte =
  element infratexte {
    attlist.infratexte, tit?, (p | cita | stroplg | bl | sep)+, fin?
  }
attlist.infratexte &= empty
fin = element fin { attlist.fin, (typo | appel | renv | renvlnk | br)* }
attlist.fin &= empty
# matÈrialise un texte de fin de niveau
date =
  element date { attlist.date, (typo | appel | renv | renvlnk | br)* }
attlist.date &= empty
# date pour une correspondance
lieu =
  element lieu { attlist.lieu, (typo | appel | renv | renvlnk | br)* }
attlist.lieu &= empty
# lieu pour une correspondance
entete =
  element entete {
    attlist.entete, (typo | appel | renv | renvlnk | br)*
  }
attlist.entete &= empty
# entete pour une correspondance
polit =
  element polit { attlist.polit, (typo | appel | renv | renvlnk | br)* }
attlist.polit &= empty
# politesse pour une correspondance

# ******		 Niveau d'intertitre et de Texte		 ******
niv1 =
  element niv1 {
    attlist.niv1,
    (n?,
     int?,
     sint?,
     exer*,
     (((let?, p)
       | pbib
       | bl
       | sep
       | \list
       | stroplg
       | cita
       | infratexte
       | lettre
       | fig
       | tableau
       | enc)+
      | (niv2 | niv3 | niv4 | niv5)*)+),
    fin?
  }
attlist.niv1 &= empty
# Niveau 1
niv2 =
  element niv2 {
    attlist.niv2,
    (n?,
     int?,
     sint?,
     exer*,
     (((let?, p)
       | pbib
       | bl
       | sep
       | \list
       | stroplg
       | cita
       | infratexte
       | lettre
       | fig
       | tableau
       | enc)+
      | (niv3 | niv4 | niv5)*)+),
    fin?
  }
attlist.niv2 &= empty
# Niveau 2
niv3 =
  element niv3 {
    attlist.niv3,
    (n?,
     int?,
     sint?,
     exer*,
     (((let?, p)
       | pbib
       | bl
       | sep
       | \list
       | stroplg
       | cita
       | infratexte
       | lettre
       | fig
       | tableau
       | enc)+
      | (niv4 | niv5)*)+),
    fin?
  }
attlist.niv3 &= empty
# Niveau 3
niv4 =
  element niv4 {
    attlist.niv4,
    (n?,
     int?,
     sint?,
     exer*,
     (((let?, p)
       | pbib
       | bl
       | sep
       | \list
       | stroplg
       | cita
       | infratexte
       | lettre
       | fig
       | tableau
       | enc)+
      | niv5)*),
    fin?
  }
attlist.niv4 &= empty
# Niveau 4
niv5 =
  element niv5 {
    attlist.niv5,
    (n?,
     int?,
     sint?,
     exer*,
     ((let?, p)
      | pbib
      | bl
      | sep
      | \list
      | stroplg
      | cita
      | infratexte
      | lettre
      | fig
      | tableau
      | enc)+),
    fin?
  }
attlist.niv5 &= empty
# Niveau 5
int = element int { attlist.int, (typo | br | appel | renv | renvlnk)* }
attlist.int &= empty
# Intertitre
sint =
  element sint { attlist.sint, (typo | br | appel | renv | renvlnk)* }
attlist.sint &= empty
# Sous intertitre

# ******               Elements Lettrine                         ******
let = element let { attlist.let, typo* }
attlist.let &= empty
# Lettrine

# ******                        Encadre                            ******
enc =
  element enc { attlist.enc, surtit?, tit?, stit?, exer*, dev, sign* }
attlist.enc &= empty
# Encadre

# mai 2009 : ajout surtitre optionnel ******

# ******                  Elements definitions de notes          ******
defnotes =
  element defnotes {
    attlist.defnotes, (ntb | ntb2 | ntb3 | ntf | ntm)+
  }
attlist.defnotes &= empty
# Definition des notes de la partie, du chapitre etc...
ntb = element ntb { attlist.ntb, (p | pbib | tableau | fig)+ }
# Texte de la note
attlist.ntb &= attribute id { xsd:ID }
# Lien appel de note
ntb2 = element ntb2 { attlist.ntb2, (p | pbib | tableau | fig)+ }
# Texte de la note niveau 2
attlist.ntb2 &= attribute id { xsd:ID }
# Lien appel de note niveau 2
ntb3 = element ntb3 { attlist.ntb3, (p | pbib | tableau | fig)+ }
# Texte de la note niveau 3
attlist.ntb3 &= attribute id { xsd:ID }
# Lien appel de note niveau 3
ntf = element ntf { attlist.ntf, (p | pbib | tableau | fig)+ }
# Texte de la note
attlist.ntf &= attribute id { xsd:ID }
# Lien appel de note
ntm = element ntm { attlist.ntm, (p | pbib | tableau | fig)+ }
# Texte de la note
attlist.ntm &= attribute id { xsd:ID }
# Lien appel de note

# ******                Elements note de fin                     ******
notefin =
  element notefin {
    attlist.notefin,
    ((ntf | p)* | (nfniv1 | nfniv2 | nfniv3 | nfniv4 | nfniv5)*)+
  }
attlist.notefin &= empty
# Developpement des chapitres, parties ou sections...

# ******		 Niveau d'intertitre et de Texte		 ******
nfniv1 =
  element nfniv1 {
    attlist.nfniv1,
    n?,
    int?,
    sint?,
    ((ntf | p)* | (nfniv2 | nfniv3 | nfniv4 | nfniv5)*)+
  }
attlist.nfniv1 &= empty
# Niveau 1
nfniv2 =
  element nfniv2 {
    attlist.nfniv2,
    n?,
    int?,
    sint?,
    ((ntf | p)* | (nfniv3 | nfniv4 | nfniv5)*)+
  }
attlist.nfniv2 &= empty
# Niveau 2
nfniv3 =
  element nfniv3 {
    attlist.nfniv3,
    n?,
    int?,
    sint?,
    ((ntf | p)* | (nfniv4 | nfniv5)*)+
  }
attlist.nfniv3 &= empty
# Niveau 3
nfniv4 =
  element nfniv4 {
    attlist.nfniv4,
    n?,
    int?,
    sint?,
    ((ntf | p)* | nfniv5*)+
  }
attlist.nfniv4 &= empty
# Niveau 4
nfniv5 = element nfniv5 { attlist.nfniv5, n?, int?, sint?, (ntf | p)+ }
attlist.nfniv5 &= empty
# Niveau 5

# ******                  Elements definitions de figure           ******
fig = element fig { attlist.fig, (tit | img | leg | source)+ }
# contenu du bloc figure
attlist.fig &= attribute id { xsd:ID }?
# Lien appel de figure
img = element img { attlist.img, empty }
# Appel de la source de l'image
attlist.img &= attribute src { text }?
# Nom de l'image
leg = element leg { attlist.leg, p+ }
attlist.leg &= empty
# Legende d'illustration

# ******                 Elements definitions de tableau           ******
yesorno = string
tableau =
  element tableau {
    attlist.tableau,
    (leg | source)*,
    (stab | (table, stab*)),
    (leg | source)*
  }
# contenu du bloc tableau
attlist.tableau &= attribute id { xsd:ID }?
# Lien appel de tableau

# dÈcembre 2009 : ajout possibilitÈ table et stab ******
stab = element stab { attlist.stab, empty }
# Appel de la source du tableau (si tableau=image)
attlist.stab &= attribute src { text }?
# Nom du tableau

# ******                 Tableau en cals           ******
table = element table { attlist.table, title?, tgroup+ }
attlist.table &=
  attribute frame {
    "top" | "bottom" | "topbot" | "all" | "sides" | "none"
  }?,
  attribute colsep { yesorno }?,
  attribute rowsep { yesorno }?
title =
  element title { attlist.title, (typo | appel | br | renv | renvlnk)* }
attlist.title &= empty
tgroup =
  element tgroup {
    attlist.tgroup, colspec*, spanspec*, thead?, tfoot?, tbody
  }
attlist.tgroup &=
  attribute cols { text },
  attribute colsep { yesorno }?,
  attribute rowsep { yesorno }?,
  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
  attribute char { text }?,
  attribute charoff { text }?
colspec = element colspec { attlist.colspec, empty }
attlist.colspec &=
  attribute colnum { text }?,
  attribute colname { text }?,
  attribute colwidth { text }?,
  attribute colsep { yesorno }?,
  attribute rowsep { yesorno }?,
  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
  attribute char { text }?,
  attribute charoff { text }?
spanspec = element spanspec { attlist.spanspec, empty }
attlist.spanspec &=
  attribute namest { text },
  attribute nameend { text },
  attribute spanname { text },
  attribute colsep { yesorno }?,
  attribute rowsep { yesorno }?,
  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
  attribute char { text }?,
  attribute charoff { text }?
thead = element thead { attlist.thead, colspec*, row+ }
attlist.thead &= attribute valign { "top" | "middle" | "bottom" }?
tfoot = element tfoot { attlist.tfoot, colspec*, row+ }
attlist.tfoot &= attribute valign { "top" | "middle" | "bottom" }?
tbody = element tbody { attlist.tbody, row+ }
attlist.tbody &= attribute valign { "top" | "middle" | "bottom" }?
row = element row { attlist.row, entry* }
attlist.row &=
  attribute rowsep { yesorno }?,
  attribute valign { "top" | "middle" | "bottom" }?
entry =
  element entry {
    attlist.entry, (typo | appel | renv | renvlnk | br | p | \list)*
  }
attlist.entry &=
  attribute colname { text }?,
  attribute namest { text }?,
  attribute nameend { text }?,
  attribute spanname { text }?,
  attribute morerows { text }?,
  attribute colsep { yesorno }?,
  attribute rowsep { yesorno }?,
  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
  attribute char { text }?,
  attribute charoff { text }?,
  attribute rotate { yesorno }?,
  attribute valign { "top" | "middle" | "bottom" }?
start = livre