<!ELEMENT protocol (copyright?, description?, interface+)>
  <!ATTLIST protocol name CDATA #REQUIRED>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT interface (description?,(request|event|enum)+)>
  <!ATTLIST interface name CDATA #REQUIRED>
  <!ATTLIST interface version CDATA #REQUIRED>
<!ELEMENT request (description?,arg*)>
  <!ATTLIST request name CDATA #REQUIRED>
  <!ATTLIST request type CDATA #IMPLIED>
  <!ATTLIST request since CDATA #IMPLIED>
<!ELEMENT event (description?,arg*)>
  <!ATTLIST event name CDATA #REQUIRED>
  <!ATTLIST event since CDATA #IMPLIED>
<!ELEMENT enum (description?,entry*)>
  <!ATTLIST enum name CDATA #REQUIRED>
  <!ATTLIST enum since CDATA #IMPLIED>
  <!ATTLIST enum bitfield CDATA #IMPLIED>
<!ELEMENT entry (description?)>
  <!ATTLIST entry name CDATA #REQUIRED>
  <!ATTLIST entry value CDATA #REQUIRED>
  <!ATTLIST entry summary CDATA #IMPLIED>
  <!ATTLIST entry since CDATA #IMPLIED>
<!ELEMENT arg (description?)>
  <!ATTLIST arg name CDATA #REQUIRED>
  <!ATTLIST arg type CDATA #REQUIRED>
  <!ATTLIST arg summary CDATA #IMPLIED>
  <!ATTLIST arg interface CDATA #IMPLIED>
  <!ATTLIST arg allow-null CDATA #IMPLIED>
  <!ATTLIST arg enum CDATA #IMPLIED>
<!ELEMENT description (#PCDATA)>
  <!ATTLIST description summary CDATA #REQUIRED>