<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xlink="http://www.w3.org/1999/xlink">
  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
  <!-- $Id: xmlspec.xsd,v 1.1 2003/09/29 10:56:59 NormanWalsh Exp $ -->
  <!-- ====================================================================== -->
  <xs:group name="p.class">
    <xs:sequence>
      <xs:element ref="p"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="list.class" abstract="true"/>
  <xs:element name="speclist.class" abstract="true"/>
  <xs:element name="note.class" abstract="true"/>
  <xs:element name="illus.class" abstract="true"/>
  <xs:element name="annot.class" abstract="true">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      <xs:attributeGroup ref="attlist.footnote"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="termdef.class" abstract="true"/>
  <xs:element name="emph.class" abstract="true"/>
  <xs:element name="ref.class" abstract="true"/>
  <xs:element name="loc.class" abstract="true">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.loc"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="tech.class" abstract="true"/>
  <xs:element name="ednote.class" abstract="true">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="name"/>
        <xs:element minOccurs="0" ref="date"/>
        <xs:element ref="edtext"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.ednote"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="div.mix">
    <xs:choice>
      <xs:group ref="p.class"/>
      <xs:element ref="list.class"/>
      <xs:element ref="speclist.class"/>
      <xs:element ref="note.class"/>
      <xs:element ref="illus.class"/>
      <xs:element ref="ednote.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="obj.mix">
    <xs:choice>
      <xs:group ref="p.class"/>
      <xs:element ref="list.class"/>
      <xs:element ref="speclist.class"/>
      <xs:element ref="note.class"/>
      <xs:element ref="illus.class"/>
      <xs:element ref="ednote.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="p.mix">
    <xs:choice>
      <xs:element ref="list.class"/>
      <xs:element ref="speclist.class"/>
      <xs:element ref="note.class"/>
      <xs:element ref="illus.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="hdr.mix">
    <xs:choice>
      <xs:group ref="p.class"/>
      <xs:element ref="list.class"/>
      <xs:element ref="ednote.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="termdef.mix">
    <xs:choice>
      <xs:element ref="note.class"/>
      <xs:element ref="illus.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="p.pcd.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="annot.class"/>
        <xs:element ref="termdef.class"/>
        <xs:element ref="emph.class"/>
        <xs:element ref="ref.class"/>
        <xs:element ref="tech.class"/>
        <xs:element ref="loc.class"/>
        <xs:element ref="ednote.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="head.pcd.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="annot.class"/>
        <xs:element ref="emph.class"/>
        <xs:element ref="tech.class"/>
        <xs:element ref="loc.class"/>
        <xs:element ref="ednote.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="label.pcd.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="annot.class"/>
        <xs:element ref="termdef.class"/>
        <xs:element ref="emph.class"/>
        <xs:element ref="tech.class"/>
        <xs:element ref="loc.class"/>
        <xs:element ref="ednote.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="eg.pcd.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="annot.class"/>
        <xs:element ref="emph.class"/>
        <xs:element ref="loc.class"/>
        <xs:element ref="ednote.class"/>
        <xs:element ref="constraint"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="termdef.pcd.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="term"/>
        <xs:element ref="emph.class"/>
        <xs:element ref="ref.class"/>
        <xs:element ref="tech.class"/>
        <xs:element ref="loc.class"/>
        <xs:element ref="ednote.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="bibl.pcd.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="emph.class"/>
        <xs:element ref="ref.class"/>
        <xs:element ref="loc.class"/>
        <xs:element ref="ednote.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="tech.pcd.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="loc.class"/>
        <xs:element ref="ednote.class"/>
        <xs:element ref="phrase"/>
        <xs:element ref="rfc2119"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="spec.mdl">
    <xs:sequence>
      <xs:element ref="header"/>
      <xs:element minOccurs="0" ref="front"/>
      <xs:element ref="body"/>
      <xs:element minOccurs="0" ref="back"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="header.mdl">
    <xs:sequence>
      <xs:element ref="title"/>
      <xs:element minOccurs="0" ref="subtitle"/>
      <xs:element minOccurs="0" ref="version"/>
      <xs:element ref="w3c-designation"/>
      <xs:element ref="w3c-doctype"/>
      <xs:element ref="pubdate"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="notice"/>
      <xs:element ref="publoc"/>
      <xs:element minOccurs="0" ref="altlocs"/>
      <xs:choice minOccurs="0">
        <xs:sequence>
          <xs:element ref="prevlocs"/>
          <xs:element minOccurs="0" ref="latestloc"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="latestloc"/>
          <xs:element minOccurs="0" ref="prevlocs"/>
        </xs:sequence>
      </xs:choice>
      <xs:element ref="authlist"/>
      <xs:element minOccurs="0" ref="errataloc"/>
      <xs:element minOccurs="0" ref="preverrataloc"/>
      <xs:element minOccurs="0" ref="translationloc"/>
      <xs:element minOccurs="0" ref="copyright"/>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="status"/>
          <xs:element ref="abstract"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="abstract"/>
          <xs:element ref="status"/>
        </xs:sequence>
      </xs:choice>
      <xs:element minOccurs="0" ref="pubstmt"/>
      <xs:element minOccurs="0" ref="sourcedesc"/>
      <xs:element ref="langusage"/>
      <xs:element ref="revisiondesc"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="pubdate.mdl">
    <xs:sequence>
      <xs:element minOccurs="0" ref="day"/>
      <xs:element ref="month"/>
      <xs:element ref="year"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="argtypes">
    <xs:restriction base="xs:token">
      <xs:enumeration value="boolean"/>
      <xs:enumeration value="expression"/>
      <xs:enumeration value="location-set"/>
      <xs:enumeration value="node-set"/>
      <xs:enumeration value="number"/>
      <xs:enumeration value="object"/>
      <xs:enumeration value="point"/>
      <xs:enumeration value="range"/>
      <xs:enumeration value="string"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:attributeGroup name="key.att">
    <xs:attribute name="key"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="def-req.att">
    <xs:attribute name="def" use="required" type="xs:IDREF"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="ref-req.att">
    <xs:attribute name="ref" use="required" type="xs:IDREF"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="simple-xlink.att">
    <xs:attribute ref="xlink:type" default="simple"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="href.att">
    <xs:attribute name="href"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="href-req.att">
    <xs:attribute name="href" use="required"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="auto-embed.att">
    <xs:attributeGroup ref="xlink:show"/>
    <xs:attributeGroup ref="xlink:actuate"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="user-replace.att">
    <xs:attributeGroup ref="xlink:show1"/>
    <xs:attributeGroup ref="xlink:actuate1"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="user-new.att">
    <xs:attributeGroup ref="xlink:show2"/>
    <xs:attributeGroup ref="xlink:actuate1"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="xmlspace.att">
    <xs:attribute ref="xml:space" default="preserve"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="diff.att">
    <xs:attribute name="diff">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="chg"/>
          <xs:enumeration value="add"/>
          <xs:enumeration value="del"/>
          <xs:enumeration value="off"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="role.att">
    <xs:attribute name="role" type="xs:NMTOKEN"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="common.att">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attributeGroup ref="role.att"/>
    <xs:attributeGroup ref="diff.att"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="common-idreq.att">
    <xs:attribute name="id" use="required" type="xs:ID"/>
    <xs:attributeGroup ref="role.att"/>
    <xs:attributeGroup ref="diff.att"/>
  </xs:attributeGroup>
  <xs:element name="head">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="head.pcd.mix"/>
      <xs:attributeGroup ref="attlist.head"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.head">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="spec">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="spec.mdl">
          <xs:attributeGroup ref="attlist.spec"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.spec">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="w3c-doctype">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="cr"/>
          <xs:enumeration value="dispcmts"/>
          <xs:enumeration value="issues"/>
          <xs:enumeration value="note"/>
          <xs:enumeration value="other"/>
          <xs:enumeration value="pr"/>
          <xs:enumeration value="rec"/>
          <xs:enumeration value="wd"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="other-doctype"/>
    <xs:attribute name="status">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="int-review"/>
          <xs:enumeration value="ext-review"/>
          <xs:enumeration value="final"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="front">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="div1"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.front"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.front">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="body">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="div1"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.body"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.body">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="back">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element maxOccurs="unbounded" ref="div1"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="inform-div1"/>
        </xs:sequence>
        <xs:element maxOccurs="unbounded" ref="inform-div1"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.back"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.back">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="div1">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="div.mix"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="div2"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.div1"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.div1">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="inform-div1">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="div.mix"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="div2"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.inform-div1"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.inform-div1">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="div2">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="div.mix"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="div3"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.div2"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.div2">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="div3">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="div.mix"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="div4"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.div3"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.div3">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="div4">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="div.mix"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="div5"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.div4"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.div4">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="div5">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="div.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.div5"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.div5">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="header">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="header.mdl">
          <xs:attributeGroup ref="attlist.header"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.header">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="title">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.title"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.title">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="subtitle">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.subtitle"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.subtitle">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="version">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.version"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.version">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="w3c-designation">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.w3c-designation"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.w3c-designation">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="w3c-doctype">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.w3c-doctype"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.w3c-doctype">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="pubdate">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="pubdate.mdl">
          <xs:attributeGroup ref="attlist.pubdate"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.pubdate">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="day">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.day"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.day">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="month">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.month"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.month">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="year">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.year"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.year">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="copyright">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="hdr.mix"/>
      <xs:attributeGroup ref="attlist.copyright"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.copyright">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="notice">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="hdr.mix"/>
      <xs:attributeGroup ref="attlist.notice"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.notice">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="publoc">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.publoc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.publoc">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="altlocs">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="loc"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.altlocs"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.altlocs">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="prevlocs">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.prevlocs"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.prevlocs">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="latestloc">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.latestloc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.latestloc">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="errataloc">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.errataloc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.errataloc">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
  </xs:attributeGroup>
  <xs:element name="preverrataloc">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.preverrataloc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.preverrataloc">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
  </xs:attributeGroup>
  <xs:element name="translationloc">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.translationloc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.translationloc">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
  </xs:attributeGroup>
  <xs:element name="authlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="author"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.authlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.authlist">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="author">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name"/>
        <xs:element minOccurs="0" ref="affiliation"/>
        <xs:element minOccurs="0" ref="email"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.author"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.author">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="name">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.name"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.name">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="key.att"/>
  </xs:attributeGroup>
  <xs:element name="affiliation">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.affiliation"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.affiliation">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="email">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.email"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.email">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
    <xs:attributeGroup ref="user-new.att"/>
  </xs:attributeGroup>
  <xs:element name="status">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      <xs:attributeGroup ref="attlist.status"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.status">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="abstract">
    <xs:complexType>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="hdr.mix"/>
      <xs:attributeGroup ref="attlist.abstract"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.abstract">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="pubstmt">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="hdr.mix"/>
      <xs:attributeGroup ref="attlist.pubstmt"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.pubstmt">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="sourcedesc">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="hdr.mix"/>
      <xs:attributeGroup ref="attlist.sourcedesc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sourcedesc">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="langusage">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="language"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.langusage"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.langusage">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="language">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.language"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.language">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="revisiondesc">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="hdr.mix"/>
      <xs:attributeGroup ref="attlist.revisiondesc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.revisiondesc">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="p">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="p.pcd.mix"/>
        <xs:group ref="p.mix"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.p"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.p">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="ulist" substitutionGroup="list.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="item"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.ulist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.ulist">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="spacing">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="compact"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="olist" substitutionGroup="list.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="item"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.olist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.olist">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="spacing">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="compact"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="item">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      <xs:attributeGroup ref="attlist.item"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.item">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="slist" substitutionGroup="list.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="sitem"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.slist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.slist">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="sitem">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.sitem"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sitem">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="glist" substitutionGroup="list.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="gitem"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.glist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.glist">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="gitem">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="label"/>
        <xs:element ref="def"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.gitem"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.gitem">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="label">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="label.pcd.mix"/>
      <xs:attributeGroup ref="attlist.label"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.label">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="def">
    <xs:complexType>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="obj.mix"/>
      <xs:attributeGroup ref="attlist.def"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.def">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="blist" substitutionGroup="speclist.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="bibl"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.blist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.blist">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="bibl">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="bibl.pcd.mix"/>
      <xs:attributeGroup ref="attlist.bibl"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.bibl">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href.att"/>
    <xs:attributeGroup ref="user-replace.att"/>
    <xs:attributeGroup ref="key.att"/>
  </xs:attributeGroup>
  <xs:element name="orglist" substitutionGroup="speclist.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="member"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.orglist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.orglist">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="member">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name"/>
        <xs:element minOccurs="0" ref="affiliation"/>
        <xs:element minOccurs="0" ref="role"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.member"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.member">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="role">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.role"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.role">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="note" substitutionGroup="note.class">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      <xs:attributeGroup ref="attlist.note"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.note">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="issue" substitutionGroup="note.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="head"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="source"/>
        <xs:group maxOccurs="unbounded" ref="obj.mix"/>
        <xs:element minOccurs="0" ref="resolution"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.issue"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.issue">
    <xs:attribute name="id" use="required" type="xs:ID"/>
    <xs:attributeGroup ref="role.att"/>
    <xs:attributeGroup ref="diff.att"/>
    <xs:attribute name="status" default="open">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="open"/>
          <xs:enumeration value="closed"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="source">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.source"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.source">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="resolution">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      <xs:attributeGroup ref="attlist.resolution"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.resolution">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="wfcnote" substitutionGroup="note.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.wfcnote"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.wfcnote">
    <xs:attributeGroup ref="common-idreq.att"/>
  </xs:attributeGroup>
  <xs:element name="vcnote" substitutionGroup="note.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.vcnote"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.vcnote">
    <xs:attributeGroup ref="common-idreq.att"/>
  </xs:attributeGroup>
  <xs:element name="constraintnote" substitutionGroup="note.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.constraintnote"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.constraintnote">
    <xs:attributeGroup ref="common-idreq.att"/>
    <xs:attribute name="type" use="required" type="xs:NMTOKEN"/>
  </xs:attributeGroup>
  <xs:element name="eg" substitutionGroup="illus.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="eg.pcd.mix"/>
      <xs:attributeGroup ref="attlist.eg"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.eg">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="xmlspace.att"/>
  </xs:attributeGroup>
  <xs:element name="graphic" substitutionGroup="illus.class">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.graphic"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.graphic">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attribute name="source" use="required"/>
    <xs:attributeGroup ref="auto-embed.att"/>
    <xs:attribute name="alt"/>
  </xs:attributeGroup>
  <xs:element name="proto" substitutionGroup="illus.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="arg"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.proto"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.proto">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="name" use="required" type="xs:NMTOKEN"/>
    <xs:attribute name="return-type" use="required" type="argtypes"/>
  </xs:attributeGroup>
  <xs:element name="arg">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.arg"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.arg">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="type" use="required" type="argtypes"/>
    <xs:attribute name="occur">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="opt"/>
          <xs:enumeration value="req"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="example" substitutionGroup="illus.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="head"/>
        <xs:group maxOccurs="unbounded" ref="obj.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.example"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.example">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="scrap" substitutionGroup="illus.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="head"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="prodgroup"/>
          <xs:element ref="prod"/>
          <xs:element ref="bnf"/>
          <xs:element ref="prodrecap"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.scrap"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.scrap">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="lang" type="xs:IDREF"/>
    <xs:attribute name="headstyle" default="show">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="show"/>
          <xs:enumeration value="suppress"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="prodgroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="prod"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.prodgroup"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.prodgroup">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="pcw1"/>
    <xs:attribute name="pcw2"/>
    <xs:attribute name="pcw3"/>
    <xs:attribute name="pcw4"/>
    <xs:attribute name="pcw5"/>
  </xs:attributeGroup>
  <xs:element name="prod">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="lhs"/>
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="rhs"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="com"/>
            <xs:element ref="wfc"/>
            <xs:element ref="vc"/>
            <xs:element ref="constraint"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.prod"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.prod">
    <xs:attributeGroup ref="common-idreq.att"/>
    <xs:attribute name="num"/>
  </xs:attributeGroup>
  <xs:element name="lhs">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.lhs"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.lhs">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="rhs">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="phrase"/>
        <xs:element ref="nt"/>
        <xs:element ref="xnt"/>
        <xs:element ref="com"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.rhs"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.rhs">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="com">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="phrase"/>
        <xs:element ref="loc"/>
        <xs:element ref="bibref"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.com"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.com">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="wfc">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.wfc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.wfc">
    <xs:attributeGroup ref="def-req.att"/>
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="vc">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.vc"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.vc">
    <xs:attributeGroup ref="def-req.att"/>
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="constraint">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.constraint"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.constraint">
    <xs:attributeGroup ref="def-req.att"/>
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="bnf">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="eg.pcd.mix"/>
      <xs:attributeGroup ref="attlist.bnf"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.bnf">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="xmlspace.att"/>
  </xs:attributeGroup>
  <xs:element name="prodrecap">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.prodrecap"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.prodrecap">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="ref-req.att"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="cellhalign.att">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="left"/>
          <xs:enumeration value="center"/>
          <xs:enumeration value="right"/>
          <xs:enumeration value="justify"/>
          <xs:enumeration value="char"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="char"/>
    <xs:attribute name="charoff"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="cellvalign.att">
    <xs:attribute name="valign">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="baseline"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="thtd.att">
    <xs:attribute name="abbr"/>
    <xs:attribute name="axis"/>
    <xs:attribute name="headers" type="xs:IDREFS"/>
    <xs:attribute name="scope">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="row"/>
          <xs:enumeration value="col"/>
          <xs:enumeration value="rowgroup"/>
          <xs:enumeration value="colgroup"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="rowspan" default="1" type="xs:NMTOKEN"/>
    <xs:attribute name="colspan" default="1" type="xs:NMTOKEN"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="width.att">
    <xs:attribute name="width"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="span.att">
    <xs:attribute name="span" default="1" type="xs:NMTOKEN"/>
  </xs:attributeGroup>
  <xs:element name="table" substitutionGroup="illus.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="caption"/>
        <xs:choice>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
        </xs:choice>
        <xs:element minOccurs="0" ref="thead"/>
        <xs:element minOccurs="0" ref="tfoot"/>
        <xs:element maxOccurs="unbounded" ref="tbody"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.table"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.table">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="width.att"/>
    <xs:attribute name="summary"/>
    <xs:attribute name="border"/>
    <xs:attribute name="frame">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="void"/>
          <xs:enumeration value="above"/>
          <xs:enumeration value="below"/>
          <xs:enumeration value="hsides"/>
          <xs:enumeration value="lhs"/>
          <xs:enumeration value="rhs"/>
          <xs:enumeration value="vsides"/>
          <xs:enumeration value="box"/>
          <xs:enumeration value="border"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="rules">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="none"/>
          <xs:enumeration value="groups"/>
          <xs:enumeration value="rows"/>
          <xs:enumeration value="cols"/>
          <xs:enumeration value="all"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cellspacing"/>
    <xs:attribute name="cellpadding"/>
  </xs:attributeGroup>
  <xs:element name="caption">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.caption"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.caption">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="col">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.col"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.col">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="span.att"/>
    <xs:attributeGroup ref="width.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:element name="colgroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.colgroup"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.colgroup">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="span.att"/>
    <xs:attributeGroup ref="width.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:element name="thead">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="tr"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.thead"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.thead">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:element name="tfoot">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="tr"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.tfoot"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.tfoot">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:element name="tbody">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="tr"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.tbody"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.tbody">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:element name="tr">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="th"/>
        <xs:element ref="td"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.tr"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.tr">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:element name="th">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="p.pcd.mix"/>
        <xs:group ref="p.mix"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.th"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.th">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="thtd.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:element name="td">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="p.pcd.mix"/>
        <xs:group ref="p.mix"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.td"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.td">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="thtd.att"/>
    <xs:attributeGroup ref="cellhalign.att"/>
    <xs:attributeGroup ref="cellvalign.att"/>
  </xs:attributeGroup>
  <xs:group name="idl-desc.class">
    <xs:choice>
      <xs:element ref="p"/>
      <xs:element ref="note"/>
    </xs:choice>
  </xs:group>
  <xs:element name="idl-tdef.class" abstract="true"/>
  <xs:element name="idl-mod.class" abstract="true"/>
  <xs:element name="idl-struct.class" abstract="true" substitutionGroup="idl-type.mix"/>
  <xs:element name="idl-meth.class" abstract="true"/>
  <xs:group name="idl-grp.mix">
    <xs:choice>
      <xs:group ref="idl-desc.class"/>
      <xs:element ref="idl-tdef.class"/>
      <xs:element ref="idl-mod.class"/>
      <xs:element ref="idl-struct.class"/>
      <xs:element ref="idl-meth.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="idl-defn.mix">
    <xs:choice>
      <xs:group ref="idl-desc.class"/>
      <xs:element ref="idl-tdef.class"/>
      <xs:element ref="idl-mod.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="idl-intfc.mix">
    <xs:choice>
      <xs:group ref="idl-desc.class"/>
      <xs:element ref="idl-tdef.class"/>
      <xs:element ref="idl-meth.class"/>
    </xs:choice>
  </xs:group>
  <xs:element name="idl-type.mix" abstract="true"/>
  <xs:attributeGroup name="idl-name.att">
    <xs:attribute name="name" use="required"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="idl-type.att">
    <xs:attribute name="type" use="required"/>
  </xs:attributeGroup>
  <xs:complexType name="descr">
    <xs:sequence>
      <xs:element ref="descr"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="descr">
    <xs:complexType>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="obj.mix"/>
      <xs:attributeGroup ref="attlist.descr"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.descr">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="definitions" substitutionGroup="illus.class">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="idl-defn.mix"/>
      <xs:attributeGroup ref="attlist.definitions"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.definitions">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="group" substitutionGroup="idl-tdef.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:group minOccurs="0" maxOccurs="unbounded" ref="idl-grp.mix"/>
          <xs:attributeGroup ref="attlist.group"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.group">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="interface" substitutionGroup="idl-mod.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:group minOccurs="0" maxOccurs="unbounded" ref="idl-intfc.mix"/>
          <xs:attributeGroup ref="attlist.interface"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.interface">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
    <xs:attribute name="inherits"/>
  </xs:attributeGroup>
  <xs:element name="module" substitutionGroup="idl-mod.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:group minOccurs="0" maxOccurs="unbounded" ref="idl-defn.mix"/>
          <xs:attributeGroup ref="attlist.module"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.module">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="reference" substitutionGroup="idl-tdef.class">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.reference"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.reference">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="declaration" use="required" type="xs:IDREF"/>
  </xs:attributeGroup>
  <xs:element name="typedef" substitutionGroup="idl-tdef.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:sequence>
            <xs:element ref="idl-type.mix"/>
          </xs:sequence>
          <xs:attributeGroup ref="attlist.typedef"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.typedef">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
    <xs:attribute name="array.size" type="xs:NMTOKEN"/>
  </xs:attributeGroup>
  <xs:element name="struct" substitutionGroup="idl-struct.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="component"/>
          </xs:sequence>
          <xs:attributeGroup ref="attlist.struct"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.struct">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="component">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="idl-type.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.component"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.component">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="union" substitutionGroup="idl-struct.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="case"/>
          </xs:sequence>
          <xs:attributeGroup ref="attlist.union"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.union">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
    <xs:attribute name="switch.type" use="required"/>
  </xs:attributeGroup>
  <xs:element name="case">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:sequence>
            <xs:element ref="idl-type.mix"/>
          </xs:sequence>
          <xs:attributeGroup ref="attlist.case"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.case">
    <xs:attributeGroup ref="common.att"/>
    <xs:attribute name="labels" use="required"/>
  </xs:attributeGroup>
  <xs:element name="enum" substitutionGroup="idl-struct.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="enumerator"/>
          </xs:sequence>
          <xs:attributeGroup ref="attlist.enum"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.enum">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="enumerator">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:attributeGroup ref="attlist.enumerator"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.enumerator">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="sequence" substitutionGroup="idl-struct.class">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="sequence"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.sequence"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sequence">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-type.att"/>
    <xs:attribute name="size" type="xs:NMTOKEN"/>
  </xs:attributeGroup>
  <xs:element name="constant" substitutionGroup="idl-tdef.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:attributeGroup ref="attlist.constant"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.constant">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
    <xs:attributeGroup ref="idl-type.att"/>
    <xs:attribute name="value" use="required"/>
  </xs:attributeGroup>
  <xs:element name="exception" substitutionGroup="idl-tdef.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="component"/>
          </xs:sequence>
          <xs:attributeGroup ref="attlist.exception"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.exception">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="attribute" substitutionGroup="idl-meth.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:attributeGroup ref="attlist.attribute"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.attribute">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
    <xs:attributeGroup ref="idl-type.att"/>
    <xs:attribute name="readonly" default="no">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="yes"/>
          <xs:enumeration value="no"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="method" substitutionGroup="idl-meth.class">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:sequence>
            <xs:element ref="parameters"/>
            <xs:element ref="returns"/>
            <xs:element ref="raises"/>
          </xs:sequence>
          <xs:attributeGroup ref="attlist.method"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.method">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
  </xs:attributeGroup>
  <xs:element name="parameters">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.parameters"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.parameters">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="param">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:attributeGroup ref="attlist.param"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.param">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-name.att"/>
    <xs:attributeGroup ref="idl-type.att"/>
    <xs:attribute name="attr" default="inout">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="in"/>
          <xs:enumeration value="out"/>
          <xs:enumeration value="inout"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="returns">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="descr">
          <xs:attributeGroup ref="attlist.returns"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.returns">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="idl-type.att"/>
  </xs:attributeGroup>
  <xs:element name="raises">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="exception"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="typename" substitutionGroup="idl-struct.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.typename"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.typename">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="att" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tech.pcd.mix"/>
      <xs:attributeGroup ref="attlist.att"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.att">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="attval" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tech.pcd.mix"/>
      <xs:attributeGroup ref="attlist.attval"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.attval">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="bibref" substitutionGroup="ref.class">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.bibref"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.bibref">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="ref-req.att"/>
  </xs:attributeGroup>
  <xs:element name="code" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tech.pcd.mix"/>
      <xs:attributeGroup ref="attlist.code"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.code">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="ednote" substitutionGroup="ednote.class"/>
  <xs:attributeGroup name="attlist.ednote">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="date">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.date"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.date">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="edtext">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.edtext"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.edtext">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="el" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tech.pcd.mix"/>
      <xs:attributeGroup ref="attlist.el"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.el">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="emph" substitutionGroup="emph.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.emph"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.emph">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="footnote" substitutionGroup="annot.class"/>
  <xs:attributeGroup name="attlist.footnote">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="function" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tech.pcd.mix"/>
      <xs:attributeGroup ref="attlist.function"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.function">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="kw" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tech.pcd.mix"/>
      <xs:attributeGroup ref="attlist.kw"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.kw">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="loc" substitutionGroup="loc.class"/>
  <xs:attributeGroup name="attlist.loc">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
    <xs:attributeGroup ref="user-replace.att"/>
  </xs:attributeGroup>
  <xs:element name="nt" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.nt"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.nt">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="def-req.att"/>
  </xs:attributeGroup>
  <xs:element name="phrase" substitutionGroup="emph.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.phrase"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.phrase">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="rfc2119" substitutionGroup="emph.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.rfc2119"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.rfc2119">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="quote" substitutionGroup="emph.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="p.pcd.mix"/>
      <xs:attributeGroup ref="attlist.quote"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.quote">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="specref" substitutionGroup="ref.class">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.specref"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.specref">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="ref-req.att"/>
  </xs:attributeGroup>
  <xs:element name="sub" substitutionGroup="emph.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.sub"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sub">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="sup" substitutionGroup="emph.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.sup"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sup">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="term" substitutionGroup="termdef.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.term"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.term">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="termdef" substitutionGroup="termdef.class">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="termdef.pcd.mix"/>
        <xs:group ref="termdef.mix"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.termdef"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.termdef">
    <xs:attributeGroup ref="common-idreq.att"/>
    <xs:attribute name="term" use="required"/>
  </xs:attributeGroup>
  <xs:element name="termref" substitutionGroup="ref.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.termref"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.termref">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="def-req.att"/>
  </xs:attributeGroup>
  <xs:element name="titleref" substitutionGroup="ref.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.titleref"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.titleref">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href.att"/>
    <xs:attributeGroup ref="user-new.att"/>
  </xs:attributeGroup>
  <xs:element name="var" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tech.pcd.mix"/>
      <xs:attributeGroup ref="attlist.var"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.var">
    <xs:attributeGroup ref="common.att"/>
  </xs:attributeGroup>
  <xs:element name="xnt" substitutionGroup="tech.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.xnt"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.xnt">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
    <xs:attributeGroup ref="user-new.att"/>
  </xs:attributeGroup>
  <xs:element name="xspecref" substitutionGroup="ref.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.xspecref"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.xspecref">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
    <xs:attributeGroup ref="user-new.att"/>
  </xs:attributeGroup>
  <xs:element name="xtermref" substitutionGroup="ref.class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phrase"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.xtermref"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.xtermref">
    <xs:attributeGroup ref="common.att"/>
    <xs:attributeGroup ref="simple-xlink.att"/>
    <xs:attributeGroup ref="href-req.att"/>
    <xs:attributeGroup ref="user-new.att"/>
  </xs:attributeGroup>
  <xs:element name="div">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="head"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:group ref="div.mix"/>
          <xs:element ref="ul"/>
          <xs:element ref="ol"/>
          <xs:element ref="h1"/>
          <xs:element ref="h2"/>
          <xs:element ref="h3"/>
          <xs:element ref="h4"/>
          <xs:element ref="h5"/>
          <xs:element ref="h6"/>
          <xs:element ref="div"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="h1">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="head.pcd.mix"/>
        <xs:element ref="em"/>
        <xs:element ref="a"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="h2">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="head.pcd.mix"/>
        <xs:element ref="em"/>
        <xs:element ref="a"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="h3">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="head.pcd.mix"/>
        <xs:element ref="em"/>
        <xs:element ref="a"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="h4">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="head.pcd.mix"/>
        <xs:element ref="em"/>
        <xs:element ref="a"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="h5">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="head.pcd.mix"/>
        <xs:element ref="em"/>
        <xs:element ref="a"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="h6">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="head.pcd.mix"/>
        <xs:element ref="em"/>
        <xs:element ref="a"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="pre">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="eg.pcd.mix"/>
        <xs:element ref="em"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ul">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="item"/>
        <xs:element ref="li"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ol">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="item"/>
        <xs:element ref="li"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="li">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="obj.mix"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="em" type="xs:string"/>
  <xs:element name="a" type="xs:string"/>
  <xs:element name="key-term" type="xs:string"/>
  <xs:element name="htable">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="caption"/>
        <xs:choice>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
        </xs:choice>
        <xs:element minOccurs="0" ref="thead"/>
        <xs:element minOccurs="0" ref="tfoot"/>
        <xs:element maxOccurs="unbounded" ref="tbody"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="htbody">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="tr"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="statusp">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="p.pcd.mix"/>
        <xs:group ref="p.mix"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="itemizedlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="listitem"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="orderedlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="listitem"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="listitem">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="para"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="para" type="xs:string"/>
</xs:schema>
