patrick@38: # ********************************************************************** patrick@38: # ****** DTD LITTERATURE GENERALE XML NC V3.2 ****** patrick@38: # ****** (c) Nord Compo (juin 1999) ****** patrick@38: # ****** realisee par : GD ****** patrick@38: # ****** mise a jour par : GD (juillet 2000) ****** patrick@38: # ****** transformation en XML par : JMD (Aout 2000) ****** patrick@38: # ****** mise a jour XML par : GD (janvier 2001) ****** patrick@38: # ****** mise a jour de la version 2.1 ****** patrick@38: # ****** mise a jour : GD (juin 2007) ****** patrick@38: # ****** mise a jour : GD septembre 2007 ****** patrick@38: # ****** mise a jour : GD octobre 2007 ****** patrick@38: # ****** mise a jour : GD novembre 2007 ****** patrick@38: # ****** mise a jour : GD janvier 2008 ****** patrick@38: # ****** mise a jour : PT mai 2009 ****** patrick@38: # ****** mise a jour : PT octobre 2009 ****** patrick@38: # ********************************************************************** patrick@38: # ****** Transformation RelaxNG Prismallia ****** patrick@36: # ********************************************************************** patrick@36: patrick@36: patrick@38: start = livre patrick@36: patrick@38: livre = element livre { livre.attributes, livre.content } patrick@36: patrick@38: livre.attributes = patrick@38: attribute compo { text }? patrick@38: & attribute saisie { text }? patrick@38: & attribute type { text }? patrick@36: patrick@38: livre.content = patrick@38: ident, patrick@38: (appcrit | pre)*, patrick@38: corps, patrick@38: (appcrit | appen)*, patrick@38: collec* patrick@36: patrick@36: patrick@38: # ============================================================================= patrick@38: # Elements Entete (pages de titre) patrick@38: # ============================================================================= patrick@36: patrick@38: # ~~~~~~ ident patrick@38: ident = element ident { ident.content } patrick@36: patrick@38: ident.content = patrick@38: (ftit patrick@38: | fstit patrick@38: | info patrick@38: | accro patrick@38: | collec patrick@38: | auteur patrick@38: | illustrateur patrick@38: | tit patrick@38: | stit patrick@38: | edit patrick@38: | copy patrick@38: | trad patrick@38: | ean patrick@38: | coned patrick@38: | type patrick@38: | ref patrick@38: | isbn patrick@38: | issn patrick@38: | modulus patrick@38: | fig patrick@38: | tableau patrick@38: | dedi patrick@38: | exer)+ patrick@36: patrick@38: # ~~~~~~ Faux titre ouvrage patrick@38: ftit = element ftit { (typo | br | appel | renv | renvlnk)* } patrick@36: patrick@38: # ~~~~~~ Accroche ouvrage patrick@38: accro = element accro { (typo | br | appel | renv | renvlnk)* } patrick@36: patrick@38: # ~~~~~~ Sous titre ouvrage patrick@38: fstit = element fstit { (typo | br | appel | renv | renvlnk)* } patrick@36: patrick@38: # ~~~~~~ Auteur(s) de l'ouvrage ou de citation ou exergue patrick@38: auteur = element auteur { (typo | appel)* } patrick@36: patrick@38: # ~~~~~~ Illustrateur patrick@38: illustrateur = element illustrateur { (typo | appel)* } patrick@36: patrick@38: # ~~~~~~ Surtitre patrick@38: surtit = element surtit {(typo | appel | br | renv | renvlnk)*} patrick@36: patrick@38: # ~~~~~~ Titre de l'ouvrage patrick@38: tit = element tit { (typo | appel | br | renv | renvlnk)* } patrick@36: patrick@38: # ~~~~~~ Sous-titre de l'ouvrage patrick@38: stit = element stit { (typo | appel | br | renv | renvlnk)* } patrick@36: patrick@38: # ~~~~~~ Sous-sous-titre patrick@38: sstit = element sstit { (typo | appel | br | renv | renvlnk)* } patrick@38: patrick@38: # ~~~~~~ Type d'ouvrage dans page de titre patrick@38: type = element type { (typo | br | appel)* } patrick@38: patrick@38: # ~~~~~~ Texte page de titre patrick@38: info = element info { (typo | br | appel)* } patrick@38: patrick@38: # ~~~~~~ page de collection patrick@38: collec = element collec { patrick@38: (tit | stit | cint | cint2 | cint3 | auteur | p | pbib | fig)* } patrick@38: patrick@38: # ~~~~~~ Intertitre dans page de collection patrick@38: cint = element cint { (typo | br | appel)* } patrick@38: cint2 = element cint2 { (typo | br | appel)* } patrick@38: cint3 = element cint3 { (typo | br | appel)* } patrick@38: patrick@38: # ~~~~~~ Traduction par patrick@38: trad = element trad { (typo | br | appel)* } patrick@38: patrick@38: # ~~~~~~ Editeur(s) patrick@38: edit = element edit { (typo | appel)* } patrick@38: patrick@38: # ~~~~~~ Copyright de l'ouvrage patrick@38: copy = element copy { (typo | br | appel)* } patrick@38: patrick@38: # ~~~~~~ References de l'ouvrage patrick@38: ref = element ref { (typo | br | appel)* } patrick@38: patrick@38: # ~~~~~~ ISBN, ISSN patrick@38: isbn = element isbn { (typo | appel)* } patrick@38: issn = element issn { (typo | appel)* } patrick@38: patrick@38: # ~~~~~~ Modulus patrick@38: modulus = element modulus { (typo | appel)* } patrick@38: patrick@38: # ~~~~~~ EAN 13 patrick@38: ean = element ean { xsd:token {pattern = "\d{13}"} } patrick@38: patrick@38: # ~~~~~~ Rang d'impression patrick@38: coned = element coned { text } patrick@38: patrick@38: # ~~~~~~ Dedicace patrick@38: dedi = element dedi { (typo | br | appel)* } patrick@38: patrick@38: # ~~~~~~ Exergue patrick@38: exer = element exer { p+, (source | auteur)* } patrick@38: patrick@38: # ~~~~~~ Source(s) citation, image, exergue patrick@38: source = element source { (typo | appel | p | br)* } patrick@38: patrick@38: patrick@38: # ============================================================================= patrick@38: # Elements preliminaire de l'ouvrage patrick@38: # ============================================================================= patrick@38: patrick@38: # ~~~~~~ pre patrick@38: pre = element pre { pre.attributes, pre.content } patrick@38: patrick@38: pre.attributes = patrick@38: attribute id { xsd:ID }? patrick@38: & attribute num { text }? patrick@38: & attribute type { "intro" | "prologue" | "pref" | "remer" | "avpro" | "biblio" patrick@38: | "bio" | "remarque" | "note" | "chrono" | "presentation" | "personnages" patrick@38: | "sommaire" | "tdm" | "autre" }? patrick@38: patrick@38: pre.content = patrick@38: apfi?, patrick@38: surtit?, patrick@38: (((tit, apfi?), patrick@38: ((stit, apfi?), (sstit, apfi?)?)?) patrick@38: | ((stit, apfi?), (sstit, apfi?)?))?, patrick@38: exer*, patrick@38: chapeau?, patrick@38: dev, patrick@38: (source | sign)*, patrick@38: collec*, patrick@38: defnotes?, patrick@38: apfi? patrick@38: patrick@38: # ~~~~ chapeau patrick@38: chapeau = element chapeau { let?, p+ } patrick@38: patrick@38: patrick@38: # ============================================================================= patrick@38: # Elements corps de l'ouvrage patrick@38: # ============================================================================= patrick@38: patrick@38: # ~~~~~~ corps patrick@38: corps = element corps { corps.content } patrick@38: patrick@38: corps.content = patrick@38: (vol+ patrick@38: | part+ patrick@38: | section+ patrick@38: | chap+ patrick@38: | dev) patrick@38: patrick@38: # ~~~~~~ vol patrick@38: vol = element vol { vol.attributes, vol.content } patrick@38: patrick@38: vol.attributes = patrick@38: attribute id { xsd:ID }? patrick@38: & attribute num { text }? patrick@38: patrick@38: vol.content = patrick@38: depart, patrick@38: (appcrit | pre)*, patrick@38: ((dev, part*) | part+), patrick@38: defnotes?, patrick@38: (appcrit | appen)* patrick@38: patrick@38: # ~~~~~~ part patrick@38: part = element part { part.attributes, part.content } patrick@38: patrick@38: part.attributes = patrick@38: attribute id { xsd:ID }? patrick@38: & attribute num { text }? patrick@38: patrick@38: part.content = patrick@38: depart, patrick@38: (appcrit | pre)*, patrick@38: ((dev, (section | chap)*) patrick@38: | (section | chap)+), patrick@38: defnotes?, patrick@38: (appcrit | appen)* patrick@38: patrick@38: # ~~~~~~ section patrick@38: section = element section { section.attributes, section.content } patrick@38: patrick@38: section.attributes = patrick@38: attribute id { xsd:ID }? patrick@38: & attribute num { text }? patrick@38: patrick@38: section.content = patrick@38: depart, patrick@38: (appcrit | pre)*, patrick@38: ((dev, chap*) | chap+), patrick@38: defnotes?, patrick@38: (appcrit | appen)* patrick@38: patrick@38: # ~~~~~~ chap patrick@38: chap = element chap { chap.attributes, chap.content } patrick@38: patrick@38: chap.attributes = patrick@38: attribute id { xsd:ID }? patrick@38: & attribute num { text }? patrick@38: patrick@38: chap.content = patrick@38: depart, patrick@38: (appcrit | pre)*, patrick@38: ((chapeau?, dev, schap*) | schap+), patrick@38: source?, patrick@38: defnotes?, patrick@38: (appcrit | appen)* patrick@38: patrick@38: # ~~~~~~ schap patrick@38: schap = element schap { schap.attributes, schap.content } patrick@38: patrick@38: schap.attributes = patrick@38: attribute id { xsd:ID }? patrick@38: & attribute num { text }? patrick@38: patrick@38: schap.content = patrick@38: depart, patrick@38: (appcrit | pre)*, patrick@38: chapeau?, patrick@38: dev, patrick@38: defnotes?, patrick@38: (appcrit | appen)* patrick@38: patrick@38: patrick@38: # ============================================================================= patrick@38: # Elements Developpement patrick@38: # ============================================================================= patrick@38: patrick@38: # ~~~~~~ dev patrick@38: dev = element dev { dev.content } patrick@38: patrick@38: dev.content = patrick@38: (((let?, (p | pbib)) patrick@38: | bl patrick@38: | sep patrick@38: | dialogue patrick@38: | theatre patrick@38: | \list patrick@38: | stroplg patrick@38: | cita patrick@38: | infratexte patrick@38: | lettre patrick@38: | fig patrick@38: | tableau patrick@38: | enc patrick@38: | sign) patrick@38: | (niv1 | niv2 | niv3 | niv4 | niv5))+, patrick@38: fin?, patrick@38: source? patrick@38: patrick@38: patrick@38: # ============================================================================= patrick@38: # Niveau d'intertitre et de Texte patrick@38: # ============================================================================= patrick@38: patrick@38: # ~~~~~~ niv1 patrick@38: niv1 = element niv1 { niv1.content } patrick@38: patrick@38: niv1.content = patrick@38: (n?, patrick@38: int?, patrick@38: sint?, patrick@38: exer*, patrick@38: (((let?, p) patrick@38: | pbib patrick@38: | bl patrick@38: | sep patrick@38: | \list patrick@38: | stroplg patrick@38: | cita patrick@38: | infratexte patrick@38: | lettre patrick@38: | fig patrick@38: | tableau patrick@38: | enc)+ patrick@38: | (niv2 | niv3 | niv4 | niv5)*)+), patrick@38: fin? patrick@38: patrick@38: # ~~~~~~ niv2 patrick@38: niv2 = element niv2 { niv2.content } patrick@38: patrick@38: niv2.content = patrick@38: (n?, patrick@38: int?, patrick@38: sint?, patrick@38: exer*, patrick@38: (((let?, p) patrick@38: | pbib patrick@38: | bl patrick@38: | sep patrick@38: | \list patrick@38: | stroplg patrick@38: | cita patrick@38: | infratexte patrick@38: | lettre patrick@38: | fig patrick@38: | tableau patrick@38: | enc)+ patrick@38: | (niv3 | niv4 | niv5)*)+), patrick@38: fin? patrick@38: patrick@38: # ~~~~~~ niv3 patrick@38: niv3 = element niv3 { niv3.content } patrick@38: patrick@38: niv3.content = patrick@38: (n?, patrick@38: int?, patrick@38: sint?, patrick@38: exer*, patrick@38: (((let?, p) patrick@38: | pbib patrick@38: | bl patrick@38: | sep patrick@38: | \list patrick@38: | stroplg patrick@38: | cita patrick@38: | infratexte patrick@38: | lettre patrick@38: | fig patrick@38: | tableau patrick@38: | enc)+ patrick@38: | (niv4 | niv5)*)+), patrick@38: fin? patrick@38: patrick@38: # ~~~~~~ niv4 patrick@38: niv4 = element niv4 { niv4.content } patrick@38: patrick@38: niv4.content = patrick@38: (n?, patrick@38: int?, patrick@38: sint?, patrick@38: exer*, patrick@38: (((let?, p) patrick@38: | pbib patrick@38: | bl patrick@38: | sep patrick@38: | \list patrick@38: | stroplg patrick@38: | cita patrick@38: | infratexte patrick@38: | lettre patrick@38: | fig patrick@38: | tableau patrick@38: | enc)+ patrick@38: | niv5)*), patrick@38: fin? patrick@38: patrick@38: # ~~~~~~ niv5 patrick@38: niv5 = element niv5 { niv5.content } patrick@38: patrick@38: niv5.content = patrick@38: (n?, patrick@38: int?, patrick@38: sint?, patrick@38: exer*, patrick@38: ((let?, p) patrick@38: | pbib patrick@38: | bl patrick@38: | sep patrick@38: | \list patrick@38: | stroplg patrick@38: | cita patrick@38: | infratexte patrick@38: | lettre patrick@38: | fig patrick@38: | tableau patrick@38: | enc)+), patrick@38: fin? patrick@38: patrick@38: # ~~~~~~ Numero de partie, Chapitre, sous-chapitre ou section patrick@38: n = element n { (typo | appel | br | renv | renvlnk)* } patrick@38: patrick@38: # ~~~~~~ Intertitre patrick@38: int = element int {(typo | br | appel | renv | renvlnk)* } patrick@38: patrick@38: # ~~~~~~ Sous intertitre patrick@38: sint = element sint { (typo | br | appel | renv | renvlnk)* } patrick@38: patrick@38: patrick@38: # ============================================================================= patrick@38: patrick@38: # Texte avec Exposant, Indice petites caps, ou souligne patrick@36: texte = text | sup | inf | pc | sl patrick@38: patrick@38: # Texte avec mise en forme (ital, gras, romain) patrick@36: typo = texte | i | b | r patrick@38: patrick@36: appel = patrick@36: indx patrick@36: | indx2 patrick@36: | indx3 patrick@36: | apnb patrick@36: | apnb2 patrick@36: | apnb3 patrick@36: | apnf patrick@36: | apnm patrick@36: | apfi patrick@36: | apta patrick@36: # Entite d'appels divers patrick@36: depart = patrick@36: apfi?, patrick@36: surtit?, patrick@36: n?, patrick@36: (((tit, apfi?), patrick@36: ((stit, apfi?), (sstit, apfi?)?)?) patrick@36: | ((stit, apfi?), (sstit, apfi?)?))?, patrick@36: (accro | trad | auteur | illustrateur | exer)* patrick@36: # Entite Numero, titre et sous-titre patrick@36: patrick@36: # Nom du photocompositeur patrick@36: # lieu de la saisie patrick@36: # Type coll patrick@36: patrick@36: # ****** Elements typo ****** patrick@36: b = element b { attlist.b, (texte | i | appel)* } patrick@36: attlist.b &= empty patrick@36: # Element Gras patrick@36: i = element i { attlist.i, (texte | b | appel)* } patrick@36: attlist.i &= empty patrick@36: # Element ital patrick@36: r = element r { attlist.r, (texte | appel)* } patrick@36: attlist.r &= empty patrick@36: # Element Romain patrick@36: sup = element sup { attlist.sup, (text | appel | i | b | r)* } patrick@36: attlist.sup &= empty patrick@36: # Element Exposant patrick@36: inf = element inf { attlist.inf, (text | appel | i | b | r)* } patrick@36: attlist.inf &= empty patrick@36: # Element Indice patrick@36: pc = element pc { attlist.pc, (text | appel | i | b | r)* } patrick@36: attlist.pc &= empty patrick@36: # Element petites capitales patrick@36: sl = element sl { attlist.sl, (text | appel | i | b | r)* } patrick@36: attlist.sl &= empty patrick@36: # Element souligne patrick@36: br = element br { attlist.br, empty } patrick@36: attlist.br &= empty patrick@36: # Retour a la ligne dans un element titre patrick@36: patrick@36: patrick@36: # ****** Elements paragraphe ****** patrick@36: p = element p { attlist.p, (typo | appel | renv | renvlnk)* } patrick@36: attlist.p &= patrick@36: attribute align { patrick@36: "centre" | "justif" | "gauche" | "droite" | "ssalinea" patrick@36: }? patrick@36: # Element paragraphe patrick@36: patrick@38: patrick@38: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@38: patrick@38: # Mai 2009 : ajout type bio, personnages, sommaire, tdm patrick@38: patrick@38: # Mai 2009 : ajout appels de figure optionnels en dÈbut et en fin de prÈliminaire patrick@38: patrick@38: # Mai 2009 : ajout surtitre optionnel patrick@38: patrick@38: # Mai 2009 : ajout sous-soustitre optionnel patrick@38: patrick@38: # mai 2009 : ajout ÈlÈment chapeau ****** patrick@38: patrick@38: # mai 2009 : ajout appels de figure optionnels au niveau de titre et sous titre ****** patrick@38: patrick@38: # mai 2009 : ajout source optionnel ****** patrick@38: patrick@38: # dÈcembre 2009 : ajout collec optionnel en fin de pre, pour les titre du meme auteur d un pre bio****** patrick@38: sign = element sign { attlist.sign, (typo | appel | br)* } patrick@38: attlist.sign &= empty patrick@38: # Signature de la preface ou de l'intro, etc...** patrick@38: patrick@36: # ****** Elements paragraphe bibliographique ****** patrick@36: pbib = patrick@36: element pbib { patrick@36: attlist.pbib, patrick@36: (typo patrick@36: | appel patrick@36: | autbib patrick@36: | titbib patrick@36: | editbib patrick@36: | datebib patrick@36: | renv patrick@36: | renvlnk)* patrick@36: } patrick@36: attlist.pbib &= empty patrick@36: # Element paragraphe bibliographique (auteur, titre, editeur, date) patrick@36: autbib = element autbib { attlist.autbib, (typo | appel)* } patrick@36: attlist.autbib &= empty patrick@36: # auteur patrick@36: titbib = element titbib { attlist.titbib, (typo | appel)* } patrick@36: attlist.titbib &= empty patrick@36: # titre ouvrage patrick@36: editbib = element editbib { attlist.editbib, (typo | appel)* } patrick@36: attlist.editbib &= empty patrick@36: # editeur patrick@36: datebib = element datebib { attlist.datebib, (typo | appel)* } patrick@36: attlist.datebib &= empty patrick@36: # date de parution patrick@36: patrick@36: # ****** Elements renvois pour reference croisee ****** patrick@36: renv = element renv { attlist.renv, typo* } patrick@36: # Renvoi point d'appel patrick@36: attlist.renv &= attribute id { xsd:IDREF } patrick@36: # Lien appel de reference croisee patrick@36: renvlnk = element renvlnk { attlist.renvlnk, typo* } patrick@36: # Renvoi point d'arrivee patrick@36: attlist.renvlnk &= attribute id { xsd:ID } patrick@36: # Lien de reference croisee patrick@36: patrick@36: # ****** Elements d'appels de figures et notes ****** patrick@36: apnb = element apnb { attlist.apnb, empty } patrick@36: attlist.apnb &= attribute id { xsd:IDREF } patrick@36: # Lien appel de note de bas de page niv 1 patrick@36: apnb2 = element apnb2 { attlist.apnb2, empty } patrick@36: attlist.apnb2 &= attribute id { xsd:IDREF } patrick@36: # Lien appel de note de bas de page niv 2 patrick@36: apnb3 = element apnb3 { attlist.apnb3, empty } patrick@36: attlist.apnb3 &= attribute id { xsd:IDREF } patrick@36: # Lien appel de note de bas de page niv 3 patrick@36: apnf = element apnf { attlist.apnf, empty } patrick@36: attlist.apnf &= attribute id { xsd:IDREF } patrick@36: # Lien appel de note de fin d'ouvrage patrick@36: apnm = element apnm { attlist.apnm, empty } patrick@36: attlist.apnm &= attribute id { xsd:IDREF } patrick@36: # Lien appel de note de marge patrick@36: apfi = element apfi { attlist.apfi, empty } patrick@36: attlist.apfi &= patrick@36: attribute id { xsd:IDREF }, patrick@36: attribute place { patrick@36: "haut" | "bas" | "intexte" | "pagesui" | "pagepre" patrick@36: }?, patrick@36: attribute align { patrick@36: "centre" | "gauche" | "droite" | "retrait" | "inline" patrick@36: }? patrick@36: # Lien appel de figure patrick@36: patrick@36: # Emplacement de l'illustration : haut de page, bas de page, ‡ la hauteur du texte, page suivante, page precedente patrick@36: patrick@36: # Mai 2009 : ajout align : centre | gauche | droite | retrait | inline=dans le texte patrick@36: apta = element apta { attlist.apta, empty } patrick@36: attlist.apta &= attribute id { xsd:IDREF } patrick@36: # Lien appel de tableaux patrick@36: patrick@36: # ****** Elements d'indexation ****** patrick@36: patrick@36: # Rem : Le separateur de niveau d'index est le ; patrick@36: indx = element indx { attlist.indx, (typo | appel)* } patrick@36: # Indexation patrick@36: attlist.indx &= attribute LIBEL { text }? patrick@36: # Libelle dans l'index patrick@36: indx2 = element indx2 { attlist.indx2, (typo | appel)* } patrick@36: # Indexation patrick@36: attlist.indx2 &= attribute LIBEL { text }? patrick@36: # Libelle dans l'index patrick@36: indx3 = element indx3 { attlist.indx3, (typo | appel)* } patrick@36: # Indexation patrick@36: attlist.indx3 &= attribute LIBEL { text }? patrick@36: # Libelle dans l'index patrick@36: patrick@38: # ****** Elements Theatre ****** patrick@38: theatre = element theatre { attlist.theatre, distrib*, acte+ } patrick@38: attlist.theatre &= empty patrick@38: # Module d'enrichissement pour ouvrage de theatre... patrick@38: distrib = element distrib { attlist.distrib, tit, role+, expos* } patrick@38: attlist.distrib &= empty patrick@38: # liste des personnage de la piece... patrick@38: role = element role { attlist.role, (pers | acteur)* } patrick@38: attlist.role &= empty patrick@38: # role du personnage patrick@38: expos = patrick@38: element expos { attlist.expos, (typo | appel | renv | renvlnk)* } patrick@38: attlist.expos &= empty patrick@38: # exposition (ou se deroule la piece) patrick@38: acte = patrick@38: element acte { patrick@38: attlist.acte, n?, tit?, stit?, (pers | didasc)*, scene+ patrick@36: } patrick@38: attlist.acte &= empty patrick@38: # acte patrick@38: pers = patrick@38: element pers { patrick@38: attlist.pers, (typo | appel | renv | renvlnk | didasc)* patrick@38: } patrick@38: attlist.pers &= empty patrick@38: # personnage(s) patrick@38: acteur = patrick@38: element acteur { patrick@38: attlist.acteur, (typo | appel | renv | renvlnk | didasc)* patrick@38: } patrick@38: attlist.acteur &= empty patrick@38: # acteur(s) patrick@38: didasc = patrick@38: element didasc { attlist.didasc, (typo | appel | renv | renvlnk)* } patrick@38: attlist.didasc &= empty patrick@38: # didascalie patrick@38: scene = patrick@38: element scene { patrick@38: attlist.scene, n?, tit?, stit?, (pers | didasc)*, replique+ patrick@38: } patrick@38: attlist.scene &= empty patrick@38: # scene patrick@38: replique = patrick@38: element replique { patrick@38: attlist.replique, patrick@38: (pers+, (p | vers | didasc)*)+ patrick@38: } patrick@38: attlist.replique &= empty patrick@38: # replique patrick@38: vers = element vers { attlist.vers, (typo | appel | renv | renvlnk)* } patrick@38: attlist.vers &= patrick@38: attribute align { patrick@38: "centre" | "justif" | "gauche" | "droite" | "stichomythie" patrick@38: }?, patrick@38: attribute num { text }? patrick@38: # Attribut du vers (stichomytie pour les vers qui se suivent patrick@36: patrick@38: # vers patrick@38: bl = element bl { attlist.bl, empty } patrick@38: # Ligne de blanc patrick@38: attlist.bl &= attribute v { text } patrick@38: # Valeur de blanc patrick@38: sep = element sep { attlist.sep, empty } patrick@38: # Separateur patrick@38: attlist.sep &= patrick@36: attribute type { patrick@38: "filet" | "frise" | "etoiles" | "etoile" | "logo" | "autre" patrick@38: }, patrick@38: attribute src { text }? patrick@38: # type de separateur patrick@36: patrick@38: # Mai 2009 : ajout scr : nom de l'image pour logo, cul de lampe... patrick@36: patrick@36: # ****** Elements postliminaire de l'ouvrage ****** patrick@36: appen = patrick@36: element appen { patrick@36: attlist.appen, patrick@36: (apfi?, patrick@36: surtit?, patrick@36: (((tit, apfi?), patrick@36: ((stit, apfi?), (sstit, apfi?)?)?) patrick@36: | ((stit, apfi?), (sstit, apfi?)?))?, patrick@36: exer*, patrick@36: ((((chapeau?, dev) | notefin), patrick@36: sect*) patrick@36: | sect+), patrick@36: (source | sign)*, patrick@36: defnotes?), patrick@36: collec*, patrick@36: apfi? patrick@36: } patrick@36: attlist.appen &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }?, patrick@36: attribute type { patrick@36: "postface" patrick@36: | "conclusion" patrick@36: | "remer" patrick@36: | "biblio" patrick@36: | "bio" patrick@36: | "chrono" patrick@36: | "remarque" patrick@36: | "annexe" patrick@36: | "notes" patrick@36: | "glossaire" patrick@36: | "lexique" patrick@36: | "historique" patrick@36: | "genealogie" patrick@36: | "epilogue" patrick@36: | "tdm" patrick@36: | "horstexte" patrick@36: | "personnages" patrick@36: | "autre" patrick@36: }? patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: patrick@36: # Appendice : conclusion, postface, annexes etc... patrick@36: patrick@36: # mai 2009 : ajout types glossaire, lexique, historique, genealogie, Èpilogue, tdm, horstexte ****** patrick@36: patrick@36: # mai 2009 : ajout appels de figure optionnels en dÈbut et en fin appendice ****** patrick@36: patrick@36: # mai 2009 : ajout exergue optionnel en dÈbut d' appendice ****** patrick@36: patrick@36: # mai 2009 : ajout surtitre optionnel ****** patrick@36: patrick@36: # Mai 2009 : ajout sous-soustitre optionnel patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment chapeau****** patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment source****** patrick@36: patrick@36: # mai 2009 : ajout appels de figure optionnels au niveau de titre et sous titre ****** patrick@36: patrick@36: # dÈcembre 2009 : ajout collec optionnel en fin de pre, pour les titre du meme auteur d un pre bio****** patrick@36: patrick@36: # dÈcembre 2009 : ajout valeur attribut personnages ****** patrick@36: patrick@36: # ****** Appareil critique ****** patrick@36: appcrit = patrick@36: element appcrit { patrick@36: attlist.appcrit, patrick@36: surtit?, patrick@36: (((tit, apfi?), patrick@36: ((stit, apfi?), (sstit, apfi?)?)?) patrick@36: | ((stit, apfi?), (sstit, apfi?)?))?, patrick@36: ((((chapeau?, dev) | notefin), patrick@36: sect*) patrick@36: | sect+), patrick@36: (source | sign)*, patrick@36: collec*, patrick@36: defnotes? patrick@36: } patrick@36: attlist.appcrit &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }?, patrick@36: attribute type { patrick@36: "intro" patrick@36: | "prologue" patrick@36: | "pref" patrick@36: | "remer" patrick@36: | "avpro" patrick@36: | "biblio" patrick@36: | "remarque" patrick@36: | "note" patrick@36: | "chrono" patrick@36: | "presentation" patrick@36: | "personnages" patrick@36: | "sommaire" patrick@36: | "tdm" patrick@36: | "postface" patrick@36: | "conclusion" patrick@36: | "bio" patrick@36: | "annexe" patrick@36: | "glossaire" patrick@36: | "lexique" patrick@36: | "historique" patrick@36: | "genealogie" patrick@36: | "epilogue" patrick@36: | "horstexte" patrick@36: | "autre" patrick@36: }? patrick@36: # mai 2009 : Definition des types d' appareils critiques : tous ceux de pre et d'appen patrick@36: patrick@36: # mai 2009 : ajout surtitre optionnel ****** patrick@36: patrick@36: # Mai 2009 : ajout sous-soustitre optionnel patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment chapeau****** patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment source****** patrick@36: patrick@36: # mai 2009 : ajout appels de figure optionnels au niveau de titre et sous titre ****** patrick@36: patrick@36: # dÈcembre 2009 : ajout collec optionnel en fin de pre, pour les titre du meme auteur d un pre bio****** patrick@36: patrick@36: # ****** Elements Section ****** patrick@36: sect = patrick@36: element sect { patrick@36: attlist.sect, patrick@36: depart, patrick@36: ((chapeau?, dev) | notefin), patrick@36: sign*, patrick@36: defnotes? patrick@36: } patrick@36: attlist.sect &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }?, patrick@36: attribute type { patrick@36: "postface" patrick@36: | "conclusion" patrick@36: | "remer" patrick@36: | "biblio" patrick@36: | "bio" patrick@36: | "chrono" patrick@36: | "remarque" patrick@36: | "annexe" patrick@36: | "notes" patrick@36: | "autre" patrick@36: }? patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: patrick@36: # Section patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment chapeau****** patrick@36: patrick@36: patrick@36: # ****** Element liste ****** patrick@36: \list = element list { attlist.list, item+ } patrick@36: attlist.list &= patrick@36: attribute type { patrick@36: "puce" patrick@36: | "tiret" patrick@36: | "num" patrick@36: | "alpha" patrick@36: | "none" patrick@36: | "imagelist1" patrick@36: | "imagelist2" patrick@36: | "imagelist3" patrick@36: | "autre" patrick@36: }? patrick@36: # Liste, Enumeration patrick@36: patrick@36: # mai 2009 : ajout valeur type imagelist1 imagelist2 imagelist3 pour utiliser une image comme symbole optionnel ****** patrick@36: patrick@36: # Item liste patrick@36: item = element item { attlist.item, (n?, p+), \list* } patrick@36: attlist.item &= empty patrick@36: # ****** Strophe et vers dans la LG... ****** patrick@36: stroplg = element stroplg { attlist.stroplg, tit?, (verslg | bl)+ } patrick@36: # Strophe patrick@36: attlist.stroplg &= attribute type { text }? patrick@36: # Type de vers : centre, retrait, ligne patrick@36: patrick@36: # Vers patrick@36: verslg = element verslg { attlist.verslg, (typo | appel)* } patrick@36: attlist.verslg &= patrick@36: attribute type { text }?, patrick@36: attribute num { text }? patrick@36: # Dialogue patrick@36: dialogue = patrick@36: element dialogue { patrick@36: attlist.dialogue, patrick@36: (interloc, patrick@36: (p | stroplg | bl | sep | \list | cita | fig | tableau | enc)+)+, patrick@36: fin? patrick@36: } patrick@36: attlist.dialogue &= empty patrick@36: interloc = patrick@36: element interloc { patrick@36: attlist.interloc, (typo | appel | renv | renvlnk)* patrick@36: } patrick@36: attlist.interloc &= empty patrick@36: cita = patrick@36: element cita { patrick@36: attlist.cita, patrick@36: (date | lieu | entete)*, patrick@36: (p | stroplg | bl)+, patrick@36: (source | auteur | polit)*, patrick@36: fin? patrick@36: } patrick@36: attlist.cita &= attribute type { "citation" | "lettre" }? patrick@36: lettre = patrick@36: element lettre { patrick@36: attlist.lettre, patrick@36: (date | lieu | entete)*, patrick@36: (p | stroplg | bl)+, patrick@36: (source | auteur | polit)* patrick@36: } patrick@36: attlist.lettre &= empty patrick@36: infratexte = patrick@36: element infratexte { patrick@36: attlist.infratexte, tit?, (p | cita | stroplg | bl | sep)+, fin? patrick@36: } patrick@36: attlist.infratexte &= empty patrick@36: fin = element fin { attlist.fin, (typo | appel | renv | renvlnk | br)* } patrick@36: attlist.fin &= empty patrick@36: # matÈrialise un texte de fin de niveau patrick@36: date = patrick@36: element date { attlist.date, (typo | appel | renv | renvlnk | br)* } patrick@36: attlist.date &= empty patrick@36: # date pour une correspondance patrick@36: lieu = patrick@36: element lieu { attlist.lieu, (typo | appel | renv | renvlnk | br)* } patrick@36: attlist.lieu &= empty patrick@36: # lieu pour une correspondance patrick@36: entete = patrick@36: element entete { patrick@36: attlist.entete, (typo | appel | renv | renvlnk | br)* patrick@36: } patrick@36: attlist.entete &= empty patrick@36: # entete pour une correspondance patrick@36: polit = patrick@36: element polit { attlist.polit, (typo | appel | renv | renvlnk | br)* } patrick@36: attlist.polit &= empty patrick@36: # politesse pour une correspondance patrick@36: patrick@36: # ****** Elements Lettrine ****** patrick@36: let = element let { attlist.let, typo* } patrick@36: attlist.let &= empty patrick@36: # Lettrine patrick@36: patrick@36: # ****** Encadre ****** patrick@36: enc = patrick@36: element enc { attlist.enc, surtit?, tit?, stit?, exer*, dev, sign* } patrick@36: attlist.enc &= empty patrick@36: # Encadre patrick@36: patrick@36: # mai 2009 : ajout surtitre optionnel ****** patrick@36: patrick@36: # ****** Elements definitions de notes ****** patrick@36: defnotes = patrick@36: element defnotes { patrick@36: attlist.defnotes, (ntb | ntb2 | ntb3 | ntf | ntm)+ patrick@36: } patrick@36: attlist.defnotes &= empty patrick@36: # Definition des notes de la partie, du chapitre etc... patrick@36: ntb = element ntb { attlist.ntb, (p | pbib | tableau | fig)+ } patrick@36: # Texte de la note patrick@36: attlist.ntb &= attribute id { xsd:ID } patrick@36: # Lien appel de note patrick@36: ntb2 = element ntb2 { attlist.ntb2, (p | pbib | tableau | fig)+ } patrick@36: # Texte de la note niveau 2 patrick@36: attlist.ntb2 &= attribute id { xsd:ID } patrick@36: # Lien appel de note niveau 2 patrick@36: ntb3 = element ntb3 { attlist.ntb3, (p | pbib | tableau | fig)+ } patrick@36: # Texte de la note niveau 3 patrick@36: attlist.ntb3 &= attribute id { xsd:ID } patrick@36: # Lien appel de note niveau 3 patrick@36: ntf = element ntf { attlist.ntf, (p | pbib | tableau | fig)+ } patrick@36: # Texte de la note patrick@36: attlist.ntf &= attribute id { xsd:ID } patrick@36: # Lien appel de note patrick@36: ntm = element ntm { attlist.ntm, (p | pbib | tableau | fig)+ } patrick@36: # Texte de la note patrick@36: attlist.ntm &= attribute id { xsd:ID } patrick@36: # Lien appel de note patrick@36: patrick@36: # ****** Elements note de fin ****** patrick@36: notefin = patrick@36: element notefin { patrick@36: attlist.notefin, patrick@36: ((ntf | p)* | (nfniv1 | nfniv2 | nfniv3 | nfniv4 | nfniv5)*)+ patrick@36: } patrick@36: attlist.notefin &= empty patrick@36: # Developpement des chapitres, parties ou sections... patrick@36: patrick@36: # ****** Niveau d'intertitre et de Texte ****** patrick@36: nfniv1 = patrick@36: element nfniv1 { patrick@36: attlist.nfniv1, patrick@36: n?, patrick@36: int?, patrick@36: sint?, patrick@36: ((ntf | p)* | (nfniv2 | nfniv3 | nfniv4 | nfniv5)*)+ patrick@36: } patrick@36: attlist.nfniv1 &= empty patrick@36: # Niveau 1 patrick@36: nfniv2 = patrick@36: element nfniv2 { patrick@36: attlist.nfniv2, patrick@36: n?, patrick@36: int?, patrick@36: sint?, patrick@36: ((ntf | p)* | (nfniv3 | nfniv4 | nfniv5)*)+ patrick@36: } patrick@36: attlist.nfniv2 &= empty patrick@36: # Niveau 2 patrick@36: nfniv3 = patrick@36: element nfniv3 { patrick@36: attlist.nfniv3, patrick@36: n?, patrick@36: int?, patrick@36: sint?, patrick@36: ((ntf | p)* | (nfniv4 | nfniv5)*)+ patrick@36: } patrick@36: attlist.nfniv3 &= empty patrick@36: # Niveau 3 patrick@36: nfniv4 = patrick@36: element nfniv4 { patrick@36: attlist.nfniv4, patrick@36: n?, patrick@36: int?, patrick@36: sint?, patrick@36: ((ntf | p)* | nfniv5*)+ patrick@36: } patrick@36: attlist.nfniv4 &= empty patrick@36: # Niveau 4 patrick@36: nfniv5 = element nfniv5 { attlist.nfniv5, n?, int?, sint?, (ntf | p)+ } patrick@36: attlist.nfniv5 &= empty patrick@36: # Niveau 5 patrick@36: patrick@36: # ****** Elements definitions de figure ****** patrick@36: fig = element fig { attlist.fig, (tit | img | leg | source)+ } patrick@36: # contenu du bloc figure patrick@36: attlist.fig &= attribute id { xsd:ID }? patrick@36: # Lien appel de figure patrick@36: img = element img { attlist.img, empty } patrick@36: # Appel de la source de l'image patrick@36: attlist.img &= attribute src { text }? patrick@36: # Nom de l'image patrick@36: leg = element leg { attlist.leg, p+ } patrick@36: attlist.leg &= empty patrick@36: # Legende d'illustration patrick@36: patrick@36: # ****** Elements definitions de tableau ****** patrick@36: yesorno = string patrick@36: tableau = patrick@36: element tableau { patrick@36: attlist.tableau, patrick@36: (leg | source)*, patrick@36: (stab | (table, stab*)), patrick@36: (leg | source)* patrick@36: } patrick@36: # contenu du bloc tableau patrick@36: attlist.tableau &= attribute id { xsd:ID }? patrick@36: # Lien appel de tableau patrick@36: patrick@36: # dÈcembre 2009 : ajout possibilitÈ table et stab ****** patrick@36: stab = element stab { attlist.stab, empty } patrick@36: # Appel de la source du tableau (si tableau=image) patrick@36: attlist.stab &= attribute src { text }? patrick@36: # Nom du tableau patrick@36: patrick@36: # ****** Tableau en cals ****** patrick@36: table = element table { attlist.table, title?, tgroup+ } patrick@36: attlist.table &= patrick@36: attribute frame { patrick@36: "top" | "bottom" | "topbot" | "all" | "sides" | "none" patrick@36: }?, patrick@36: attribute colsep { yesorno }?, patrick@36: attribute rowsep { yesorno }? patrick@36: title = patrick@36: element title { attlist.title, (typo | appel | br | renv | renvlnk)* } patrick@36: attlist.title &= empty patrick@36: tgroup = patrick@36: element tgroup { patrick@36: attlist.tgroup, colspec*, spanspec*, thead?, tfoot?, tbody patrick@36: } patrick@36: attlist.tgroup &= patrick@36: attribute cols { text }, patrick@36: attribute colsep { yesorno }?, patrick@36: attribute rowsep { yesorno }?, patrick@36: attribute align { "left" | "right" | "center" | "justify" | "char" }?, patrick@36: attribute char { text }?, patrick@36: attribute charoff { text }? patrick@36: colspec = element colspec { attlist.colspec, empty } patrick@36: attlist.colspec &= patrick@36: attribute colnum { text }?, patrick@36: attribute colname { text }?, patrick@36: attribute colwidth { text }?, patrick@36: attribute colsep { yesorno }?, patrick@36: attribute rowsep { yesorno }?, patrick@36: attribute align { "left" | "right" | "center" | "justify" | "char" }?, patrick@36: attribute char { text }?, patrick@36: attribute charoff { text }? patrick@36: spanspec = element spanspec { attlist.spanspec, empty } patrick@36: attlist.spanspec &= patrick@36: attribute namest { text }, patrick@36: attribute nameend { text }, patrick@36: attribute spanname { text }, patrick@36: attribute colsep { yesorno }?, patrick@36: attribute rowsep { yesorno }?, patrick@36: attribute align { "left" | "right" | "center" | "justify" | "char" }?, patrick@36: attribute char { text }?, patrick@36: attribute charoff { text }? patrick@36: thead = element thead { attlist.thead, colspec*, row+ } patrick@36: attlist.thead &= attribute valign { "top" | "middle" | "bottom" }? patrick@36: tfoot = element tfoot { attlist.tfoot, colspec*, row+ } patrick@36: attlist.tfoot &= attribute valign { "top" | "middle" | "bottom" }? patrick@36: tbody = element tbody { attlist.tbody, row+ } patrick@36: attlist.tbody &= attribute valign { "top" | "middle" | "bottom" }? patrick@36: row = element row { attlist.row, entry* } patrick@36: attlist.row &= patrick@36: attribute rowsep { yesorno }?, patrick@36: attribute valign { "top" | "middle" | "bottom" }? patrick@36: entry = patrick@36: element entry { patrick@36: attlist.entry, (typo | appel | renv | renvlnk | br | p | \list)* patrick@36: } patrick@36: attlist.entry &= patrick@36: attribute colname { text }?, patrick@36: attribute namest { text }?, patrick@36: attribute nameend { text }?, patrick@36: attribute spanname { text }?, patrick@36: attribute morerows { text }?, patrick@36: attribute colsep { yesorno }?, patrick@36: attribute rowsep { yesorno }?, patrick@36: attribute align { "left" | "right" | "center" | "justify" | "char" }?, patrick@36: attribute char { text }?, patrick@36: attribute charoff { text }?, patrick@36: attribute rotate { yesorno }?, patrick@36: attribute valign { "top" | "middle" | "bottom" }?