[DTD]............... problème de code

Bonjour à tous.

Voila, j ai un probleme au niveau des lignes de code du dtd, et quand je corrige une erreur, il m'en affiche une autre et ansi de suite. Enfin je decouvre le dtd....donc c 'est probablement pour ça.
Alors si qq veut bien me dire où se situe mon (mes) erreur(s), ce serait tres gentils de sa part.
<!NOTATION cgm    PUBLIC "-//USA-DOD//NOTATION Computer Graphics Metafile//EN">
<!ELEMENT amm - - ((title,mfmatr,chapter*)|increv|tr+)
				+(revst|revend|cocst|cocend|docunit|hotlink) >
<!ATTLIST   amm
		spl      CDATA    #REQUIRED
		model    CDATA    #REQUIRED
		oidate      NUMBER   #REQUIRED
		revdate     NUMBER   #REQUIRED
		tsn      CDATA    #REQUIRED
		cus      CDATA    #IMPLIED
		docnbr      CDATA    #IMPLIED
		lang     CDATA    #REQUIRED
		chg      (N|R|U)     'N'            >

2 réponses

  1. Salut,
    Premiere chose, si tu te lances dans les DTD, pourquoi ne passes tu pas aux XSD, c'est ce qui est actuel, et c'est enfin un lanage SGML, ce qui veut dire que c'est dans un fichier xml que tu decris ton fichier xml (schematiquement), c'est plus precise et potentiellement plus rapide a verifier pour le parser dans le cas des gros fichiers...
    Ceci etant dit, ca serait plus constructifs que tu nous dises QUELLE erreur il affiche, ou au moins que tu nous donnes ton fichier XML pourque l'on puisse tester nous meme :o)
    0
    1. Bon, en fait, on m a donné 2 dtd et je dois comparer les balises une a une. Etant donné que cela represente un travail enorme, j aurais aimé voir les dtd sous forme de schéma en forme d'arbre. Pour cela j ai téléchargé "Visual Dtd Editor". Je joins le dtd complet :
      <!-- ======================================================= -->
      <!--  This is the DTD for Task Numbered JEMTOSS              -->
      <!--  TURBOMECA Engine Manual, Version 1.0  01/06/03         -->
      <!-- ======================================================= -->
      <!--  Original DTD :                                         -->
      <!--                 DTD ATA em.dtd Version 2.2    01/14/97  -->
      <!-- ======================================================= -->
      <!--  Update :                       Version number :        -->
      <!--          First version                          001     -->
      <!--                                                         -->
      <!--          02/10/2003                             002     -->
      <!--                                                         -->
      
      <!-- Changement de structure des pr?requis, -->
      <!-- suite a evolution des modeles Turbomeca -->
      <!-- -->
      <!-- Prise en charge des equations (ajout 31/03/2004) -->
      <!-- -->
      <!-- ======================================================= -->
      <!-- -->
      <!-- DTD reference: "-//ATA-TASK//DTD EM-VER1.0-TURBOMECA//EN" -->
      <!-- -->
      <!-- The following set of declarations may be referred -->
      <!-- to using a public entity as follows: -->
      <!-- -->
      <!-- <!DOCTYPE em PUBLIC "-//ATA-TASK//DTD EM-VER1.0-TURBOMECA//EN" -->
      <!-- -->
      <!-- ======================================================= -->
      <!-- DOCTYPE em [ -->
      <!-- ======================================================= -->
      <!-- NOTATIONS -->
      <!-- ======================================================= -->
      <!-- -->
      <!NOTATION cgm PUBLIC "-//USA-DOD//NOTATION Computer Graphics Metafile//EN">
      <!NOTATION ccitt4 PUBLIC "-//USA-DOD//NOTATION CCITT Group 4 Facsimile//EN">
      <!-- -->
      <!-- ====================================================== -->
      <!-- ENTITIES -->
      <!-- ======================================================= -->
      <!ENTITY % g.r "(reftask*, grphcref*, refext*, refint*)" >
      <!ENTITY % w.c.n "(warning*, caution*, note*)" >
      <!ENTITY % text "(para | tabdat | table |
      unlist | numlist | deflist | graphic)+">
      <!ENTITY % deleted "(deleted, chgdesc*)" >
      <!ENTITY % yesorno "NUMBER" >
      <!ENTITY % revatt
      "chg (N | D | R | U) #REQUIRED
      key ID #REQUIRED
      revdate NUMBER #REQUIRED" >
      <!-- -->
      <!ENTITY % ISOtech PUBLIC "ISO 8879-1986//ENTITIES General Technical//EN">
      %ISOtech;
      <!ENTITY % ISOpub PUBLIC "ISO 8879-1986//ENTITIES Publishing//EN">
      %ISOpub;
      <!ENTITY % ISOnum PUBLIC "ISO 8879-1986//ENTITIES Numeric and Special Graphic//EN">
      %ISOnum;
      <!ENTITY % ISOgrk1 PUBLIC "ISO 8879-1986//ENTITIES Greek Letters//EN">
      %ISOgrk1;
      <!ENTITY % ISOlat1 PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN" >
      %ISOlat1;

      <!-- -->
      <!-- ====================================================== -->
      <!-- EM TOP LEVEL STRUCTURE -->
      <!-- ======================================================= -->
      <!ELEMENT em - - (issue, (task | tr), endverso?)
      +(revst | revend) >
      <!ATTLIST em
      spl CDATA #REQUIRED
      e_family CDATA #REQUIRED
      e_version CDATA #REQUIRED
      manual (MM | MR | MRPM | COM | COR | CR | TCI) #REQUIRED
      oidate NUMBER #REQUIRED
      tsn CDATA #IMPLIED
      docnbr CDATA #REQUIRED
      lang (FR |EN |DE |SP) #REQUIRED
      chg (N | R | U | D) 'N' >

      <!-- ====================================================== -->
      <!-- ISSUE - REVISION DATE -->
      <!-- ======================================================= -->

      <!ELEMENT issue - o EMPTY >
      <!ATTLIST issue
      year NUMBER #REQUIRED
      month CDATA #REQUIRED
      day CDATA #REQUIRED
      revnum NUMBER #REQUIRED
      quality (UNVERIFIED | DRAFT | DRAFT2| PREMASTER | MASTER) #REQUIRED >

      <!-- -->
      <!-- ======================================================= -->
      <!-- TR - TEMPORARY REVISION -->
      <!-- ======================================================= -->
      <!ELEMENT tr - - (trfmatr, (task+ | graphic+ | sblist))>
      <!-- -->
      <!-- ======================================================= -->
      <!-- TR - FRONT MATTER -->
      <!-- ======================================================= -->
      <!ELEMENT trfmatr - - (title, trreason, (%text;)?) >
      <!ATTLIST trfmatr
      trnbr CDATA #REQUIRED
      issdate NUMBER #REQUIRED
      trdel CDATA #IMPLIED
      trrepl CDATA #IMPLIED >
      <!ELEMENT trreason - - %text; >

      <!-- ====================================================== -->
      <!-- TASK -->
      <!-- -->
      <!-- ======================================================= -->
      <!ELEMENT task - - (effect,title,
      (mfmatr | ((tfmatr|repair|si)?,
      (proc+ | tabperiodinspect+))),
      graphic*) >
      <!-- -->
      <!-- ======================================================= -->
      <!ATTLIST task
      chapnbr CDATA #REQUIRED
      sectnbr CDATA #REQUIRED
      subjnbr CDATA #REQUIRED
      func CDATA #REQUIRED
      seq CDATA #REQUIRED
      confltr CDATA #REQUIRED
      varnbr CDATA #REQUIRED
      pgblknbr CDATA #REQUIRED
      %revatt; >

      <!-- -->
      <!-- ====================================================== -->
      <!-- ENGINE MANUAL FRONT MATTER -->
      <!-- ======================================================= -->
      <!-- -->
      <!-- ======================================================= -->
      <!-- trlist and intro made optional so the em DTD can be -->
      <!-- used for a Consumable Materials Index -->
      <!-- ======================================================= -->
      <!-- -->
      <!ELEMENT mfmatr - - (transltr?, frontpage?, info?, approval?,
      nulist?, trlist?, conindex?, sblist*,
      chapnbrli?, chaptitleli?, chaplocli?,
      intro?, howtouse?, warninglist?, lists?,
      lep?, contents?)>
      <!ELEMENT transltr - - (chgdesc*, locadate, (%text;), auth, table)+ >
      <!ELEMENT locadate - - (#PCDATA) >
      <!ELEMENT auth - - (%text;) >
      <!ELEMENT info - - (para+)>
      <!ELEMENT approval - - (para+, agreenbr?, docnum?,
      (approdate | isempty), note*) >
      <!ELEMENT agreenbr - - (#PCDATA) >
      <!ELEMENT approdate - o EMPTY >
      <!ATTLIST approdate
      year NUMBER #REQUIRED
      month CDATA #REQUIRED
      day CDATA #REQUIRED >
      <!ELEMENT trlist - - (trdata+ | isempty | table) >
      <!ELEMENT trdata - - (effect?, trnbr, trstatus, trloc+)>
      <!ELEMENT conindex - - (chgdesc*, title, (prclist1 | table)+)+>
      <!ELEMENT sblist - - (effect?, chgdesc*, title, %text;,
      (sbdata+ | isempty)) >
      <!ELEMENT sbdata - - (sbnbr, sbdesc?, issdate?, ics) >
      <!ELEMENT intro - - ((chgdesc*, title, prclist1) | proc)+ >
      <!ELEMENT howtouse - - ((chgdesc*, title, prclist1) | proc)+ >
      <!ELEMENT warninglist - - (proc+ | warning+ | isempty) >
      <!ELEMENT (sbnbr | sbdesc | issdate | ics |
      trnbr | trstatus | trloc) - - (#PCDATA)>
      <!-- -->
      <!ATTLIST (transltr | trlist | conindex | intro | howtouse)
      oldkey NAME #IMPLIED
      %revatt; >
      <!ATTLIST sblist
      %revatt; >

      <!-- ====================================================== -->
      <!-- FRONT PAGE -->
      <!-- ======================================================= -->
      <!ELEMENT frontpage - - (volnum, docnum, oiprintdate) >

      <!ELEMENT volnum - o (#PCDATA) >
      <!ATTLIST volnum
      volnbr NUMBER #REQUIRED
      voltotal NUMBER #REQUIRED >
      <!ELEMENT docnum - o (#PCDATA) >
      <!ELEMENT oiprintdate - o EMPTY >
      <!ATTLIST oiprintdate
      year NUMBER #REQUIRED
      month CDATA #REQUIRED
      day CDATA #REQUIRED >

      <!-- ====================================================== -->
      <!-- LIST OF NORMAL UPDATES -->
      <!-- ======================================================= -->
      <!ELEMENT nulist - - (nudata+ | isempty | table) >
      <!ELEMENT nudata - - (nunbr, nuupdate, nuoperator, nuinsdate)>
      <!ELEMENT nunbr - - (#PCDATA) >
      <!ELEMENT nuupdate - o EMPTY >
      <!ATTLIST nuupdate
      year NUMBER #REQUIRED
      month CDATA #REQUIRED
      day CDATA #REQUIRED >
      <!ELEMENT nuoperator - - (#PCDATA) >
      <!ELEMENT nuinsdate - o EMPTY >
      <!ATTLIST nuinsdate
      year NUMBER #IMPLIED
      month CDATA #IMPLIED
      day CDATA #IMPLIED >

      <!-- ====================================================== -->
      <!-- LIST OF CHAPTERS BY NUMBER -->
      <!-- ======================================================= -->
      <!ELEMENT chapnbrli - - (title, note,
      (chapternbr+ | isempty | table)) >
      <!ELEMENT chapternbr - - (chapnbr, title, chapterdate,
      chapterrev, sectionnbr+) >
      <!ELEMENT chapnbr - - (#PCDATA) >
      <!ELEMENT chapterdate - o EMPTY >
      <!ATTLIST chapterdate
      year NUMBER #REQUIRED
      month CDATA #REQUIRED
      day CDATA #REQUIRED >
      <!ELEMENT chapterrev - - (#PCDATA) >
      <!ELEMENT sectionnbr - - (sectsubj, title, chapterdate?, chapterrev?) >
      <!ELEMENT sectsubj - o EMPTY >
      <!ATTLIST sectsubj
      sectnbr NUMBER #REQUIRED
      subjnbr NUMBER #REQUIRED >

      <!-- ====================================================== -->
      <!-- LIST OF CHAPTERS BY TITLE -->
      <!-- ======================================================= -->
      <!ELEMENT chaptitleli - - (title, note,
      (chaptitle+ | isempty | table)) >
      <!ELEMENT chaptitle - - (title, chapcss) >
      <!ELEMENT chapcss - o EMPTY >
      <!ATTLIST chapcss
      chapnbr NUMBER #REQUIRED
      sectnbr NUMBER #REQUIRED
      subjnbr NUMBER #REQUIRED >

      <!-- ====================================================== -->
      <!-- LIST OF CHAPTERS BY LOCATION -->
      <!-- ======================================================= -->
      <!ELEMENT chaplocli - - (title, note?,
      (chaploc+ | isempty | table)) >
      <!ELEMENT chaploc - - (sheet, title) >
      <!ATTLIST chaploc
      chapnbr NUMBER #REQUIRED
      sectnbr NUMBER #REQUIRED
      subjnbr NUMBER #REQUIRED
      chg (N | D | R | U) #REQUIRED >

      <!-- ====================================================== -->
      <!-- LIST OF EFFECTIVE PAGES -->
      <!-- ======================================================= -->
      <!ELEMENT lep - - (lepcontents) >
      <!ATTLIST lep
      chapnbr CDATA #REQUIRED >
      <!ELEMENT lepcontents - o (lepentry+) >

      <!ELEMENT lepentry - o (leptcss?, leptask?,
      leptname, leppage, lepdate) >
      <!ATTLIST lepentry
      chapnbr CDATA #IMPLIED
      sectnbr CDATA #IMPLIED
      subjnbr CDATA #IMPLIED
      func CDATA #IMPLIED
      seq CDATA #IMPLIED
      confltr CDATA #IMPLIED
      varnbr CDATA #IMPLIED >
      <!ELEMENT leptcss - o (#PCDATA) >
      <!ELEMENT leptask - o (#PCDATA) >
      <!ELEMENT leptname - o (#PCDATA) >
      <!ELEMENT leppage - o (#PCDATA) >
      <!ATTLIST leppage
      chg %yesorno; "0" >
      <!ELEMENT lepdate - o EMPTY >
      <!ATTLIST lepdate
      year NUMBER #REQUIRED
      month CDATA #REQUIRED
      day CDATA #REQUIRED >

      <!-- ====================================================== -->
      <!-- TABLE OF CONTENTS -->
      <!-- ======================================================= -->
      <!ELEMENT contents - o (chapname, toctcss, tocsect+) >
      <!ATTLIST contents chapnbr CDATA #REQUIRED >
      <!ELEMENT chapname - o (#PCDATA) >

      <!ELEMENT tocsect - o (sectname, toctcss, toctask?, tocsubj+) >
      <!ELEMENT tocsubj - o (subjname, toctcss, tocentry+) >
      <!ELEMENT sectname - o (#PCDATA) >
      <!ELEMENT subjname - o (#PCDATA) >

      <!ELEMENT tocentry - o (toctname, toctcss, toctask,
      tocpage, toceffect) >
      <!ATTLIST tocentry
      chapnbr CDATA #IMPLIED
      sectnbr CDATA #IMPLIED
      subjnbr CDATA #IMPLIED
      func CDATA #IMPLIED
      seq CDATA #IMPLIED
      confltr CDATA #IMPLIED
      varnbr CDATA #IMPLIED >
      <!ELEMENT toctname - o (#PCDATA) >
      <!ELEMENT toctcss - o (#PCDATA) >
      <!ELEMENT toctask - o (#PCDATA) >
      <!ELEMENT tocpage - o (#PCDATA) >
      <!ELEMENT toceffect - o (#PCDATA) >

      <!-- ======================================================= -->
      <!-- WARNING LIST -->
      <!-- ======================================================= -->
      <!ELEMENT warningli - - (warning+) >

      <!-- ======================================================= -->
      <!-- REPERTOIRES -->
      <!-- ======================================================= -->

      <!ELEMENT lists - - ((title?, (%text;)*,
      (toolitemindex | tooltaskindex | storeindex
      | repairgenindex | repairindex | siindex
      | adl | vendlist))
      | proc+) >

      <!ELEMENT toolitemindex - - (isempty | table) >
      <!ELEMENT tooltaskindex - - (isempty | table) >
      <!ELEMENT storeindex - - (isempty | table) >
      <!ELEMENT repairgenindex - - (isempty | table) >
      <!ELEMENT repairindex - - (isempty | table) >
      <!ELEMENT siindex - - (isempty | table) >

      <!-- ======================================================= -->
      <!-- LIST OF ADDITIONAL DOCUMENTATION -->
      <!-- ======================================================= -->
      <!ELEMENT adl - - (adlentry+) >
      <!ELEMENT adlentry - - (manualtype, manualref) >
      <!ELEMENT manualtype - - (#PCDATA) >
      <!ELEMENT manualref - - (#PCDATA) >

      <!-- ======================================================= -->
      <!-- Vendors list -->
      <!-- ======================================================= -->

      <!ELEMENT vendlist - - (title, (%text;)?, vendata+) >
      <!ATTLIST vendlist
      oldkey NAME #IMPLIED
      %revatt; >

      <!ELEMENT vendata - - (mfr, mad) >

      <!ELEMENT mfr - - (#PCDATA) >
      <!ELEMENT mad - - (venname?, venaddr*, veninfo*) >
      <!ELEMENT venname - - (#PCDATA) >
      <!ELEMENT venaddr - - (#PCDATA) >
      <!ELEMENT veninfo - - (#PCDATA) >

      <!-- ====================================================== -->
      <!-- PROC -->
      <!-- ======================================================= -->
      <!ELEMENT proc - - ((
      (chgdesc*, warning*, caution*, title,(%g.r;),(%w.c.n;),
      ((%text;), warningli?, note*)*,
      (tfmatr? | ((taskproc, graphic*)|ctrl|
      uselimitedpartli |
      tbomoduleli | disassref |
      tboaccessoryli | cpvlli |
      tabperiodinspect)*) )
      | %deleted;)
      ) >
      <!-- -->
      <!-- ======================================================= -->
      <!-- -->
      <!-- ======================================================= -->
      <!-- TFMATR -->
      <!-- ======================================================= -->
      <!ELEMENT tfmatr - - (tprereq+) >
      <!-- title not optional, so tprereq would never be empty -->
      <!ELEMENT tprereq - - (title, ((((%w.c.n;) | (%text;))*, list1?) |
      (stdli, tedli?, sspareli?, spareli?,
      conli?, reqprotectli?, reqpersli?) |
      (tedli, sspareli?, spareli?, conli?,
      reqprotectli?, reqpersli?) |
      reqtaskli | isempty?)) >
      <!-- -->
      <!-- ======================================================= -->
      <!-- TASKPROC -->
      <!-- ======================================================= -->
      <!ELEMENT taskproc - - (warning*, caution*, title, (%g.r;), (%w.c.n;),
      (((subtask*, graphic*)*
      | tolerance+
      | list1
      | (para | tabdat |table | unlist | numlist))*
      | isempty))
      >
      <!-- -->
      <!-- ======================================================= -->
      <!-- SUBTASK -->
      <!-- ======================================================= -->
      <!ELEMENT subtask - - (effect?,
      ((chgdesc*, title,(%g.r;), (%w.c.n;),
      (list2 | table* | tabdat*)) | %deleted;)) >
      <!ATTLIST subtask
      chapnbr NUMBER #REQUIRED
      sectnbr NUMBER #REQUIRED
      subjnbr NUMBER #REQUIRED
      func CDATA #REQUIRED
      seq CDATA #REQUIRED
      confltr CDATA ' '
      varnbr CDATA ' '
      key ID #REQUIRED >

      <!-- -->
      <!-- ======================================================= -->
      <!-- Controle visuel et dimensionnel -->
      <!-- ======================================================= -->
      <!ELEMENT ctrl - - (ctrlhead, headctrl, malfunction+,
      note*, fighead, sheet) >
      <!ATTLIST ctrl
      fignbr NUMBER #REQUIRED >
      <!ELEMENT ctrlhead - - (title, (csn | itr)+ , remarks) >
      <!ELEMENT remarks - - %text; >
      <!ELEMENT malfunction - - (location, anomaly+, note*) >
      <!ELEMENT location - - (#PCDATA) >
      <!ELEMENT anomaly - - (constatation, code, criteria+, note*) >
      <!ELEMENT constatation - - (#PCDATA) >
      <!ELEMENT code - - (#PCDATA) >
      <!ELEMENT criteria - - (para, action) >
      <!ATTLIST criteria
      cat NUMBER #IMPLIED
      rep %yesorno; "0"
      rev %yesorno; "0" >
      <!ELEMENT action - - (para+) >
      <!ELEMENT headctrl - o EMPTY >
      <!ELEMENT fighead - o EMPTY >

      <!-- Item de reparation -->
      <!ELEMENT itr - o EMPTY >
      <!ATTLIST itr
      itrnbr NUMBER #REQUIRED >
      <!-- -->
      <!-- ======================================================= -->
      <!-- Jeux et tolerances -->
      <!-- ======================================================= -->
      <!ELEMENT tolerance - - (tolhead, headtol, tol+, note*,
      fighead, sheet) >
      <!ATTLIST tolerance
      fignbr NUMBER #REQUIRED >
      <!ELEMENT tolhead - - (title, csn+) >
      <!ELEMENT tol - - (location, csn?, partname,
      size, fits, note*, comments) >
      <!ATTLIST tol
      type (D | R | L | A) #REQUIRED
      cat NUMBER #REQUIRED >
      <!ELEMENT partname - - (#PCDATA) >
      <!ELEMENT size - - (sizemax, sizemin) >
      <!ELEMENT sizemax - - (#PCDATA) >
      <!ELEMENT sizemin - - (#PCDATA) >
      <!ELEMENT fits - - (fitsmin, fitsmax, fitslimit) >
      <!ELEMENT fitsmin - - (#PCDATA) >
      <!ELEMENT fitsmax - - (#PCDATA) >
      <!ELEMENT fitslimit - - (#PCDATA) >
      <!ELEMENT comments - - (#PCDATA) >

      <!ELEMENT headtol - o EMPTY >
      <!-- -->
      <!-- ======================================================= -->
      <!-- Controle des pieces a vie limite -->
      <!-- ======================================================= -->
      <!ELEMENT cpvlli - - (((cpvl+) | isempty), note*) >
      <!ELEMENT cpvl - - (componentname, csn) >
      <!-- -->
      <!-- ======================================================= -->
      <!-- Reparation -->
      <!-- ======================================================= -->
      <!ELEMENT repair - - (repfinding, repsoluce, repcomments, repprereqli) >
      <!ATTLIST repair
      repairnbr NUMBER #REQUIRED >
      <!ELEMENT repfinding - - (para) >
      <!ELEMENT repsoluce - - (para) >
      <!ELEMENT repcomments - - (para) >
      <!ELEMENT repprereqli - - (repprereq+ | isempty) >
      <!ELEMENT repprereq - - (repreqnum, repreqdescript, repreqproced) >
      <!ELEMENT repreqnum - - (#PCDATA) >
      <!ELEMENT repreqdescript - - (#PCDATA) >
      <!ELEMENT repreqproced - - (#PCDATA) >

      <!-- SOLUTION DE REPARATION -->
      <!ELEMENT sr - - (srname?, srnbr?) >
      <!ATTLIST sr
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT srname - - (#PCDATA) >
      <!ELEMENT srnbr - - (#PCDATA) >

      <!-- -->
      <!-- ======================================================= -->
      <!-- IMS -->
      <!-- ======================================================= -->
      <!ELEMENT si - - (simodif, sichapeffect, siparteffect,
      sinewpartli, sisalpartli, sidelpartli) >
      <!ATTLIST si
      sinbr NUMBER #REQUIRED >
      <!ELEMENT simodif - - (#PCDATA) >
      <!ELEMENT sichapeffect - - (#PCDATA) >
      <!ELEMENT siparteffect - - (#PCDATA) >
      <!ELEMENT sinewpartli - - (sinewpart+ | isempty) >
      <!ELEMENT sinewpart - - (sinewpartname, sinewpartnbr,
      sinewpartqty, csn) >
      <!ELEMENT sinewpartname - - (#PCDATA) >
      <!ELEMENT sinewpartnbr - - (#PCDATA) >
      <!ELEMENT sinewpartqty - - (#PCDATA) >
      <!ELEMENT sisalpartli - - (sisalpart+ | isempty) >
      <!ELEMENT sisalpart - - (sisalpartname, sisaloldpartnbr,
      sisalnewpartnbr, sisalpartqty, csn) >
      <!ELEMENT sisalpartname - - (#PCDATA) >
      <!ELEMENT sisaloldpartnbr - - (#PCDATA) >
      <!ELEMENT sisalnewpartnbr - - (#PCDATA) >
      <!ELEMENT sisalpartqty - - (#PCDATA) >
      <!ELEMENT sidelpartli - - (sidelpart+ | isempty) >
      <!ELEMENT sidelpart - - (sidelpartname, sidelpartnbr,
      sidelpartqty, csn) >
      <!ELEMENT sidelpartname - - (#PCDATA) >
      <!ELEMENT sidelpartnbr - - (#PCDATA) >
      <!ELEMENT sidelpartqty - - (#PCDATA) >
      <!-- -->
      <!-- ======================================================= -->
      <!-- DISASSEMBLY/ASSEMBLY REFERENCE DOCUMENT -->
      <!-- ====================================================== -->

      <!ELEMENT disassref - - (title?, (componentgroup | componentrep)+) >
      <!ATTLIST disassref
      orient (port | land) #REQUIRED
      nbcols NUMBER "16"
      chapnbr CDATA #REQUIRED
      sectnbr CDATA #REQUIRED
      subjnbr CDATA #REQUIRED
      func CDATA #REQUIRED
      task801 %yesorno; "1"
      task802 %yesorno; "1"
      task803 %yesorno; "1"
      task804 %yesorno; "1"
      task805 %yesorno; "1"
      task806 %yesorno; "1"
      task807 %yesorno; "1"
      task808 %yesorno; "1"
      task809 %yesorno; "1"
      task810 %yesorno; "1"
      task811 %yesorno; "1"
      task812 %yesorno; "1"
      task813 %yesorno; "1"
      task814 %yesorno; "1"
      task815 %yesorno; "1"
      task816 %yesorno; "1"
      task817 %yesorno; "0"
      task818 %yesorno; "0"
      task819 %yesorno; "0"
      task820 %yesorno; "0"
      task821 %yesorno; "0"
      task822 %yesorno; "0"
      task823 %yesorno; "0"
      task824 %yesorno; "0"
      task825 %yesorno; "0"
      task826 %yesorno; "0" >
      <!ELEMENT componentgroup - - (#PCDATA) >
      <!ELEMENT componentrep - - ((componentname | csn), task801?,
      task802?, task803?,
      task804?, task805?, task806?, task807?,
      task808?, task809?, task810?, task811?,
      task812?, task813?, task814?, task815?,
      task816?, task817?, task818?, task819?,
      task820?, task821?, task822?, task823?,
      task824?, task825?, task826?) >
      <!ELEMENT (task801 | task802 | task803 | task804 | task805 |
      task806 | task807 | task808 | task809 | task810 |
      task811 | task812 | task813 | task814 | task815 |
      task816 | task817 | task818 | task819 | task820 |
      task821 | task822 | task823 | task824 | task825 |
      task826) - o EMPTY>
      <!ATTLIST (task801 | task802 | task803 | task804 | task805 |
      task806 | task807 | task808 | task809 | task810 |
      task811 | task812 | task813 | task814 | task815 |
      task816 | task817 | task818 | task819 | task820 |
      task821 | task822 | task823 | task824 | task825 |
      task826)
      taskorder NUMBER #REQUIRED >

      <!-- -->
      <!-- -->
      <!-- ======================================================= -->
      <!-- Structures used in chapter 05 MM -->
      <!-- ====================================================== -->
      <!-- ENGINE LIFE LIMIT VALUES -->
      <!ELEMENT lifelimitli - - (((lifelimit+) | isempty), note*) >
      <!ELEMENT lifelimit - - (componentname, itemref,
      lifelimitcycles, counters) >
      <!ELEMENT componentname - - (#PCDATA) >
      <!ELEMENT itemref - - (#PCDATA) >
      <!ELEMENT lifelimitcycles - - (#PCDATA) >
      <!ELEMENT counters - - (#PCDATA) >
      <!-- DAILY INSPECTIONS -->
      <!ELEMENT dailyinspectli - - (((dailyinspect+) | isempty), note*) >
      <!ELEMENT dailyinspect - - (maintop, reftask) >
      <!ELEMENT maintop - - (#PCDATA) >
      <!-- PERIODIC INSPECTIONS -->
      <!ELEMENT periodinspectli - - (((periodinspect+) | isempty), note*) >
      <!ELEMENT periodinspect - - (periodtol, maintask, reftask, applicond) >
      <!ELEMENT periodtol - - (#PCDATA) >
      <!ELEMENT maintask - - (%text;) >
      <!ELEMENT applicond - - (#PCDATA) >
      <!-- NON PERIODIC INSPECTIONS -->
      <!ELEMENT nonperiodinspectli - - (((nonperiodinspect+) | isempty), note*) >
      <!ELEMENT nonperiodinspect - - (event, (maintask, (reftask|isempty))+) >
      <!ELEMENT event - - (#PCDATA) >
      <!-- NON PERIODIC INSPECTIONS FOLLOWING ENGINE OPERATION -->
      <!-- IN A SPECIFIC ENVIRONNEMENT -->
      <!ELEMENT npifollowuseli - - (((npifollowuse+) | isempty), note*) >
      <!ELEMENT npifollowuse - - (condofuse, (maintask, (reftask|isempty))+) >
      <!ELEMENT condofuse - - (#PCDATA) >
      <!-- NON PERIODIC INSPECTIONS FOLLOWING A MAINTENANCE ACTION -->
      <!ELEMENT npifollowactli - - (((npifollowact+) | isempty), note*) >
      <!ELEMENT npifollowact - - (maintaction, (maintask, (reftask|isempty))+) >
      <!ELEMENT maintaction - - (#PCDATA) >
      <!-- SUMMARY TABLE OF PERIODIC INSPECTIONS -->
      <!ELEMENT tabperiodinspect - - (tbihead, headtbi, inspection+) >
      <!ATTLIST tabperiodinspect
      flow (0|1) "0" >
      <!ELEMENT tbihead - - (visithour, tbipg) >
      <!ELEMENT headtbi - o EMPTY >
      <!ELEMENT inspection - - (tasktype, maintask, enginevar,
      (reftask|tasktxt|isempty), applicond,
      inspectdate, inspectsignature) >
      <!ELEMENT visithour - - (%text;) >
      <!ELEMENT tbipg - - (%text;) >
      <!ELEMENT tasktype - - (#PCDATA) >
      <!ELEMENT enginevar - - (#PCDATA) >
      <!ELEMENT tasktxt - - (%text;) >
      <!ELEMENT inspectdate - - (#PCDATA) >
      <!ELEMENT inspectsignature - - (#PCDATA) >
      <!-- TBO OF MODULE/ENGINE -->
      <!ELEMENT tbomoduleli - - (((tbomodule+) | isempty), note*) >
      <!ELEMENT tbomodule - - (modulename, modifstd,
      maintenancemet, tbocalendar) >
      <!ELEMENT modulename - - (#PCDATA) >
      <!ELEMENT modifstd - - (#PCDATA) >
      <!ELEMENT maintenancemet - - (#PCDATA) >
      <!ELEMENT tbocalendar - - (#PCDATA) >
      <!-- ACCESSORY AND EQUIPMENT TBO -->
      <!ELEMENT tboaccessoryli - - (((tboaccessory+) | isempty), note*) >
      <!ELEMENT tboaccessory - - (accessoryname, tboitem,
      maintenancemet, tbocalendar) >
      <!ELEMENT accessoryname - - (#PCDATA) >
      <!ELEMENT tboitem - - (#PCDATA) >
      <!-- USE LIMITED PARTS -->
      <!ELEMENT uselimitedpartli - - (((uselimitedpart+) | isempty), note*) >
      <!ELEMENT uselimitedpart - - (ulpmodule, ulpnomen,
      ulpreference, ulpuselimit) >
      <!ELEMENT ulpmodule - - (#PCDATA) >
      <!ELEMENT ulpnomen - - (#PCDATA) >
      <!ELEMENT ulpreference - - (#PCDATA) >
      <!ELEMENT ulpuselimit - - (#PCDATA) >
      <!-- ======================================================= -->
      <!-- Tabular data in subtasks -->
      <!-- ====================================================== -->
      <!ELEMENT tabdat - - ((title?, tabgroup,
      ftnote*) | graphic* | %deleted;) -(tabdat) >
      <!ATTLIST tabdat
      formal (F | I) 'I'
      frame (top | bottom | topbot | all | sides | none) #IMPLIED
      colsep %yesorno; #IMPLIED
      rowsep %yesorno; #IMPLIED
      orient (port | land) #IMPLIED
      pgwide %yesorno; #IMPLIED
      id ID #IMPLIED
      alt (C | B) 'B' >
      <!ELEMENT tabgroup - o (colspec*, spanspec*, thead?,
      tfoot?, tabody) >
      <!ATTLIST tabgroup
      cols NUMBER #REQUIRED
      colsep %yesorno; #IMPLIED
      rowsep %yesorno; #IMPLIED
      align (left | right | center | justify | char)
      "left"
      charoff NUTOKEN "50"
      char CDATA #IMPLIED >
      <!-- -->
      <!ELEMENT tabody - o (subtask*, row*)+ >
      <!-- -->
      <!-- ======================================================= -->
      <!-- TABLE (CELLULAR, CALS BASED) -->
      <!-- -->
      <!-- ATTRIBUT FLOW : 1 = a la suite 0 = nouvelle page -->
      <!-- ====================================================== -->
      <!ELEMENT table - - ((title?, tgroup, ftnote*) |
      graphic+) -(table) >
      <!ATTLIST table
      tabstyle NMTOKEN #IMPLIED
      flow (0|1) "1"
      frame (top | bottom | topbot | all |
      sides | none) #IMPLIED
      colsep %yesorno; #IMPLIED
      rowsep %yesorno; #IMPLIED
      orient (port | land) #IMPLIED
      pgwide %yesorno; #IMPLIED
      id ID #IMPLIED
      formal (F | I) 'I' >
      <!ELEMENT tgroup - o (colspec*, spanspec*, thead?, tfoot?,
      tbody) >
      <!ATTLIST tgroup
      cols NUMBER #REQUIRED
      colsep %yesorno; #IMPLIED
      rowsep %yesorno; #IMPLIED
      align (left | right | center | justify | char)
      "left"
      charoff NUTOKEN "50"
      char CDATA "" >
      <!ELEMENT colspec - o EMPTY >
      <!ATTLIST colspec
      colnum NUMBER #IMPLIED
      colname NMTOKEN #IMPLIED
      align (left | right | center | justify | char)
      #IMPLIED
      charoff NUTOKEN #IMPLIED
      char CDATA #IMPLIED
      colwidth CDATA #IMPLIED
      colsep %yesorno; #IMPLIED
      rowsep %yesorno; #IMPLIED >
      <!ELEMENT spanspec - o EMPTY >
      <!ATTLIST spanspec
      namest NMTOKEN #REQUIRED
      nameend NMTOKEN #REQUIRED
      spanname NMTOKEN #IMPLIED
      align (left | right | center | justify | char)
      "center"
      charoff NUTOKEN #IMPLIED
      char CDATA #IMPLIED
      rowsep %yesorno; #IMPLIED
      colsep %yesorno; #IMPLIED >
      <!ELEMENT (thead | tfoot)
      - o (colspec*, row+) >
      <!ELEMENT tbody - o (row+) >
      <!ATTLIST thead
      valign (top | middle | bottom)
      "bottom" >
      <!ATTLIST (tfoot|tbody)
      valign (top | middle | bottom)
      "top" >
      <!ELEMENT row - o (entry+) >
      <!ATTLIST row
      rowsep %yesorno; #IMPLIED >
      <!ELEMENT entry - o (%text; | note)+ >
      <!ATTLIST entry
      colname NMTOKEN #IMPLIED
      namest NMTOKEN #IMPLIED
      nameend NMTOKEN #IMPLIED
      spanname NMTOKEN #IMPLIED
      morerows NUMBER '0'
      colsep %yesorno; #IMPLIED
      rowsep %yesorno; #IMPLIED
      rotate %yesorno; "0"
      valign (top | bottom | middle)
      "top"
      align (left | right | center | justify | char)
      #IMPLIED
      charoff NUTOKEN #IMPLIED
      char CDATA #IMPLIED >
      <!ELEMENT ftnote - - %text; >
      <!ATTLIST ftnote
      ftnoteid ID #REQUIRED >
      <!-- -->
      <!-- -->
      <!-- ======================================================= -->
      <!-- PROCEDURE LIST STRUCTURE (NON-TASKED) -->
      <!-- ======================================================= -->
      <!ELEMENT prclist1 - - (prcitem1+) >
      <!ELEMENT prclist2 - - (prcitem2+) >
      <!ELEMENT prclist3 - - (prcitem3+) >
      <!ELEMENT prclist4 - - (prcitem4+) >
      <!ELEMENT prclist5 - - (prcitem5+) >
      <!ELEMENT prclist6 - - (prcitem6+) >
      <!ELEMENT prclist7 - - (prcitem7+) >
      <!-- -->
      <!ELEMENT prcitem1 - - (prcitem, prclist2?) >
      <!ELEMENT prcitem2 - - (prcitem, prclist3?) >
      <!ELEMENT prcitem3 - - (prcitem, prclist4?) >
      <!ELEMENT prcitem4 - - (prcitem, prclist5?) >
      <!ELEMENT prcitem5 - - (prcitem, prclist6?) >
      <!ELEMENT prcitem6 - - (prcitem, prclist7?) >
      <!ELEMENT prcitem7 - - (prcitem) >
      <!-- -->
      <!ELEMENT prcitem - - (title?, (%text;)) >
      <!-- -->
      <!-- ======================================================= -->
      <!-- STANDARD LISTS -->
      <!-- ======================================================= -->
      <!ELEMENT list1 - - (l1item+) >
      <!ELEMENT list2 - - (l2item+) >
      <!ELEMENT list3 - - (l3item+) >
      <!ELEMENT list4 - - (l4item+) >
      <!ELEMENT list5 - - (l5item+) >
      <!ELEMENT list6 - - (l6item+) >
      <!ELEMENT list7 - - (l7item+) >
      <!-- -->
      <!ATTLIST (list1 | list2 | list3 | list4 | list5 | list6 | list7)
      cont %yesorno; "0" >
      <!-- -->
      <!ELEMENT l1item - - (((%w.c.n;), (%text; | entry)),
      (dailyinspectli |lifelimitli |
      periodinspectli | nonperiodinspectli |
      npifollowuseli | npifollowactli)?,
      note*, (list2, graphic*)?) >
      <!ELEMENT l2item - - (((%w.c.n;), (%text; | entry)), dailyinspectli?,
      note*, (list3, graphic*)?) >
      <!ELEMENT l3item - - (((%w.c.n;), (%text; | entry)),note*, (list4, graphic*)?) >
      <!ELEMENT l4item - - (((%w.c.n;), (%text; | entry)),note*, (list5, graphic*)?) >
      <!ELEMENT l5item - - (((%w.c.n;), (%text; | entry)),note*, (list6, graphic*)?) >
      <!ELEMENT l6item - - (((%w.c.n;), (%text; | entry)),note*, (list7, graphic*)?) >
      <!ELEMENT l7item - - ((%w.c.n;), (%text; | entry*)) >
      <!-- -->
      <!ATTLIST (l1item | l2item | l3item | l4item | l5item | l6item | l7item)
      cont %yesorno "0" >
      <!-- ======================================================= -->
      <!-- GRAPHICS -->
      <!-- ======================================================= -->
      <!-- -->
      <!-- ======================================================= -->
      <!-- seq attribute change from NUMBER to CDATA and all -->
      <!-- attributes changed to #IMPLIED so graphic can be used -->
      <!-- in front matter, where chapnbr, etc. is not applicable. -->
      <!-- ======================================================= -->
      <!-- -->
      <!ELEMENT graphic - - ((chgdesc*, title?, sheet+) | %deleted;)>
      <!ATTLIST graphic
      chapnbr NUMBER #IMPLIED
      sectnbr NUMBER #IMPLIED
      subjnbr NUMBER #IMPLIED
      func CDATA #IMPLIED
      seq CDATA #IMPLIED
      confltr CDATA #IMPLIED
      varnbr NUMBER #IMPLIED
      %revatt; >

      <!-- ATTRIBUT FLOW : 1 = a la suite 0 = nouvelle page -->
      <!-- -->
      <!ELEMENT sheet - - ((chgdesc*, title?, gdesc?) | %deleted;) >
      <!ATTLIST sheet
      gnbr ENTITY #REQUIRED
      fignbr CDATA #REQUIRED
      sheetnbr CDATA #REQUIRED
      sheettotal CDATA #REQUIRED
      flow (0|1) "0"
      %revatt; >
      <!-- -->
      <!ELEMENT gdesc - - (%text;) >
      <!-- -->
      <!-- ======================================================= -->
      <!-- NUMBERED AND UN-NUMBERED LISTS -->
      <!-- ====================================================== -->
      <!-- UNNUMBERED LIST -->
      <!ELEMENT unlist - - (title?, unlitem+) >
      <!ATTLIST unlist
      bulltype (NONE | BULLET | NDASH | MDASH | DIAMOND |
      ASTERISK | DELTA | SQUARE | SYSTEM)
      'SYSTEM' >
      <!ELEMENT unlitem - - (para, (unlist | para)*, table*, note*) >
      <!-- NUMBERED LIST - see ATA spec 2100 -->
      <!ELEMENT numlist - - (numlitem+) >
      <!ATTLIST numlist
      numtype (NNP | AUP | NNB | ALB | NNS | ALS | DBR |
      RUP | RLP | RUR | RLR | NNR | AUR |
      ALR) 'NNP' >
      <!ELEMENT numlitem - - (para+) >
      <!ATTLIST numlitem
      label CDATA #IMPLIED >
      <!-- -->
      <!-- ======================================================= -->
      <!-- DEFLIST (Definition List) -->
      <!-- ======================================================= -->
      <!ELEMENT deflist - - (title?, (term,def)+) >
      <!ATTLIST deflist
      type (simple | unordered | numbered) 'unordered' >
      <!ELEMENT term - O (para)+ >
      <!ATTLIST term
      id ID #IMPLIED >
      <!ELEMENT def - O (para)+ >
      <!-- -->
      <!-- ======================================================= -->
      <!-- PARAGRAPH -->
      <!-- ======================================================= -->
      <!ELEMENT para - - (#PCDATA | csn | pnr | toc | equ |
      grphcref | reffigp | reffigdf |
      refext | reftask | refint | eqinline |
      txtgrphc | sub | super |emphasis)+ >
      <!ATTLIST para
      key ID #IMPLIED >
      <!ELEMENT emphasis - - (#PCDATA | csn | pnr | toc | equ |
      grphcref | reffigp | reffigdf |
      refext | reftask | refint |
      txtgrphc | sub | super)+ >
      <!ATTLIST emphasis
      type (b | u | i | bi | bu | ui) #REQUIRED >
      <!-- -->
      <!-- ======================================================= -->
      <!-- REQUIRED ELEMENTS -->
      <!-- AND PARAGRAPH CONTENTS -->
      <!-- ======================================================= -->
      <!-- CONSUMABLE LIST -->
      <!ELEMENT conli - - (((con+, ncon*) | ncon+ | isempty), note*) >
      <!-- CONSUMABLE -->
      <!ELEMENT con - - (conname, connbr?, conqty) >
      <!ATTLIST con
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT conname - - (#PCDATA) >
      <!ELEMENT connbr - - (#PCDATA) >
      <!ELEMENT conqty - - (#PCDATA) >
      <!-- NON SPECIFIC CONSUMABLE -->
      <!ELEMENT ncon - - (#PCDATA) >
      <!ATTLIST ncon
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >

      <!-- STANDARD TOOLS AND EQUIPMENT LIST -->
      <!ELEMENT stdli - - (((std+) | isempty), note*) >
      <!-- STANDARD TOOLS AND EQUIPMENT -->
      <!ELEMENT std - - (stdname, stdnbr?, stdqty) >
      <!ATTLIST std
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT stdname - - (#PCDATA) >
      <!ELEMENT stdnbr - - (#PCDATA) >
      <!ELEMENT stdqty - - (#PCDATA) >

      <!-- SPECIAL TOOLS AND EQUIPMENT LIST -->
      <!ELEMENT tedli - - (((ted+) | isempty), note*) >
      <!-- SPECIAL TOOLS AND EQUIPMENT DESCRIPTION -->
      <!ELEMENT ted - - (toolname, (toolnbr | csn), toolqty) >
      <!ATTLIST ted
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT toolname - - (#PCDATA) >
      <!ELEMENT toolnbr - - (#PCDATA) >
      <!ELEMENT toolqty - - (#PCDATA) >

      <!-- SYSTEMATIC SPARES LIST -->
      <!ELEMENT sspareli - - (((sspare+) | isempty), note*) >
      <!-- SYSTEMATIC SPARES -->
      <!ELEMENT sspare - - (sspname, (csn | pnr), sspqty) >
      <!ATTLIST sspare
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT sspname - - (#PCDATA) >
      <!ELEMENT sspqty - - (#PCDATA) >

      <!-- NON SYSTEMATIC SPARES LIST -->
      <!ELEMENT spareli - - (((spare+) | isempty), note*) >
      <!-- NON SYSTEMATIC SPARES -->
      <!ELEMENT spare - - (spaname, (csn | pnr), spaqty) >
      <!ATTLIST spare
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT spaname - - (#PCDATA) >
      <!ELEMENT spaqty - - (#PCDATA) >
      <!-- CSN - Catalog Sequence Number - EIPC -->
      <!ELEMENT csn - o EMPTY >
      <!ATTLIST csn
      chapnbr CDATA #IMPLIED
      sectnbr CDATA #IMPLIED
      unitnbr CDATA #IMPLIED
      fignbr CDATA #REQUIRED
      itemnbr CDATA #REQUIRED >
      <!-- PART NUMBER -->
      <!ELEMENT pnr - - (#PCDATA) >

      <!-- INDIVIDUAL PROTECTION MATERIAL LIST -->
      <!ELEMENT reqprotectli - - (((reqprotect+) | isempty), note*) >
      <!-- REQUIRED PERSONS -->
      <!ELEMENT reqprotect - - (protectname, protectqty) >
      <!ATTLIST reqprotect
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT protectname - - (#PCDATA) >
      <!ELEMENT protectqty - - (#PCDATA) >

      <!-- PRE-REQUIRED SUPPORT FROM TASKS -->
      <!ELEMENT reqtaskli - - (((reqtask+) | isempty), note*) >
      <!-- REQUIRED PERSONS -->
      <!ELEMENT reqtask - - (reftask, reqtaskname) >
      <!ELEMENT reqtaskname - - (#PCDATA) >

      <!-- REQUIRED PERSONS LIST -->
      <!ELEMENT reqpersli - - (((reqpers+) | isempty), note*) >
      <!-- REQUIRED PERSONS -->
      <!ELEMENT reqpers - - (perscat, persqual, persnum, perstime?) >
      <!ATTLIST reqpers
      key ID #REQUIRED
      chg (N | R | U | D) 'N' >
      <!ELEMENT perscat - - (#PCDATA) >
      <!ELEMENT persqual - - (#PCDATA) >
      <!ELEMENT persnum - - (#PCDATA) >
      <!ELEMENT perstime - - (#PCDATA) >

      <!ELEMENT equ - - (#PCDATA) >
      <!ATTLIST equ
      key ID #IMPLIED
      chg (N | R | U | D) 'N' >

      <!-- -->
      <!-- SUBSCRIPT -->
      <!ELEMENT sub - - (#PCDATA) >
      <!-- -->
      <!-- SUPSCRIPT -->
      <!ELEMENT super - - (#PCDATA) >
      <!-- -->

      <!-- ======================================================= -->
      <!-- EQUATIONS -->
      <!-- ======================================================= -->
      <!ELEMENT eqinline - - (f*) >

      <!ENTITY % p.emph "b|it|rm">
      <!ENTITY % p.fnt.ph "blkbd|ig|sc|ge|ty|mit">
      <!ENTITY % sp.pos "vmk|vmkr|vsp|hsp|tu">
      <!ENTITY % f-cs "a|%p.emph|%p.fnt.ph|g|bg|%sp.pos">
      <!ENTITY % f-cstxt "#PCDATA|%f-cs">
      <!ENTITY % f-scs "rf|inc|v|dy|fi">
      <!ENTITY % limits "pr|in|sum">
      <!ENTITY % f-bu "fr|rad|lim|ar|stk|cases|eqaln|fen">
      <!ENTITY % f-ph "unl|ovl|unb|ovb|sup|inf">
      <!ENTITY % f-butxt "%f-bu|%limits|%f-cstxt|%f-scs|%f-ph|phr">
      <!ENTITY % f-phtxt "#PCDATA|%p.emph">
      <!ENTITY % f-post "par|sqb|llsqb|rrsqb|cub|ceil|fl|ang
      |sol|vb|uc|dc">
      <!ENTITY % f-style "s|d|t|da|dot|b|bl|n">

      <!ELEMENT fd - - (fl)*>
      <!ELEMENT fl O O (%f-butxt)*>

      <![IGNORE [
      <!ELEMENT fd - - (la?,fl)+>
      <!ELEMENT la - - (%f-cstxt;|%f-ph;)*>
      <!ATTLIST la loc CDATA #IMPLIED>
      ]]>

      <!ELEMENT f - - (%f-butxt)*>

      <!ELEMENT fr - - (nu,de)>
      <!ATTLIST fr shape CDATA #IMPLIED
      align CDATA #IMPLIED
      style CDATA #IMPLIED>
      <!ELEMENT (nu|de) O O (%f-butxt)*>
      <![IGNORE [
      <!ELEMENT lim - - (op,ll,ul,opd?)>
      ]]>
      <!ELEMENT lim - - (op,ll?,ul?,opd?)>
      <!ATTLIST lim align (r|c) #IMPLIED>
      <![IGNORE [
      <!ELEMENT op - - (%f-cstxt|rf|%f-ph) -(tu)>
      ]]>
      <!ELEMENT op - - (%f-cstxt|rf|%f-ph)* -(tu)>
      <!ELEMENT (ll|ul) O O (%f-butxt)*>
      <!ELEMENT opd - O (%f-butxt)*>
      <![IGNORE [
      <!ELEMENT (%limits) - - (ll,ul,opd?)>
      ]]>
      <!ELEMENT (%limits) - - (ll?,ul?,opd?)>
      <!ATTLIST (%limits) align CDATA #IMPLIED>
      <!ELEMENT rad - - (rcd,rdx?)>
      <!ELEMENT rcd O O (%f-butxt)*>
      <!ELEMENT rdx - O (%f-butxt)* -(tu)>
      <![IGNORE [
      <!ELEMENT fen - - ((%f-butxt)*,(cp,(%f-butxt)*)*,rp)>
      ]]>
      <!ELEMENT fen - - (%f-butxt|cp|rp)*>
      <!ATTLIST fen lp (%f-post;) vb
      style (%f-style;) s>
      <!ELEMENT (cp|rp) - O EMPTY>
      <!ATTLIST (cp|rp) post (%f-post;) vb
      style (%f-style;) s>
      <!ELEMENT ar - - (arr+)>
      <!ATTLIST ar cs CDATA #IMPLIED
      rs CDATA #IMPLIED
      ca CDATA #IMPLIED>
      <!ELEMENT arr - O (arc+)>
      <!ELEMENT arc O O (%f-butxt)*>
      <!ATTLIST arc align CDATA #IMPLIED>
      <!ELEMENT cases - - (arr+)>
      <!ELEMENT eqaln - - (eqline+)>
      <!ELEMENT eqline - - (%f-butxt)*>
      <!ELEMENT stk - - (lyr+)>
      <!ELEMENT lyr O O (%f-butxt)* -(tu)>
      <!ATTLIST lyr align CDATA #IMPLIED>
      <!ELEMENT ach - - (%f-butxt)*>
      <!ATTLIST ach atom CDATA #IMPLIED>
      <!ELEMENT (sup|inf) - - (%f-butxt)* -(tu)>
      <!ATTLIST (sup|inf) loc CDATA #IMPLIED>
      <!ELEMENT (unl|ovl) - - (%f-butxt)*>
      <!ATTLIST (unl|ovl) style CDATA #IMPLIED>
      <!ELEMENT (unb|ovb) - - (%f-butxt)*>
      0