patrick@36: # ********************************************************************** patrick@36: patrick@36: # ****** DTD LITTERATURE GENERALE XML NC V3.2 ****** patrick@36: patrick@36: # ****** (c) Nord Compo (juin 1999) ****** patrick@36: patrick@36: # ****** realisee par : GD ****** patrick@36: patrick@36: # ****** mise a jour par : GD (juillet 2000) ****** patrick@36: patrick@36: # ****** transformation en XML par : JMD (Aout 2000) ****** patrick@36: patrick@36: # ****** mise a jour XML par : GD (janvier 2001) ****** patrick@36: patrick@36: # ****** mise a jour de la version 2.1 ****** patrick@36: patrick@36: # ****** mise ‡ jour : GD (juin 2007) ****** patrick@36: patrick@36: # ****** mise a jour : GD septembre 2007 ****** patrick@36: patrick@36: # ****** mise a jour : GD octobre 2007 ****** patrick@36: patrick@36: # ****** mise a jour : GD novembre 2007 ****** patrick@36: patrick@36: # ****** mise a jour : GD janvier 2008 ****** patrick@36: patrick@36: # ****** mise a jour : PT mai 2009 ****** patrick@36: patrick@36: # ****** mise a jour : PT octobre 2009 ****** patrick@36: patrick@36: # ********************************************************************** patrick@36: patrick@36: # ****** Entites externes ****** patrick@36: patrick@36: # ****** Entites internes ****** patrick@36: patrick@36: texte = text | sup | inf | pc | sl patrick@36: # Texte avec Exposant, Indice petites caps, ou souligne patrick@36: typo = texte | i | b | r patrick@36: # Texte avec mise en forme (ital, gras, romain) 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: # Mai 2009 : ajout appels de figure optionnels patrick@36: patrick@36: # Mai 2009 : ajout surtitre, illustrateur, sstit patrick@36: patrick@36: # ****** Elements Livre ****** patrick@36: livre = patrick@36: element livre { patrick@36: attlist.livre, patrick@36: ident, patrick@36: (appcrit | pre)*, patrick@36: corps, patrick@36: (appcrit | appen)*, patrick@36: collec* patrick@36: } patrick@36: # Element Livre patrick@36: patrick@36: # Octobre 2009 : ÈlÈment collec rÈpÈtable patrick@36: attlist.livre &= patrick@36: attribute compo { text }?, patrick@36: attribute saisie { text }?, patrick@36: attribute type { text }? 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: # ****** Elements Entete (pages de titre) ****** patrick@36: ident = patrick@36: element ident { patrick@36: attlist.ident, patrick@36: (ftit patrick@36: | fstit patrick@36: | info patrick@36: | accro patrick@36: | collec patrick@36: | auteur patrick@36: | illustrateur patrick@36: | tit patrick@36: | stit patrick@36: | edit patrick@36: | copy patrick@36: | trad patrick@36: | ean patrick@36: | coned patrick@36: | type patrick@36: | ref patrick@36: | isbn patrick@36: | issn patrick@36: | modulus patrick@36: | fig patrick@36: | tableau patrick@36: | dedi patrick@36: | exer)+ patrick@36: } patrick@36: attlist.ident &= empty patrick@36: # Element Entete ou pages de titre patrick@36: patrick@36: # Mai 2009 : ajout illustrateur patrick@36: ftit = patrick@36: element ftit { attlist.ftit, (typo | br | appel | renv | renvlnk)* } patrick@36: attlist.ftit &= empty patrick@36: # FAUX TITRE ouvrage patrick@36: accro = patrick@36: element accro { attlist.accro, (typo | br | appel | renv | renvlnk)* } patrick@36: attlist.accro &= empty patrick@36: # Accroche ouvrage patrick@36: fstit = patrick@36: element fstit { attlist.fstit, (typo | br | appel | renv | renvlnk)* } patrick@36: attlist.fstit &= empty patrick@36: # SOUS TITRE ouvrage patrick@36: auteur = element auteur { attlist.auteur, (typo | appel)* } patrick@36: attlist.auteur &= empty patrick@36: # Auteur(s) de l'ouvrage ou de citation ou exergue patrick@36: illustrateur = patrick@36: element illustrateur { attlist.illustrateur, (typo | appel)* } patrick@36: attlist.illustrateur &= empty patrick@36: # Mai 2009 : ajout element illustrateur patrick@36: surtit = patrick@36: element surtit { patrick@36: attlist.surtit, (typo | appel | br | renv | renvlnk)* patrick@36: } patrick@36: attlist.surtit &= empty patrick@36: # Mai 2009 : ajout element surtitre patrick@36: tit = element tit { attlist.tit, (typo | appel | br | renv | renvlnk)* } patrick@36: attlist.tit &= empty patrick@36: # Titre de l'ouvrage patrick@36: stit = patrick@36: element stit { attlist.stit, (typo | appel | br | renv | renvlnk)* } patrick@36: attlist.stit &= empty patrick@36: # Sous-titre de l'ouvrage patrick@36: sstit = patrick@36: element sstit { attlist.sstit, (typo | appel | br | renv | renvlnk)* } patrick@36: attlist.sstit &= empty patrick@36: # Mai 2009 : ajout Sous-sous-titre patrick@36: type = element type { attlist.type, (typo | br | appel)* } patrick@36: attlist.type &= empty patrick@36: # Type d'ouvrage dans page de titre patrick@36: info = element info { attlist.info, (typo | br | appel)* } patrick@36: attlist.info &= empty patrick@36: # Texte page de titre patrick@36: collec = patrick@36: element collec { patrick@36: attlist.collec, patrick@36: (tit | stit | cint | cint2 | cint3 | auteur | p | pbib | fig)* patrick@36: } patrick@36: attlist.collec &= empty patrick@36: # page de collection patrick@36: patrick@36: # Octobre 2009 : ajout ÈlÈment fig patrick@36: cint = element cint { attlist.cint, (typo | br | appel)* } patrick@36: attlist.cint &= empty patrick@36: # intertitre dans page de collection patrick@36: cint2 = element cint2 { attlist.cint2, (typo | br | appel)* } patrick@36: attlist.cint2 &= empty patrick@36: # intertitre dans page de collection patrick@36: cint3 = element cint3 { attlist.cint3, (typo | br | appel)* } patrick@36: attlist.cint3 &= empty patrick@36: # intertitre dans page de collection patrick@36: trad = element trad { attlist.trad, (typo | br | appel)* } patrick@36: attlist.trad &= empty patrick@36: # traduction par patrick@36: edit = element edit { attlist.edit, (typo | appel)* } patrick@36: attlist.edit &= empty patrick@36: # Editeur(s) patrick@36: copy = element copy { attlist.copy, (typo | br | appel)* } patrick@36: attlist.copy &= empty patrick@36: # Copyright de l'ouvrage patrick@36: ref = element ref { attlist.ref, (typo | br | appel)* } patrick@36: attlist.ref &= empty patrick@36: # References de l'ouvrage patrick@36: isbn = element isbn { attlist.isbn, (typo | appel)* } patrick@36: attlist.isbn &= empty patrick@36: # isbn patrick@36: issn = element issn { attlist.issn, (typo | appel)* } patrick@36: attlist.issn &= empty patrick@36: # issn patrick@36: modulus = element modulus { attlist.modulus, (typo | appel)* } patrick@36: attlist.modulus &= empty patrick@36: # modulus patrick@36: ean = element ean { attlist.ean, text } patrick@36: attlist.ean &= empty patrick@36: # EAN 13 patrick@36: coned = element coned { attlist.coned, text } patrick@36: attlist.coned &= empty patrick@36: # Rang d'impression patrick@36: dedi = element dedi { attlist.dedi, (typo | br | appel)* } patrick@36: attlist.dedi &= empty patrick@36: # Dedicace patrick@36: exer = element exer { attlist.exer, p+, (source | auteur)* } patrick@36: attlist.exer &= empty patrick@36: # Exergue patrick@36: source = element source { attlist.source, (typo | appel | p | br)* } patrick@36: attlist.source &= empty patrick@36: # Source(s) citation, image, exergue 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@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@36: # ****** Elements corps de l'ouvrage ****** patrick@36: corps = patrick@36: element corps { patrick@36: attlist.corps, (vol+ | part+ | section+ | chap+ | dev) patrick@36: } patrick@36: attlist.corps &= empty patrick@36: # Corps de l'ouvrage patrick@36: patrick@36: # ****** Elements preliminaire de l'ouvrage ****** patrick@36: pre = patrick@36: element pre { patrick@36: attlist.pre, 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?, patrick@36: dev, patrick@36: (source | sign)*, patrick@36: collec*, patrick@36: defnotes?, patrick@36: apfi? patrick@36: } patrick@36: # preliminaire : Intro, preface, Avertissement etc... patrick@36: attlist.pre &= 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: | "bio" patrick@36: | "remarque" patrick@36: | "note" patrick@36: | "chrono" patrick@36: | "presentation" patrick@36: | "personnages" patrick@36: | "sommaire" patrick@36: | "tdm" patrick@36: | "autre" patrick@36: }? patrick@36: # Type de preliminaire : introduction, prologue, preface, remerciements, avant propos , bibliographie, remarque, note, chronologie, presentation et autre patrick@36: patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: patrick@36: # Mai 2009 : ajout type bio, personnages, sommaire, tdm patrick@36: patrick@36: # Mai 2009 : ajout appels de figure optionnels en dÈbut et en fin de prÈliminaire 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 appels de figure optionnels au niveau de titre et sous titre ****** patrick@36: patrick@36: # mai 2009 : ajout source optionnel ****** 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: sign = element sign { attlist.sign, (typo | appel | br)* } patrick@36: attlist.sign &= empty patrick@36: # Signature de la preface ou de l'intro, etc...** patrick@36: patrick@36: # ****** Elements volume de l'ouvrage ****** patrick@36: vol = patrick@36: element vol { patrick@36: attlist.vol, patrick@36: depart, patrick@36: (appcrit | pre)*, patrick@36: ((dev, part*) | part+), patrick@36: defnotes?, patrick@36: (appcrit | appen)* patrick@36: } patrick@36: attlist.vol &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }? patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: patrick@36: # ****** Elements partie de l'ouvrage ****** patrick@36: part = patrick@36: element part { patrick@36: attlist.part, patrick@36: depart, patrick@36: (appcrit | pre)*, patrick@36: ((dev, (section | chap)*) patrick@36: | (section | chap)+), patrick@36: defnotes?, patrick@36: (appcrit | appen)* patrick@36: } patrick@36: attlist.part &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }? patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: patrick@36: # ****** Elements partie de l'ouvrage ****** patrick@36: section = patrick@36: element section { patrick@36: attlist.section, patrick@36: depart, patrick@36: (appcrit | pre)*, patrick@36: ((dev, chap*) | chap+), patrick@36: defnotes?, patrick@36: (appcrit | appen)* patrick@36: } patrick@36: attlist.section &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }? patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: n = element n { attlist.n, (typo | appel | br | renv | renvlnk)* } patrick@36: attlist.n &= empty patrick@36: # Numero de partie, Chapitre, sous-chapitre ou section patrick@36: patrick@36: # ****** Elements Chapitre de l'ouvrage ****** patrick@36: chap = patrick@36: element chap { patrick@36: attlist.chap, patrick@36: depart, patrick@36: (appcrit | pre)*, patrick@36: ((chapeau?, dev, schap*) | schap+), patrick@36: source?, patrick@36: defnotes?, patrick@36: (appcrit | appen)* patrick@36: } patrick@36: attlist.chap &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }? patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: patrick@36: # Chapitre patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment chapeau ****** patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment source ****** patrick@36: patrick@36: # ****** Elements Sous-chapitre ****** patrick@36: schap = patrick@36: element schap { patrick@36: attlist.schap, patrick@36: depart, patrick@36: (appcrit | pre)*, patrick@36: chapeau?, patrick@36: dev, patrick@36: defnotes?, patrick@36: (appcrit | appen)* patrick@36: } patrick@36: attlist.schap &= patrick@36: attribute id { xsd:ID }?, patrick@36: attribute num { text }? patrick@36: # Indentifiant et numero permettant de referencer les titres pour une gestion electronique patrick@36: patrick@36: # Sous-chapitre patrick@36: patrick@36: # mai 2009 : ajout ÈlÈment chapeau ****** 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: # ****** Elements Developpement ****** patrick@36: dev = patrick@36: element dev { patrick@36: attlist.dev, patrick@36: (((let?, (p | pbib)) patrick@36: | bl patrick@36: | sep patrick@36: | dialogue patrick@36: | theatre patrick@36: | \list patrick@36: | stroplg patrick@36: | cita patrick@36: | infratexte patrick@36: | lettre patrick@36: | fig patrick@36: | tableau patrick@36: | enc patrick@36: | sign) patrick@36: | (niv1 | niv2 | niv3 | niv4 | niv5))+, patrick@36: fin?, patrick@36: source? patrick@36: } patrick@36: attlist.dev &= empty patrick@36: # mai 2009 : ajout source ****** patrick@36: patrick@36: # Developpement des chapitres, parties ou sections... patrick@36: chapeau = element chapeau { attlist.chapeau, let?, p+ } patrick@36: attlist.chapeau &= empty patrick@36: # mai 2009 : ajout ÈlÈment chapeau pour preliminaire, appendice, chapitre, sous chapitre, sect ****** patrick@36: patrick@36: # ****** Elements Theatre ****** patrick@36: theatre = element theatre { attlist.theatre, distrib*, acte+ } patrick@36: attlist.theatre &= empty patrick@36: # Module d'enrichissement pour ouvrage de theatre... patrick@36: distrib = element distrib { attlist.distrib, tit, role+, expos* } patrick@36: attlist.distrib &= empty patrick@36: # liste des personnage de la piece... patrick@36: role = element role { attlist.role, (pers | acteur)* } patrick@36: attlist.role &= empty patrick@36: # role du personnage patrick@36: expos = patrick@36: element expos { attlist.expos, (typo | appel | renv | renvlnk)* } patrick@36: attlist.expos &= empty patrick@36: # exposition (ou se deroule la piece) patrick@36: acte = patrick@36: element acte { patrick@36: attlist.acte, n?, tit?, stit?, (pers | didasc)*, scene+ patrick@36: } patrick@36: attlist.acte &= empty patrick@36: # acte patrick@36: pers = patrick@36: element pers { patrick@36: attlist.pers, (typo | appel | renv | renvlnk | didasc)* patrick@36: } patrick@36: attlist.pers &= empty patrick@36: # personnage(s) patrick@36: acteur = patrick@36: element acteur { patrick@36: attlist.acteur, (typo | appel | renv | renvlnk | didasc)* patrick@36: } patrick@36: attlist.acteur &= empty patrick@36: # acteur(s) patrick@36: didasc = patrick@36: element didasc { attlist.didasc, (typo | appel | renv | renvlnk)* } patrick@36: attlist.didasc &= empty patrick@36: # didascalie patrick@36: scene = patrick@36: element scene { patrick@36: attlist.scene, n?, tit?, stit?, (pers | didasc)*, replique+ patrick@36: } patrick@36: attlist.scene &= empty patrick@36: # scene patrick@36: replique = patrick@36: element replique { patrick@36: attlist.replique, patrick@36: (pers+, (p | vers | didasc)*)+ patrick@36: } patrick@36: attlist.replique &= empty patrick@36: # replique patrick@36: vers = element vers { attlist.vers, (typo | appel | renv | renvlnk)* } patrick@36: attlist.vers &= patrick@36: attribute align { patrick@36: "centre" | "justif" | "gauche" | "droite" | "stichomythie" patrick@36: }?, patrick@36: attribute num { text }? patrick@36: # Attribut du vers (stichomytie pour les vers qui se suivent patrick@36: patrick@36: # vers patrick@36: bl = element bl { attlist.bl, empty } patrick@36: # Ligne de blanc patrick@36: attlist.bl &= attribute v { text } patrick@36: # Valeur de blanc patrick@36: sep = element sep { attlist.sep, empty } patrick@36: # Separateur patrick@36: attlist.sep &= patrick@36: attribute type { patrick@36: "filet" | "frise" | "etoiles" | "etoile" | "logo" | "autre" patrick@36: }, patrick@36: attribute src { text }? patrick@36: # type de separateur patrick@36: patrick@36: # Mai 2009 : ajout scr : nom de l'image pour logo, cul de lampe... 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: # ****** Niveau d'intertitre et de Texte ****** patrick@36: niv1 = patrick@36: element niv1 { patrick@36: attlist.niv1, patrick@36: (n?, patrick@36: int?, patrick@36: sint?, patrick@36: exer*, patrick@36: (((let?, p) patrick@36: | pbib patrick@36: | bl patrick@36: | sep patrick@36: | \list patrick@36: | stroplg patrick@36: | cita patrick@36: | infratexte patrick@36: | lettre patrick@36: | fig patrick@36: | tableau patrick@36: | enc)+ patrick@36: | (niv2 | niv3 | niv4 | niv5)*)+), patrick@36: fin? patrick@36: } patrick@36: attlist.niv1 &= empty patrick@36: # Niveau 1 patrick@36: niv2 = patrick@36: element niv2 { patrick@36: attlist.niv2, patrick@36: (n?, patrick@36: int?, patrick@36: sint?, patrick@36: exer*, patrick@36: (((let?, p) patrick@36: | pbib patrick@36: | bl patrick@36: | sep patrick@36: | \list patrick@36: | stroplg patrick@36: | cita patrick@36: | infratexte patrick@36: | lettre patrick@36: | fig patrick@36: | tableau patrick@36: | enc)+ patrick@36: | (niv3 | niv4 | niv5)*)+), patrick@36: fin? patrick@36: } patrick@36: attlist.niv2 &= empty patrick@36: # Niveau 2 patrick@36: niv3 = patrick@36: element niv3 { patrick@36: attlist.niv3, patrick@36: (n?, patrick@36: int?, patrick@36: sint?, patrick@36: exer*, patrick@36: (((let?, p) patrick@36: | pbib patrick@36: | bl patrick@36: | sep patrick@36: | \list patrick@36: | stroplg patrick@36: | cita patrick@36: | infratexte patrick@36: | lettre patrick@36: | fig patrick@36: | tableau patrick@36: | enc)+ patrick@36: | (niv4 | niv5)*)+), patrick@36: fin? patrick@36: } patrick@36: attlist.niv3 &= empty patrick@36: # Niveau 3 patrick@36: niv4 = patrick@36: element niv4 { patrick@36: attlist.niv4, patrick@36: (n?, patrick@36: int?, patrick@36: sint?, patrick@36: exer*, patrick@36: (((let?, p) patrick@36: | pbib patrick@36: | bl patrick@36: | sep patrick@36: | \list patrick@36: | stroplg patrick@36: | cita patrick@36: | infratexte patrick@36: | lettre patrick@36: | fig patrick@36: | tableau patrick@36: | enc)+ patrick@36: | niv5)*), patrick@36: fin? patrick@36: } patrick@36: attlist.niv4 &= empty patrick@36: # Niveau 4 patrick@36: niv5 = patrick@36: element niv5 { patrick@36: attlist.niv5, patrick@36: (n?, patrick@36: int?, patrick@36: sint?, patrick@36: exer*, patrick@36: ((let?, p) patrick@36: | pbib patrick@36: | bl patrick@36: | sep patrick@36: | \list patrick@36: | stroplg patrick@36: | cita patrick@36: | infratexte patrick@36: | lettre patrick@36: | fig patrick@36: | tableau patrick@36: | enc)+), patrick@36: fin? patrick@36: } patrick@36: attlist.niv5 &= empty patrick@36: # Niveau 5 patrick@36: int = element int { attlist.int, (typo | br | appel | renv | renvlnk)* } patrick@36: attlist.int &= empty patrick@36: # Intertitre patrick@36: sint = patrick@36: element sint { attlist.sint, (typo | br | appel | renv | renvlnk)* } patrick@36: attlist.sint &= empty patrick@36: # Sous intertitre 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" }? patrick@36: start = livre