<?xml version="1.0" encoding="iso-8859-1"?>
<grammar xmlns="http://www.thaiopensource.com/trex" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" ns="">
   <start>
      <ref name="spec.label"/>
   </start>
   <define name="local.p.class.label">
      <notAllowed/>
   </define>
   <define name="p.class.label">
      <choice>
         <ref name="p.label"/>
         <ref name="local.p.class.label"/>
      </choice>
   </define>
   <define name="local.list.class.label">
      <notAllowed/>
   </define>
   <define name="list.class.label">
      <choice>
         <ref name="ulist.label"/>
         <ref name="olist.label"/>
         <ref name="slist.label"/>
         <ref name="glist.label"/>
         <ref name="local.list.class.label"/>
      </choice>
   </define>
   <define name="local.speclist.class.label">
      <notAllowed/>
   </define>
   <define name="speclist.class.label">
      <choice>
         <ref name="orglist.label"/>
         <ref name="blist.label"/>
         <ref name="local.speclist.class.label"/>
      </choice>
   </define>
   <define name="local.note.class.label">
      <notAllowed/>
   </define>
   <define name="note.class.label">
      <choice>
         <ref name="note.label"/>
         <ref name="issue.label"/>
         <ref name="wfcnote.label"/>
         <ref name="vcnote.label"/>
         <ref name="constraintnote.label"/>
         <ref name="local.note.class.label"/>
      </choice>
   </define>
   <define name="local.illus.class.label">
      <notAllowed/>
   </define>
   <define name="illus.class.label">
      <choice>
         <ref name="eg.label"/>
         <ref name="graphic.label"/>
         <ref name="scrap.label"/>
         <ref name="table.label"/>
         <ref name="definitions.label"/>
         <ref name="local.illus.class.label"/>
      </choice>
   </define>
   <define name="local.annot.class.label">
      <notAllowed/>
   </define>
   <define name="annot.class.label">
      <choice>
         <ref name="footnote.label"/>
         <ref name="local.annot.class.label"/>
      </choice>
   </define>
   <define name="local.termdef.class.label">
      <notAllowed/>
   </define>
   <define name="termdef.class.label">
      <choice>
         <ref name="termdef.label"/>
         <ref name="term.label"/>
         <ref name="local.termdef.class.label"/>
      </choice>
   </define>
   <define name="local.emph.class.label">
      <notAllowed/>
   </define>
   <define name="emph.class.label">
      <choice>
         <ref name="emph.label"/>
         <ref name="quote.label"/>
         <ref name="local.emph.class.label"/>
      </choice>
   </define>
   <define name="local.ref.class.label">
      <notAllowed/>
   </define>
   <define name="ref.class.label">
      <choice>
         <ref name="bibref.label"/>
         <ref name="specref.label"/>
         <ref name="termref.label"/>
         <ref name="titleref.label"/>
         <ref name="xspecref.label"/>
         <ref name="xtermref.label"/>
         <ref name="local.ref.class.label"/>
      </choice>
   </define>
   <define name="local.loc.class.label">
      <notAllowed/>
   </define>
   <define name="loc.class.label">
      <choice>
         <ref name="loc.label"/>
         <ref name="local.loc.class.label"/>
      </choice>
   </define>
   <define name="local.tech.class.label">
      <notAllowed/>
   </define>
   <define name="tech.class.label">
      <choice>
         <ref name="kw.label"/>
         <ref name="nt.label"/>
         <ref name="xnt.label"/>
         <ref name="code.label"/>
         <ref name="local.tech.class.label"/>
      </choice>
   </define>
   <define name="local.ednote.class.label">
      <notAllowed/>
   </define>
   <define name="ednote.class.label">
      <choice>
         <ref name="ednote.label"/>
         <ref name="local.ednote.class.label"/>
      </choice>
   </define>
   <define name="div.mix.label">
      <choice>
         <ref name="p.class.label"/>
         <ref name="list.class.label"/>
         <ref name="speclist.class.label"/>
         <ref name="note.class.label"/>
         <ref name="illus.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="obj.mix.label">
      <choice>
         <ref name="p.class.label"/>
         <ref name="list.class.label"/>
         <ref name="speclist.class.label"/>
         <ref name="note.class.label"/>
         <ref name="illus.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="p.mix.label">
      <choice>
         <ref name="list.class.label"/>
         <ref name="speclist.class.label"/>
         <ref name="note.class.label"/>
         <ref name="illus.class.label"/>
      </choice>
   </define>
   <define name="entry.mix.label">
      <choice>
         <ref name="list.class.label"/>
         <ref name="note.label"/>
         <ref name="eg.label"/>
         <ref name="graphic.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="hdr.mix.label">
      <choice>
         <ref name="p.class.label"/>
         <ref name="list.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="termdef.mix.label">
      <choice>
         <ref name="note.class.label"/>
         <ref name="illus.class.label"/>
      </choice>
   </define>
   <define name="p.pcd.mix.label">
      <choice>
         <ref name="annot.class.label"/>
         <ref name="termdef.class.label"/>
         <ref name="emph.class.label"/>
         <ref name="ref.class.label"/>
         <ref name="tech.class.label"/>
         <ref name="loc.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="head.pcd.mix.label">
      <choice>
         <ref name="annot.class.label"/>
         <ref name="emph.class.label"/>
         <ref name="tech.class.label"/>
         <ref name="loc.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="label.pcd.mix.label">
      <choice>
         <ref name="annot.class.label"/>
         <ref name="termdef.class.label"/>
         <ref name="emph.class.label"/>
         <ref name="tech.class.label"/>
         <ref name="loc.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="eg.pcd.mix.label">
      <choice>
         <ref name="annot.class.label"/>
         <ref name="emph.class.label"/>
         <ref name="loc.class.label"/>
         <ref name="ednote.class.label"/>
         <ref name="constraint.label"/>
      </choice>
   </define>
   <define name="termdef.pcd.mix.label">
      <choice>
         <ref name="term.label"/>
         <ref name="emph.class.label"/>
         <ref name="ref.class.label"/>
         <ref name="tech.class.label"/>
         <ref name="loc.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="bibl.pcd.mix.label">
      <choice>
         <ref name="emph.class.label"/>
         <ref name="ref.class.label"/>
         <ref name="loc.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="tech.pcd.mix.label">
      <choice>
         <ref name="loc.class.label"/>
         <ref name="ednote.class.label"/>
      </choice>
   </define>
   <define name="spec.mdl.label">
      <group>
         <ref name="header.label"/>
         <optional>
            <ref name="front.label"/>
         </optional>
         <ref name="body.label"/>
         <optional>
            <ref name="back.label"/>
         </optional>
      </group>
   </define>
   <define name="header.mdl.label">
      <group>
         <ref name="title.label"/>
         <optional>
            <ref name="subtitle.label"/>
         </optional>
         <optional>
            <ref name="version.label"/>
         </optional>
         <ref name="w3c-designation.label"/>
         <ref name="w3c-doctype.label"/>
         <ref name="pubdate.label"/>
         <zeroOrMore>
            <ref name="notice.label"/>
         </zeroOrMore>
         <ref name="publoc.label"/>
         <optional>
            <choice>
               <group>
                  <ref name="prevlocs.label"/>
                  <optional>
                     <ref name="latestloc.label"/>
                  </optional>
               </group>
               <group>
                  <ref name="latestloc.label"/>
                  <optional>
                     <ref name="prevlocs.label"/>
                  </optional>
               </group>
            </choice>
         </optional>
         <ref name="authlist.label"/>
         <optional>
            <ref name="copyright.label"/>
         </optional>
         <ref name="status.label"/>
         <ref name="abstract.label"/>
         <optional>
            <ref name="pubstmt.label"/>
         </optional>
         <optional>
            <ref name="sourcedesc.label"/>
         </optional>
         <ref name="langusage.label"/>
         <ref name="revisiondesc.label"/>
      </group>
   </define>
   <define name="pubdate.mdl.label">
      <group>
         <optional>
            <ref name="day.label"/>
         </optional>
         <ref name="month.label"/>
         <ref name="year.label"/>
      </group>
   </define>
   <define name="key.att.role">
      <optional>
         <attribute name="key">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="def.att.role">
      <optional>
         <attribute name="def">
            <data type="xsd:IDREF"/>
         </attribute>
      </optional>
   </define>
   <define name="def-req.att.role">
      <attribute name="def">
         <data type="xsd:IDREF"/>
      </attribute>
   </define>
   <define name="ref.att.role">
      <optional>
         <attribute name="ref">
            <data type="xsd:IDREF"/>
         </attribute>
      </optional>
   </define>
   <define name="ref-req.att.role">
      <attribute name="ref">
         <data type="xsd:IDREF"/>
      </attribute>
   </define>
   <define name="simple-xlink.att.role">
      <empty/>
   </define>
   <define name="href.att.role">
      <optional>
         <attribute name="href">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="href-req.att.role">
      <attribute name="href">
         <anyString/>
      </attribute>
   </define>
   <define name="auto-embed.att.role">
      <optional>
         <attribute name="show">
            <string>embed</string>
         </attribute>
      </optional>
      <optional>
         <attribute name="actuate">
            <string>auto</string>
         </attribute>
      </optional>
   </define>
   <define name="user-replace.att.role">
      <optional>
         <attribute name="show">
            <string>replace</string>
         </attribute>
      </optional>
      <optional>
         <attribute name="actuate">
            <string>user</string>
         </attribute>
      </optional>
   </define>
   <define name="user-new.att.role">
      <optional>
         <attribute name="show">
            <string>new</string>
         </attribute>
      </optional>
      <optional>
         <attribute name="actuate">
            <string>user</string>
         </attribute>
      </optional>
   </define>
   <define name="xmlspace.att.role">
      <optional>
         <attribute name="xml:space">
            <string>preserve</string>
         </attribute>
      </optional>
   </define>
   <define name="common.att.role">
      <optional>
         <attribute name="id">
            <data type="xsd:ID"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="role">
            <data type="xsd:NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="common-idreq.att.role">
      <attribute name="id">
         <data type="xsd:ID"/>
      </attribute>
      <optional>
         <attribute name="role">
            <data type="xsd:NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="head.label">
      <element name="head">
         <ref name="head.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="head.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="head.role">
      <ref name="common.att.role"/>
   </define>
   <define name="spec.label">
      <element name="spec">
         <ref name="spec.role"/>
         <ref name="spec.mdl.label"/>
      </element>
   </define>
   <define name="spec.role">
      <ref name="common.att.role"/>
      <optional>
         <attribute name="w3c-doctype">
            <choice>
               <string>rec</string>
               <string>pr</string>
               <string>wd</string>
               <string>note</string>
               <string>other</string>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="other-doctype">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="status">
            <choice>
               <string>int-review</string>
               <string>ext-review</string>
               <string>final</string>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="front.label">
      <element name="front">
         <ref name="front.role"/>
         <oneOrMore>
            <ref name="div1.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="front.role">
      <ref name="common.att.role"/>
   </define>
   <define name="body.label">
      <element name="body">
         <ref name="body.role"/>
         <oneOrMore>
            <ref name="div1.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="body.role">
      <ref name="common.att.role"/>
   </define>
   <define name="back.label">
      <element name="back">
         <ref name="back.role"/>
         <group>
            <zeroOrMore>
               <ref name="div1.label"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="inform-div1.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="back.role">
      <ref name="common.att.role"/>
   </define>
   <define name="div1.label">
      <element name="div1">
         <ref name="div1.role"/>
         <group>
            <ref name="head.label"/>
            <zeroOrMore>
               <ref name="div.mix.label"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="div2.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="div1.role">
      <ref name="common.att.role"/>
   </define>
   <define name="inform-div1.label">
      <element name="inform-div1">
         <ref name="inform-div1.role"/>
         <group>
            <ref name="head.label"/>
            <zeroOrMore>
               <ref name="div.mix.label"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="div2.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="inform-div1.role">
      <ref name="common.att.role"/>
   </define>
   <define name="div2.label">
      <element name="div2">
         <ref name="div2.role"/>
         <group>
            <ref name="head.label"/>
            <zeroOrMore>
               <ref name="div.mix.label"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="div3.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="div2.role">
      <ref name="common.att.role"/>
   </define>
   <define name="div3.label">
      <element name="div3">
         <ref name="div3.role"/>
         <group>
            <ref name="head.label"/>
            <zeroOrMore>
               <ref name="div.mix.label"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="div4.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="div3.role">
      <ref name="common.att.role"/>
   </define>
   <define name="div4.label">
      <element name="div4">
         <ref name="div4.role"/>
         <group>
            <ref name="head.label"/>
            <zeroOrMore>
               <ref name="div.mix.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="div4.role">
      <ref name="common.att.role"/>
   </define>
   <define name="header.label">
      <element name="header">
         <ref name="header.role"/>
         <ref name="header.mdl.label"/>
      </element>
   </define>
   <define name="header.role">
      <ref name="common.att.role"/>
   </define>
   <define name="title.label">
      <element name="title">
         <ref name="title.role"/>
         <anyString/>
      </element>
   </define>
   <define name="title.role">
      <ref name="common.att.role"/>
   </define>
   <define name="subtitle.label">
      <element name="subtitle">
         <ref name="subtitle.role"/>
         <anyString/>
      </element>
   </define>
   <define name="subtitle.role">
      <ref name="common.att.role"/>
   </define>
   <define name="version.label">
      <element name="version">
         <ref name="version.role"/>
         <anyString/>
      </element>
   </define>
   <define name="version.role">
      <ref name="common.att.role"/>
   </define>
   <define name="w3c-designation.label">
      <element name="w3c-designation">
         <ref name="w3c-designation.role"/>
         <anyString/>
      </element>
   </define>
   <define name="w3c-designation.role">
      <ref name="common.att.role"/>
   </define>
   <define name="w3c-doctype.label">
      <element name="w3c-doctype">
         <ref name="w3c-doctype.role"/>
         <anyString/>
      </element>
   </define>
   <define name="w3c-doctype.role">
      <ref name="common.att.role"/>
   </define>
   <define name="pubdate.label">
      <element name="pubdate">
         <ref name="pubdate.role"/>
         <ref name="pubdate.mdl.label"/>
      </element>
   </define>
   <define name="pubdate.role">
      <ref name="common.att.role"/>
   </define>
   <define name="day.label">
      <element name="day">
         <ref name="day.role"/>
         <anyString/>
      </element>
   </define>
   <define name="day.role">
      <ref name="common.att.role"/>
   </define>
   <define name="month.label">
      <element name="month">
         <ref name="month.role"/>
         <anyString/>
      </element>
   </define>
   <define name="month.role">
      <ref name="common.att.role"/>
   </define>
   <define name="year.label">
      <element name="year">
         <ref name="year.role"/>
         <anyString/>
      </element>
   </define>
   <define name="year.role">
      <ref name="common.att.role"/>
   </define>
   <define name="copyright.label">
      <element name="copyright">
         <ref name="copyright.role"/>
         <oneOrMore>
            <ref name="hdr.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="copyright.role">
      <ref name="common.att.role"/>
   </define>
   <define name="notice.label">
      <element name="notice">
         <ref name="notice.role"/>
         <oneOrMore>
            <ref name="hdr.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="notice.role">
      <ref name="common.att.role"/>
   </define>
   <define name="publoc.label">
      <element name="publoc">
         <ref name="publoc.role"/>
         <oneOrMore>
            <ref name="loc.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="publoc.role">
      <ref name="common.att.role"/>
   </define>
   <define name="prevlocs.label">
      <element name="prevlocs">
         <ref name="prevlocs.role"/>
         <oneOrMore>
            <ref name="loc.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="prevlocs.role">
      <ref name="common.att.role"/>
   </define>
   <define name="latestloc.label">
      <element name="latestloc">
         <ref name="latestloc.role"/>
         <oneOrMore>
            <ref name="loc.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="latestloc.role">
      <ref name="common.att.role"/>
   </define>
   <define name="authlist.label">
      <element name="authlist">
         <ref name="authlist.role"/>
         <oneOrMore>
            <ref name="author.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="authlist.role">
      <ref name="common.att.role"/>
   </define>
   <define name="author.label">
      <element name="author">
         <ref name="author.role"/>
         <group>
            <ref name="name.label"/>
            <optional>
               <ref name="affiliation.label"/>
            </optional>
            <optional>
               <ref name="email.label"/>
            </optional>
         </group>
      </element>
   </define>
   <define name="author.role">
      <ref name="common.att.role"/>
   </define>
   <define name="name.label">
      <element name="name">
         <ref name="name.role"/>
         <anyString/>
      </element>
   </define>
   <define name="name.role">
      <ref name="common.att.role"/>
      <ref name="key.att.role"/>
   </define>
   <define name="affiliation.label">
      <element name="affiliation">
         <ref name="affiliation.role"/>
         <anyString/>
      </element>
   </define>
   <define name="affiliation.role">
      <ref name="common.att.role"/>
   </define>
   <define name="email.label">
      <element name="email">
         <ref name="email.role"/>
         <anyString/>
      </element>
   </define>
   <define name="email.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="href-req.att.role"/>
      <ref name="user-new.att.role"/>
   </define>
   <define name="status.label">
      <element name="status">
         <ref name="status.role"/>
         <oneOrMore>
            <ref name="obj.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="status.role">
      <ref name="common.att.role"/>
   </define>
   <define name="abstract.label">
      <element name="abstract">
         <ref name="abstract.role"/>
         <zeroOrMore>
            <ref name="hdr.mix.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="abstract.role">
      <ref name="common.att.role"/>
   </define>
   <define name="pubstmt.label">
      <element name="pubstmt">
         <ref name="pubstmt.role"/>
         <oneOrMore>
            <ref name="hdr.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="pubstmt.role">
      <ref name="common.att.role"/>
   </define>
   <define name="sourcedesc.label">
      <element name="sourcedesc">
         <ref name="sourcedesc.role"/>
         <oneOrMore>
            <ref name="hdr.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="sourcedesc.role">
      <ref name="common.att.role"/>
   </define>
   <define name="langusage.label">
      <element name="langusage">
         <ref name="langusage.role"/>
         <oneOrMore>
            <ref name="language.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="langusage.role">
      <ref name="common.att.role"/>
   </define>
   <define name="language.label">
      <element name="language">
         <ref name="language.role"/>
         <anyString/>
      </element>
   </define>
   <define name="language.role">
      <ref name="common.att.role"/>
   </define>
   <define name="revisiondesc.label">
      <element name="revisiondesc">
         <ref name="revisiondesc.role"/>
         <oneOrMore>
            <ref name="hdr.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="revisiondesc.role">
      <ref name="common.att.role"/>
   </define>
   <define name="p.label">
      <element name="p">
         <ref name="p.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="p.pcd.mix.label"/>
                  <ref name="p.mix.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="p.role">
      <ref name="common.att.role"/>
   </define>
   <define name="ulist.label">
      <element name="ulist">
         <ref name="ulist.role"/>
         <oneOrMore>
            <ref name="item.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="ulist.role">
      <ref name="common.att.role"/>
      <optional>
         <attribute name="spacing">
            <choice>
               <string>normal</string>
               <string>compact</string>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="olist.label">
      <element name="olist">
         <ref name="olist.role"/>
         <oneOrMore>
            <ref name="item.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="olist.role">
      <ref name="common.att.role"/>
      <optional>
         <attribute name="spacing">
            <choice>
               <string>normal</string>
               <string>compact</string>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="item.label">
      <element name="item">
         <ref name="item.role"/>
         <oneOrMore>
            <ref name="obj.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="item.role">
      <ref name="common.att.role"/>
   </define>
   <define name="slist.label">
      <element name="slist">
         <ref name="slist.role"/>
         <oneOrMore>
            <ref name="sitem.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="slist.role">
      <ref name="common.att.role"/>
   </define>
   <define name="sitem.label">
      <element name="sitem">
         <ref name="sitem.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="p.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="sitem.role">
      <ref name="common.att.role"/>
   </define>
   <define name="glist.label">
      <element name="glist">
         <ref name="glist.role"/>
         <oneOrMore>
            <ref name="gitem.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="glist.role">
      <ref name="common.att.role"/>
   </define>
   <define name="gitem.label">
      <element name="gitem">
         <ref name="gitem.role"/>
         <group>
            <ref name="label.label"/>
            <ref name="def.label"/>
         </group>
      </element>
   </define>
   <define name="gitem.role">
      <ref name="common.att.role"/>
   </define>
   <define name="label.label">
      <element name="label">
         <ref name="label.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="label.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="label.role">
      <ref name="common.att.role"/>
   </define>
   <define name="def.label">
      <element name="def">
         <ref name="def.role"/>
         <zeroOrMore>
            <ref name="obj.mix.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="def.role">
      <ref name="common.att.role"/>
   </define>
   <define name="blist.label">
      <element name="blist">
         <ref name="blist.role"/>
         <oneOrMore>
            <ref name="bibl.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="blist.role">
      <ref name="common.att.role"/>
   </define>
   <define name="bibl.label">
      <element name="bibl">
         <ref name="bibl.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="bibl.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="bibl.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="href.att.role"/>
      <ref name="user-replace.att.role"/>
      <ref name="key.att.role"/>
   </define>
   <define name="orglist.label">
      <element name="orglist">
         <ref name="orglist.role"/>
         <oneOrMore>
            <ref name="member.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="orglist.role">
      <ref name="common.att.role"/>
   </define>
   <define name="member.label">
      <element name="member">
         <ref name="member.role"/>
         <group>
            <ref name="name.label"/>
            <optional>
               <ref name="affiliation.label"/>
            </optional>
            <optional>
               <ref name="role.label"/>
            </optional>
         </group>
      </element>
   </define>
   <define name="member.role">
      <ref name="common.att.role"/>
   </define>
   <define name="role.label">
      <element name="role">
         <ref name="role.role"/>
         <anyString/>
      </element>
   </define>
   <define name="role.role">
      <ref name="common.att.role"/>
   </define>
   <define name="note.label">
      <element name="note">
         <ref name="note.role"/>
         <oneOrMore>
            <ref name="obj.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="note.role">
      <ref name="common.att.role"/>
   </define>
   <define name="issue.label">
      <element name="issue">
         <ref name="issue.role"/>
         <oneOrMore>
            <ref name="obj.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="issue.role">
      <ref name="common-idreq.att.role"/>
   </define>
   <define name="wfcnote.label">
      <element name="wfcnote">
         <ref name="wfcnote.role"/>
         <group>
            <ref name="head.label"/>
            <oneOrMore>
               <ref name="obj.mix.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="wfcnote.role">
      <ref name="common-idreq.att.role"/>
   </define>
   <define name="vcnote.label">
      <element name="vcnote">
         <ref name="vcnote.role"/>
         <group>
            <ref name="head.label"/>
            <oneOrMore>
               <ref name="obj.mix.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="vcnote.role">
      <ref name="common-idreq.att.role"/>
   </define>
   <define name="constraintnote.label">
      <element name="constraintnote">
         <ref name="constraintnote.role"/>
         <group>
            <ref name="head.label"/>
            <oneOrMore>
               <ref name="obj.mix.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="constraintnote.role">
      <ref name="common-idreq.att.role"/>
      <attribute name="type">
         <data type="xsd:NMTOKEN"/>
      </attribute>
   </define>
   <define name="eg.label">
      <element name="eg">
         <ref name="eg.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="eg.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="eg.role">
      <ref name="common.att.role"/>
      <ref name="xmlspace.att.role"/>
   </define>
   <define name="graphic.label">
      <element name="graphic">
         <ref name="graphic.role"/>
      </element>
   </define>
   <define name="graphic.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="auto-embed.att.role"/>
      <attribute name="source">
         <anyString/>
      </attribute>
      <optional>
         <attribute name="alt">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="scrap.label">
      <element name="scrap">
         <ref name="scrap.role"/>
         <group>
            <ref name="head.label"/>
            <oneOrMore>
               <choice>
                  <ref name="prodgroup.label"/>
                  <ref name="prod.label"/>
                  <ref name="bnf.label"/>
                  <ref name="prodrecap.label"/>
               </choice>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="scrap.role">
      <ref name="common.att.role"/>
      <optional>
         <attribute name="lang">
            <data type="xsd:IDREF"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="headstyle">
            <string>show</string>
         </attribute>
      </optional>
   </define>
   <define name="prodgroup.label">
      <element name="prodgroup">
         <ref name="prodgroup.role"/>
         <oneOrMore>
            <ref name="prod.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="prodgroup.role">
      <ref name="common.att.role"/>
      <optional>
         <attribute name="pcw1">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="pcw2">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="pcw3">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="pcw4">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="pcw5">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="prod.label">
      <element name="prod">
         <ref name="prod.role"/>
         <group>
            <ref name="lhs.label"/>
            <oneOrMore>
               <group>
                  <ref name="rhs.label"/>
                  <zeroOrMore>
                     <choice>
                        <ref name="com.label"/>
                        <ref name="wfc.label"/>
                        <ref name="vc.label"/>
                        <ref name="constraint.label"/>
                     </choice>
                  </zeroOrMore>
               </group>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="prod.role">
      <ref name="common-idreq.att.role"/>
   </define>
   <define name="lhs.label">
      <element name="lhs">
         <ref name="lhs.role"/>
         <anyString/>
      </element>
   </define>
   <define name="lhs.role">
      <ref name="common.att.role"/>
   </define>
   <define name="rhs.label">
      <element name="rhs">
         <ref name="rhs.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="nt.label"/>
                  <ref name="xnt.label"/>
                  <ref name="com.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="rhs.role">
      <ref name="common.att.role"/>
   </define>
   <define name="com.label">
      <element name="com">
         <ref name="com.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="loc.label"/>
                  <ref name="bibref.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="com.role">
      <ref name="common.att.role"/>
   </define>
   <define name="wfc.label">
      <element name="wfc">
         <ref name="wfc.role"/>
      </element>
   </define>
   <define name="wfc.role">
      <ref name="def-req.att.role"/>
      <ref name="common.att.role"/>
   </define>
   <define name="vc.label">
      <element name="vc">
         <ref name="vc.role"/>
      </element>
   </define>
   <define name="vc.role">
      <ref name="common.att.role"/>
      <ref name="def-req.att.role"/>
   </define>
   <define name="constraint.label">
      <element name="constraint">
         <ref name="constraint.role"/>
      </element>
   </define>
   <define name="constraint.role">
      <ref name="def-req.att.role"/>
      <ref name="common.att.role"/>
   </define>
   <define name="bnf.label">
      <element name="bnf">
         <ref name="bnf.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="eg.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="bnf.role">
      <ref name="xmlspace.att.role"/>
      <ref name="common.att.role"/>
   </define>
   <define name="prodrecap.label">
      <element name="prodrecap">
         <ref name="prodrecap.role"/>
      </element>
   </define>
   <define name="cellhalign.att.role">
      <optional>
         <attribute name="align">
            <choice>
               <string>left</string>
               <string>center</string>
               <string>right</string>
               <string>justify</string>
               <string>char</string>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="char">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="charoff">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="cellvalign.att.role">
      <optional>
         <attribute name="valign">
            <choice>
               <string>top</string>
               <string>middle</string>
               <string>bottom</string>
               <string>baseline</string>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="thtd.att.role">
      <optional>
         <attribute name="abbr">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="axis">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="headers">
            <data type="xsd:IDREFS"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="scope">
            <choice>
               <string>row</string>
               <string>col</string>
               <string>rowgroup</string>
               <string>colgroup</string>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="rowspan">
            <data type="xsd:NMTOKEN"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="colspan">
            <data type="xsd:NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="width.att.role">
      <optional>
         <attribute name="width">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="span.att.role">
      <optional>
         <attribute name="span">
            <data type="xsd:NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="prodrecap.role">
      <ref name="ref-req.att.role"/>
      <ref name="common.att.role"/>
   </define>
   <define name="table.label">
      <element name="table">
         <ref name="table.role"/>
         <group>
            <optional>
               <ref name="caption.label"/>
            </optional>
            <choice>
               <zeroOrMore>
                  <ref name="col.label"/>
               </zeroOrMore>
               <zeroOrMore>
                  <ref name="colgroup.label"/>
               </zeroOrMore>
            </choice>
            <optional>
               <ref name="thead.label"/>
            </optional>
            <optional>
               <ref name="tfoot.label"/>
            </optional>
            <oneOrMore>
               <ref name="tbody.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="table.role">
      <ref name="common.att.role"/>
      <ref name="width.att.role"/>
      <optional>
         <attribute name="summary">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="border">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="frame">
            <choice>
               <string>void</string>
               <string>above</string>
               <string>below</string>
               <string>hsides</string>
               <string>lhs</string>
               <string>rhs</string>
               <string>vsides</string>
               <string>box</string>
               <string>border</string>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="rules">
            <choice>
               <string>none</string>
               <string>groups</string>
               <string>rows</string>
               <string>cols</string>
               <string>all</string>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="cellspacing">
            <anyString/>
         </attribute>
      </optional>
      <optional>
         <attribute name="cellpadding">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="caption.label">
      <element name="caption">
         <ref name="caption.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="p.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="caption.role">
      <ref name="common.att.role"/>
   </define>
   <define name="col.label">
      <element name="col">
         <ref name="col.role"/>
      </element>
   </define>
   <define name="col.role">
      <ref name="common.att.role"/>
      <ref name="span.att.role"/>
      <ref name="width.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="colgroup.label">
      <element name="colgroup">
         <ref name="colgroup.role"/>
         <zeroOrMore>
            <ref name="col.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="colgroup.role">
      <ref name="common.att.role"/>
      <ref name="span.att.role"/>
      <ref name="width.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="thead.label">
      <element name="thead">
         <ref name="thead.role"/>
         <oneOrMore>
            <ref name="tr.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="thead.role">
      <ref name="common.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="tfoot.label">
      <element name="tfoot">
         <ref name="tfoot.role"/>
         <oneOrMore>
            <ref name="tr.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="tfoot.role">
      <ref name="common.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="tbody.label">
      <element name="tbody">
         <ref name="tbody.role"/>
         <oneOrMore>
            <ref name="tr.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="tbody.role">
      <ref name="common.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="tr.label">
      <element name="tr">
         <ref name="tr.role"/>
         <oneOrMore>
            <choice>
               <ref name="th.label"/>
               <ref name="td.label"/>
            </choice>
         </oneOrMore>
      </element>
   </define>
   <define name="tr.role">
      <ref name="common.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="th.label">
      <element name="th">
         <ref name="th.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="p.pcd.mix.label"/>
                  <ref name="p.mix.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="th.role">
      <ref name="common.att.role"/>
      <ref name="thtd.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="td.label">
      <element name="td">
         <ref name="td.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="p.pcd.mix.label"/>
                  <ref name="p.mix.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="td.role">
      <ref name="common.att.role"/>
      <ref name="thtd.att.role"/>
      <ref name="cellhalign.att.role"/>
      <ref name="cellvalign.att.role"/>
   </define>
   <define name="idl-desc.class.label">
      <choice>
         <ref name="p.label"/>
         <ref name="note.label"/>
      </choice>
   </define>
   <define name="idl-tdef.class.label">
      <choice>
         <ref name="typedef.label"/>
         <ref name="constant.label"/>
         <ref name="exception.label"/>
         <ref name="reference.label"/>
         <ref name="group.label"/>
      </choice>
   </define>
   <define name="idl-mod.class.label">
      <choice>
         <ref name="module.label"/>
         <ref name="interface.label"/>
      </choice>
   </define>
   <define name="idl-struct.class.label">
      <choice>
         <ref name="struct.label"/>
         <ref name="enum.label"/>
         <ref name="sequence.label"/>
         <ref name="union.label"/>
         <ref name="typename.label"/>
      </choice>
   </define>
   <define name="idl-meth.class.label">
      <choice>
         <ref name="method.label"/>
         <ref name="attribute.label"/>
      </choice>
   </define>
   <define name="idl-grp.mix.label">
      <choice>
         <ref name="idl-desc.class.label"/>
         <ref name="idl-tdef.class.label"/>
         <ref name="idl-mod.class.label"/>
         <ref name="idl-struct.class.label"/>
         <ref name="idl-meth.class.label"/>
      </choice>
   </define>
   <define name="idl-defn.mix.label">
      <choice>
         <ref name="idl-desc.class.label"/>
         <ref name="idl-tdef.class.label"/>
         <ref name="idl-mod.class.label"/>
      </choice>
   </define>
   <define name="idl-intfc.mix.label">
      <choice>
         <ref name="idl-desc.class.label"/>
         <ref name="idl-tdef.class.label"/>
         <ref name="idl-mod.class.label"/>
      </choice>
   </define>
   <define name="idl-type.mix.label">
      <ref name="idl-struct.class.label"/>
   </define>
   <define name="idl-name.att.role">
      <attribute name="name">
         <anyString/>
      </attribute>
   </define>
   <define name="idl-type.att.role">
      <attribute name="type">
         <anyString/>
      </attribute>
   </define>
   <define name="descr.label">
      <element name="descr">
         <ref name="descr.role"/>
         <zeroOrMore>
            <ref name="obj.mix.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="descr.role">
      <ref name="common.att.role"/>
   </define>
   <define name="definitions.label">
      <element name="definitions">
         <ref name="definitions.role"/>
         <oneOrMore>
            <ref name="idl-defn.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="definitions.role">
      <ref name="common.att.role"/>
   </define>
   <define name="group.label">
      <element name="group">
         <ref name="group.role"/>
         <group>
            <ref name="descr.label"/>
            <zeroOrMore>
               <ref name="idl-grp.mix.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="group.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="interface.label">
      <element name="interface">
         <ref name="interface.role"/>
         <group>
            <ref name="descr.label"/>
            <zeroOrMore>
               <ref name="idl-intfc.mix.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="interface.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
      <optional>
         <attribute name="inherits">
            <anyString/>
         </attribute>
      </optional>
   </define>
   <define name="module.label">
      <element name="module">
         <ref name="module.role"/>
         <group>
            <ref name="descr.label"/>
            <zeroOrMore>
               <ref name="idl-defn.mix.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="module.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="reference.label">
      <element name="reference">
         <ref name="reference.role"/>
      </element>
   </define>
   <define name="reference.role">
      <ref name="common.att.role"/>
      <attribute name="declaration">
         <data type="xsd:IDREF"/>
      </attribute>
   </define>
   <define name="typedef.label">
      <element name="typedef">
         <ref name="typedef.role"/>
         <group>
            <ref name="descr.label"/>
            <ref name="idl-type.mix.label"/>
         </group>
      </element>
   </define>
   <define name="typedef.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
      <optional>
         <attribute name="array.size">
            <data type="xsd:NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="struct.label">
      <element name="struct">
         <ref name="struct.role"/>
         <group>
            <ref name="descr.label"/>
            <oneOrMore>
               <ref name="component.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="struct.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="component.label">
      <element name="component">
         <ref name="component.role"/>
         <ref name="idl-type.mix.label"/>
      </element>
   </define>
   <define name="component.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="union.label">
      <element name="union">
         <ref name="union.role"/>
         <group>
            <ref name="descr.label"/>
            <oneOrMore>
               <ref name="case.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="union.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
      <attribute name="switch.type">
         <anyString/>
      </attribute>
   </define>
   <define name="case.label">
      <element name="case">
         <ref name="case.role"/>
         <group>
            <ref name="descr.label"/>
            <ref name="idl-type.mix.label"/>
         </group>
      </element>
   </define>
   <define name="case.role">
      <ref name="common.att.role"/>
      <attribute name="labels">
         <anyString/>
      </attribute>
   </define>
   <define name="enum.label">
      <element name="enum">
         <ref name="enum.role"/>
         <group>
            <ref name="descr.label"/>
            <oneOrMore>
               <ref name="enumerator.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="enum.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="enumerator.label">
      <element name="enumerator">
         <ref name="enumerator.role"/>
         <ref name="descr.label"/>
      </element>
   </define>
   <define name="enumerator.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="sequence.label">
      <element name="sequence">
         <ref name="sequence.role"/>
         <zeroOrMore>
            <ref name="sequence.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="sequence.role">
      <ref name="common.att.role"/>
      <ref name="idl-type.att.role"/>
      <optional>
         <attribute name="size">
            <data type="xsd:NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="constant.label">
      <element name="constant">
         <ref name="constant.role"/>
         <ref name="descr.label"/>
      </element>
   </define>
   <define name="constant.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
      <ref name="idl-type.att.role"/>
      <attribute name="value">
         <anyString/>
      </attribute>
   </define>
   <define name="exception.label">
      <element name="exception">
         <ref name="exception.role"/>
         <group>
            <ref name="descr.label"/>
            <zeroOrMore>
               <ref name="component.label"/>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="exception.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="attribute.label">
      <element name="attribute">
         <ref name="attribute.role"/>
         <ref name="descr.label"/>
      </element>
   </define>
   <define name="attribute.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
      <ref name="idl-type.att.role"/>
      <optional>
         <attribute name="readonly">
            <choice>
               <string>yes</string>
               <string>no</string>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="method.label">
      <element name="method">
         <ref name="method.role"/>
         <group>
            <ref name="descr.label"/>
            <ref name="parameters.label"/>
            <ref name="returns.label"/>
            <ref name="raises.label"/>
         </group>
      </element>
   </define>
   <define name="method.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
   </define>
   <define name="parameters.label">
      <element name="parameters">
         <ref name="parameters.role"/>
         <zeroOrMore>
            <ref name="param.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="parameters.role">
      <ref name="common.att.role"/>
   </define>
   <define name="param.label">
      <element name="param">
         <ref name="param.role"/>
         <ref name="descr.label"/>
      </element>
   </define>
   <define name="param.role">
      <ref name="common.att.role"/>
      <ref name="idl-name.att.role"/>
      <ref name="idl-type.att.role"/>
      <optional>
         <attribute name="attr">
            <choice>
               <string>in</string>
               <string>out</string>
               <string>inout</string>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="returns.label">
      <element name="returns">
         <ref name="returns.role"/>
         <ref name="descr.label"/>
      </element>
   </define>
   <define name="returns.role">
      <ref name="common.att.role"/>
      <ref name="idl-type.att.role"/>
   </define>
   <define name="raises.label">
      <element name="raises">
         <ref name="raises.role"/>
         <zeroOrMore>
            <ref name="exception.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="raises.role">
      <empty/>
   </define>
   <define name="typename.label">
      <element name="typename">
         <ref name="typename.role"/>
         <anyString/>
      </element>
   </define>
   <define name="typename.role">
      <ref name="common.att.role"/>
   </define>
   <define name="bibref.label">
      <element name="bibref">
         <ref name="bibref.role"/>
      </element>
   </define>
   <define name="bibref.role">
      <ref name="common.att.role"/>
      <ref name="ref-req.att.role"/>
   </define>
   <define name="code.label">
      <element name="code">
         <ref name="code.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="tech.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="code.role">
      <ref name="common.att.role"/>
   </define>
   <define name="ednote.label">
      <element name="ednote">
         <ref name="ednote.role"/>
         <group>
            <optional>
               <ref name="name.label"/>
            </optional>
            <optional>
               <ref name="date.label"/>
            </optional>
            <ref name="edtext.label"/>
         </group>
      </element>
   </define>
   <define name="ednote.role">
      <ref name="common.att.role"/>
   </define>
   <define name="date.label">
      <element name="date">
         <ref name="date.role"/>
         <anyString/>
      </element>
   </define>
   <define name="date.role">
      <ref name="common.att.role"/>
   </define>
   <define name="edtext.label">
      <element name="edtext">
         <ref name="edtext.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="p.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="edtext.role">
      <ref name="common.att.role"/>
   </define>
   <define name="emph.label">
      <element name="emph">
         <ref name="emph.role"/>
         <anyString/>
      </element>
   </define>
   <define name="emph.role">
      <ref name="common.att.role"/>
   </define>
   <define name="footnote.label">
      <element name="footnote">
         <ref name="footnote.role"/>
         <oneOrMore>
            <ref name="obj.mix.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="footnote.role">
      <ref name="common.att.role"/>
   </define>
   <define name="kw.label">
      <element name="kw">
         <ref name="kw.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="tech.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="kw.role">
      <ref name="common.att.role"/>
   </define>
   <define name="loc.label">
      <element name="loc">
         <ref name="loc.role"/>
         <anyString/>
      </element>
   </define>
   <define name="loc.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="href-req.att.role"/>
      <ref name="user-replace.att.role"/>
   </define>
   <define name="nt.label">
      <element name="nt">
         <ref name="nt.role"/>
         <anyString/>
      </element>
   </define>
   <define name="nt.role">
      <ref name="common.att.role"/>
      <ref name="def-req.att.role"/>
   </define>
   <define name="quote.label">
      <element name="quote">
         <ref name="quote.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="p.pcd.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="quote.role">
      <ref name="common.att.role"/>
   </define>
   <define name="specref.label">
      <element name="specref">
         <ref name="specref.role"/>
      </element>
   </define>
   <define name="specref.role">
      <ref name="common.att.role"/>
      <ref name="ref-req.att.role"/>
   </define>
   <define name="term.label">
      <element name="term">
         <ref name="term.role"/>
         <anyString/>
      </element>
   </define>
   <define name="term.role">
      <ref name="common.att.role"/>
   </define>
   <define name="termdef.label">
      <element name="termdef">
         <ref name="termdef.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="termdef.pcd.mix.label"/>
                  <ref name="termdef.mix.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="termdef.role">
      <ref name="common-idreq.att.role"/>
      <attribute name="term">
         <anyString/>
      </attribute>
   </define>
   <define name="termref.label">
      <element name="termref">
         <ref name="termref.role"/>
         <anyString/>
      </element>
   </define>
   <define name="termref.role">
      <ref name="common.att.role"/>
      <ref name="def-req.att.role"/>
   </define>
   <define name="titleref.label">
      <element name="titleref">
         <ref name="titleref.role"/>
         <anyString/>
      </element>
   </define>
   <define name="titleref.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="href.att.role"/>
      <ref name="user-new.att.role"/>
   </define>
   <define name="xnt.label">
      <element name="xnt">
         <ref name="xnt.role"/>
         <anyString/>
      </element>
   </define>
   <define name="xnt.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="href-req.att.role"/>
      <ref name="user-new.att.role"/>
   </define>
   <define name="xspecref.label">
      <element name="xspecref">
         <ref name="xspecref.role"/>
         <anyString/>
      </element>
   </define>
   <define name="xspecref.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="href-req.att.role"/>
      <ref name="user-new.att.role"/>
   </define>
   <define name="xtermref.label">
      <element name="xtermref">
         <ref name="xtermref.role"/>
         <anyString/>
      </element>
   </define>
   <define name="xtermref.role">
      <ref name="common.att.role"/>
      <ref name="simple-xlink.att.role"/>
      <ref name="href-req.att.role"/>
      <ref name="user-new.att.role"/>
   </define>
   <define name="div.label">
      <element name="div">
         <ref name="div.role"/>
         <group>
            <optional>
               <ref name="head.label"/>
            </optional>
            <zeroOrMore>
               <choice>
                  <ref name="div.mix.label"/>
                  <ref name="ul.label"/>
                  <ref name="ol.label"/>
                  <ref name="h1.label"/>
                  <ref name="h2.label"/>
                  <ref name="h3.label"/>
                  <ref name="h4.label"/>
                  <ref name="h5.label"/>
                  <ref name="h6.label"/>
                  <ref name="div.label"/>
               </choice>
            </zeroOrMore>
         </group>
      </element>
   </define>
   <define name="div.role">
      <empty/>
   </define>
   <define name="h1.label">
      <element name="h1">
         <ref name="h1.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="head.pcd.mix.label"/>
                  <ref name="em.label"/>
                  <ref name="a.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="h1.role">
      <empty/>
   </define>
   <define name="h2.label">
      <element name="h2">
         <ref name="h2.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="head.pcd.mix.label"/>
                  <ref name="em.label"/>
                  <ref name="a.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="h2.role">
      <empty/>
   </define>
   <define name="h3.label">
      <element name="h3">
         <ref name="h3.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="head.pcd.mix.label"/>
                  <ref name="em.label"/>
                  <ref name="a.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="h3.role">
      <empty/>
   </define>
   <define name="h4.label">
      <element name="h4">
         <ref name="h4.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="head.pcd.mix.label"/>
                  <ref name="em.label"/>
                  <ref name="a.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="h4.role">
      <empty/>
   </define>
   <define name="h5.label">
      <element name="h5">
         <ref name="h5.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="head.pcd.mix.label"/>
                  <ref name="em.label"/>
                  <ref name="a.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="h5.role">
      <empty/>
   </define>
   <define name="h6.label">
      <element name="h6">
         <ref name="h6.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="head.pcd.mix.label"/>
                  <ref name="em.label"/>
                  <ref name="a.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="h6.role">
      <empty/>
   </define>
   <define name="pre.label">
      <element name="pre">
         <ref name="pre.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="eg.pcd.mix.label"/>
                  <ref name="em.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="pre.role">
      <empty/>
   </define>
   <define name="ul.label">
      <element name="ul">
         <ref name="ul.role"/>
         <zeroOrMore>
            <choice>
               <ref name="item.label"/>
               <ref name="li.label"/>
            </choice>
         </zeroOrMore>
      </element>
   </define>
   <define name="ul.role">
      <empty/>
   </define>
   <define name="ol.label">
      <element name="ol">
         <ref name="ol.role"/>
         <zeroOrMore>
            <choice>
               <ref name="item.label"/>
               <ref name="li.label"/>
            </choice>
         </zeroOrMore>
      </element>
   </define>
   <define name="ol.role">
      <empty/>
   </define>
   <define name="li.label">
      <element name="li">
         <ref name="li.role"/>
         <mixed>
            <zeroOrMore>
               <ref name="obj.mix.label"/>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="li.role">
      <empty/>
   </define>
   <define name="em.label">
      <element name="em">
         <ref name="em.role"/>
         <anyString/>
      </element>
   </define>
   <define name="em.role">
      <empty/>
   </define>
   <define name="a.label">
      <element name="a">
         <ref name="a.role"/>
         <anyString/>
      </element>
   </define>
   <define name="a.role">
      <empty/>
   </define>
   <define name="key-term.label">
      <element name="key-term">
         <ref name="key-term.role"/>
         <anyString/>
      </element>
   </define>
   <define name="key-term.role">
      <empty/>
   </define>
   <define name="htable.label">
      <element name="htable">
         <ref name="htable.role"/>
         <group>
            <optional>
               <ref name="caption.label"/>
            </optional>
            <choice>
               <zeroOrMore>
                  <ref name="col.label"/>
               </zeroOrMore>
               <zeroOrMore>
                  <ref name="colgroup.label"/>
               </zeroOrMore>
            </choice>
            <optional>
               <ref name="thead.label"/>
            </optional>
            <optional>
               <ref name="tfoot.label"/>
            </optional>
            <oneOrMore>
               <ref name="tbody.label"/>
            </oneOrMore>
         </group>
      </element>
   </define>
   <define name="htable.role">
      <empty/>
   </define>
   <define name="htbody.label">
      <element name="htbody">
         <ref name="htbody.role"/>
         <oneOrMore>
            <ref name="tr.label"/>
         </oneOrMore>
      </element>
   </define>
   <define name="htbody.role">
      <empty/>
   </define>
   <define name="statusp.label">
      <element name="statusp">
         <ref name="statusp.role"/>
         <mixed>
            <zeroOrMore>
               <choice>
                  <ref name="p.pcd.mix.label"/>
                  <ref name="p.mix.label"/>
               </choice>
            </zeroOrMore>
         </mixed>
      </element>
   </define>
   <define name="statusp.role">
      <empty/>
   </define>
   <define name="itemizedlist.label">
      <element name="itemizedlist">
         <ref name="itemizedlist.role"/>
         <zeroOrMore>
            <ref name="listitem.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="itemizedlist.role">
      <empty/>
   </define>
   <define name="orderedlist.label">
      <element name="orderedlist">
         <ref name="orderedlist.role"/>
         <zeroOrMore>
            <ref name="listitem.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="orderedlist.role">
      <empty/>
   </define>
   <define name="listitem.label">
      <element name="listitem">
         <ref name="listitem.role"/>
         <zeroOrMore>
            <ref name="para.label"/>
         </zeroOrMore>
      </element>
   </define>
   <define name="listitem.role">
      <empty/>
   </define>
   <define name="para.label">
      <element name="para">
         <ref name="para.role"/>
         <anyString/>
      </element>
   </define>
   <define name="para.role">
      <empty/>
   </define>
</grammar>