<!ELEMENT article (title?,subtitle?,articleinfo?,formalpara?,caution?,(para|section),section*)>
<!ATTLIST article lang (FR|EN) #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT subtitle (#PCDATA)>
<!ELEMENT articleinfo (copyright?,mediaobject?,orgname?,releaseinfo?,abstract,author,revhistory?)>
<!ELEMENT copyright (year,holder*)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT holder (#PCDATA)>
<!ELEMENT orgname (#PCDATA|inlinemediaobject|ulink)*>
<!ELEMENT inlinemediaobject (videoobject|audioobject|imageobject)+>
<!ELEMENT releaseinfo (remark)>
<!ELEMENT remark (#PCDATA)*>
<!ELEMENT productname (#PCDATA)>
<!ELEMENT productnumber (#PCDATA)>
<!ELEMENT abstract (para+)>
<!ELEMENT author (firstname,surname,affiliation)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT surname (#PCDATA)>
<!ELEMENT affiliation (orgname)>

<!ELEMENT revhistory (revision+)>
<!ELEMENT revision (revnumber,date,revdescription?)>
<!ELEMENT revnumber (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT revdescription (para)>

<!ELEMENT formalpara (title,para)>
<!ELEMENT caution (title?,para+)>
<!ELEMENT section (title,(itemizedlist|variablelist|para|formalpara|caution|important|note|procedure|programlisting|screen|mediaobject|section)+,section*)>
<!ATTLIST section id CDATA #IMPLIED>

<!ELEMENT para (#PCDATA|important|note|ulink|xref|programlisting|emphasis|literal|mediaobject|table|itemizedlist|variablelist|varname|filename|acronym|userinput|remark|command|inlinemediaobject|screen)*>
<!ELEMENT command (#PCDATA)>
<!ELEMENT varname (#PCDATA)>
<!ELEMENT filename (#PCDATA)>
<!ELEMENT acronym (#PCDATA)>
<!ELEMENT userinput (#PCDATA)>
<!ELEMENT screen (#PCDATA)>
<!ELEMENT itemizedlist (listitem+)>
<!ELEMENT listitem (para,(para|mediaobject)*)>
<!ELEMENT variablelist (varlistentry+)>
<!ELEMENT varlistentry (term,listitem)>
<!ELEMENT term (#PCDATA)>
<!ELEMENT procedure (step+)>
<!ELEMENT step (title?,((para|programlisting)+,substeps?)+)>
<!ELEMENT substeps (step+)>
<!ELEMENT important (title?,para+)>
<!ELEMENT note (title?,para+)>
<!ELEMENT ulink (#PCDATA)>
<!ATTLIST ulink url CDATA #REQUIRED>
<!ELEMENT xref EMPTY>
<!ATTLIST xref linkend CDATA #REQUIRED>
<!ELEMENT programlisting (#PCDATA|emphasis|literal)*>
<!ATTLIST programlisting xml:space (preserve) #FIXED 'preserve'>

<!ELEMENT emphasis (#PCDATA)>
<!ATTLIST emphasis role (bold) #IMPLIED>
<!ELEMENT literal (#PCDATA)>
<!ATTLIST literal role (bold) #IMPLIED>

<!ELEMENT mediaobject (objectinfo?,(videoobject|audioobject|imageobject)+,caption?)>
<!ELEMENT caption (para)>
<!ELEMENT objectinfo (title?)>

<!ELEMENT videoobject (videodata)>
<!ELEMENT videodata (#PCDATA)>
<!ATTLIST videodata fileref CDATA #REQUIRED>

<!ELEMENT audioobject (audiodata)>
<!ELEMENT audiodata (#PCDATA)>
<!ATTLIST audiodata fileref CDATA #REQUIRED>

<!ELEMENT imageobject (imagedata)>
<!ELEMENT imagedata (#PCDATA)>
<!ATTLIST imagedata fileref CDATA #REQUIRED
					align (left|right|center) #IMPLIED>

<!ELEMENT table (title?,tgroup+)>
<!ELEMENT tgroup (tbody)>
<!ATTLIST tgroup cols CDATA #REQUIRED
                 align (left|right|center|justify|char) #IMPLIED>
<!ELEMENT tbody (row+)>
<!ELEMENT row (entry+)>
<!ELEMENT entry (#PCDATA|itemizedlist|para)*>
<!ATTLIST entry align (left|right|center|justify|char) #IMPLIED
                valign (top|middle|bottom) #IMPLIED>


