<?xml version="1.0" encoding="UTF-8"?>

 <!--
 Copyright OASIS Open 2012. All Rights Reserved.


 All capitalized terms in the following text have the meanings assigned to them in the OASIS
 Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the
 OASIS website.


 This document and translations of it may be copied and furnished to others, and derivative works
 that comment on or otherwise explain it or assist in its implementation may be prepared, copied,
 published, and distributed, in whole or in part, without restriction of any kind, provided that
 the above copyright notice and this section are included on all such copies and derivative works.
 However, this document itself may not be modified in any way, including by removing the copyright
 notice or references to OASIS, except as needed for the purpose of developing any document or
 deliverable produced by an OASIS Technical Committee (in which case the rules applicable to
 copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate
 it into languages other than English.


 The limited permissions granted above are perpetual and will not be revoked by OASIS or its
 successors or assigns.


 This document and the information contained herein is provided on an "AS IS" basis and OASIS
 DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE
 USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF
 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


 OASIS requests that any OASIS Party or any other party that believes it has patent claims that
 would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS
 Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant
 patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS
 Technical Committee that produced this specification.


 OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of
 ownership of any patent claims that would necessarily be infringed by implementations of this
 specification by a patent holder that is not willing to provide a license to such patent claims in
 a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this
 specification. OASIS may include such claims on its website, but disclaims any obligation to do
 so.


 OASIS takes no position regarding the validity or scope of any intellectual property or other
 rights that might be claimed to pertain to the implementation or use of the technology described
 in this document or the extent to which any license under such rights might or might not be
 available; neither does it represent that it has made any effort to identify any such rights.
 Information on OASIS' procedures with respect to rights in any document or deliverable produced
 by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights
 made available for publication and any assurances of licenses to be made available, or the result
 of an attempt made to obtain a general license or permission for the use of such proprietary
 rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be
 obtained from the OASIS TC Administrator. OASIS makes no representation that any information or
 list of intellectual property rights will at any time be complete, or that any claims in such list
 are, in fact, Essential Claims.


 The name "OASIS" is a trademark of OASIS, the owner and developer of this specification, and
 should be used only to refer to the organization and its official outputs. OASIS welcomes
 reference to, and implementation and use of, specifications, while reserving the right to enforce
 its marks against misleading uses. Please see http://www.oasis-open.org/who/trademark.php for above guidance.
 -->

 <!-- The AMQP specification is defined by a collection of XML source
 files each conforming to the DTD defined below. Each file
 specifies a distinct "part" of the specification.
 -->

 <!-- The amqp element is the root element for each source file and
 thus identifies a distinct part of the AMQP specification. The
 amqp element may contain any number of doc or section elements
 and has the following attributes:

 name - The name of the part of the specification defined within
 this element.
 label - A short label for the part of the specication defined
 within this element
 -->
 <!ELEMENT amqp (doc|section)*>
 <!ATTLIST amqp
 xmlns CDATA #IMPLIED
 name CDATA #REQUIRED
 label CDATA #IMPLIED
 >

 <!-- The section element identifies a section within a part of the
 AMQP specification. Sections provide a logical grouping of
 content and definitions within a part of the specification. The
 section element may contain any number of doc, definition, or
 type elements and has the following attributes:

 name - The name of the section.
 title - A title for the section.
 label - A short label for the section.
 -->
 <!ELEMENT section (doc|definition|type)*>
 <!ATTLIST section
 name CDATA #REQUIRED
 title CDATA #IMPLIED
 label CDATA #IMPLIED
 >

 <!-- The definition element formally defines a named constant. The
 definition element may contain any number of doc elements and has
 the following attributes:

 name - The name of the constant.
 value - The value of the constant.
 label - A short label for the constant.
 -->
 <!ELEMENT definition (doc)*>
 <!ATTLIST definition
 name CDATA #REQUIRED
 value CDATA #REQUIRED
 label CDATA #IMPLIED
 >

 <!-- The type element formally defines a semantic type used to
 exchange data on the wire. Every type definition may have the
 following attributes:

 name - The name of the type.
 label - A short description of the type.
 class - A string identifying what class of type is being
 defined.
 provides - A comma separated list of archetypes (see field
 element).

 There are four different classes of types identified by the
 "class" attribute: primitive, composite, restricted, and union.
 All classes of types may contain doc elements.

 A "primitive" type will contain one or more encoding elements
 that describe how the data is formatted on the wire. Primitive
 types do not contain descriptor, field, or choice elements.

 A "composite" type definition specifies a new kind of record
 type, i.e. a type composed of a fixed number of fields whose
 values are each of a specific type. A composite type does not
 have a new encoding, but is sent on the wire as a list annotated
 by a specific descriptor value that identifies it as a
 representation of the defined composite type. A composite type
 definition will contain a descriptor and zero or more field
 elements. Composite types do not contain encoding or choice
 elements. The source attribute of a composite type will always be
 "list", other values are reserved for future use.

 A "restricted" type definition specifies a new kind of type whose
 values are restricted to a subset of the values that may be
 represented with another type. The source attribute identifies
 the base type from which a restricted type is derived. A
 restricted type may have a descriptor element in which case it is
 identified by a descriptor on the wire. The values permitted by a
 restricted type may be specified either via documentation, or
 directly limited to a fixed number of values by the choice
 elements contained within the definition.

 The "union" class of types is currently reserved.
 -->
 <!ELEMENT type (encoding|descriptor|field|choice|doc)*>
 <!ATTLIST type
 name CDATA #REQUIRED
 class (primitive|composite|restricted|union) #REQUIRED
 source CDATA #IMPLIED
 provides CDATA #IMPLIED
 label CDATA #IMPLIED
 >

 <!-- The encoding element defines how a primitive type is encoded. The
 specification defines 4 general categories of encodings: fixed,
 variable, compound, or array. A specific encoding provides
 further details of how data is formatted within its general
 category.

 name - The name of the encoding.
 label - A short description of the encoding.
 code - The numeric value that prefixes the encoded data on
 the wire.
 category - The category of the encoding: "fixed", "variable",
 "compound", or "array".
 width - The width of the encoding or the size/count
 prefixes depending on the category.
 -->
 <!ELEMENT encoding (doc)*>
 <!ATTLIST encoding
 name CDATA #IMPLIED
 label CDATA #IMPLIED
 code CDATA #REQUIRED
 category (fixed|variable|compound|array) #REQUIRED
 width CDATA #IMPLIED
 >

 <!-- The descriptor element specifies what annotation is used to
 identify encoded values as representations of a described type.

 name - A symbolic name for the representation.
 code - The numeric value.
 -->
 <!ELEMENT descriptor (doc)*>
 <!ATTLIST descriptor
 name CDATA #IMPLIED
 code CDATA #IMPLIED
 >

 <!-- The field element identifies a field within a composite type.
 Every field has the following attributes:

 name - A symbolic name that uniquely identifies the field
 within the type.
 type - The type of the field. This attribute defines the
 range of values that are permitted to appear in
 this field. It may name a specific type, in which
 case the values are restricted to that type, or it
 may be the special character "*", in which case a
 value of any type is permitted. In the latter case
 the range of values may be further restricted by
 the requires attribute.
 requires - A comma separated list of archetypes. Field values
 are restricted to types providing at least one of
 the specified archetypes.
 default - A default value for the field if no value is encoded.
 label - A short description of the field.
 mandatory - "true" iff a non null value for the field is always encoded.
 multiple - "true" iff the field may have multiple values of its specified type.
 -->
 <!ELEMENT field (doc)*>
 <!ATTLIST field
 name CDATA #REQUIRED
 type CDATA #IMPLIED
 requires CDATA #IMPLIED
 default CDATA #IMPLIED
 label CDATA #IMPLIED
 mandatory CDATA #IMPLIED
 multiple CDATA #IMPLIED
 >

 <!-- The choice element identifies a legal value for a restricted
 type. The choice element has the following attributes:

 name - A symbolic name for the value.
 value - The permitted value.
 -->
 <!ELEMENT choice (doc)*>
 <!ATTLIST choice
 name CDATA #REQUIRED
 value CDATA #REQUIRED
 >

 <!-- The doc element identifies the basic unit of documentation that
 may appear at nearly any point within the specification. A doc
 element may optionally have a symbolic name and a title for cross
 reference:

 name - The symbolic name of the doc element.
 title - The title of the doc element.

 A doc element may contain any number of the following
 presentational sub elements:

 doc - nested doc elements
 p - paragraphs
 ul - unordered lists
 ol - ordered lists
 dl - definition lists
 picture - preformatted ascii art diagrams
 -->

 <!ELEMENT doc (doc|p|ul|ol|dl|picture)*>
 <!ATTLIST doc
 name CDATA #IMPLIED
 title CDATA #IMPLIED
 >

 <!-- A paragraph element may be optionally titled and contains
 freeform text with the following markup elements:

 anchor - a reference point
 xref - a cross reference
 b - bold text
 i - italic text
 term - a formal term
 sup - superscript
 sub - subscript
 br - line break
 -->
 <!ELEMENT p (#PCDATA|anchor|xref|b|i|term|sup|sub|br)*>
 <!ATTLIST p
 title CDATA #IMPLIED
 >

 <!-- A cross reference. -->
 <!ELEMENT xref (#PCDATA)>
 <!ATTLIST xref
 type CDATA #IMPLIED
 name CDATA #REQUIRED
 choice CDATA #IMPLIED
 >

 <!-- A reference point. -->
 <!ELEMENT anchor (#PCDATA)>
 <!ATTLIST anchor
 name CDATA #REQUIRED
 >

 <!-- A line break. -->
 <!ELEMENT br EMPTY>

 <!-- A span of boldface markup. -->
 <!ELEMENT b (#PCDATA|sub|sup|i|br|anchor)*>
 <!-- A span of italic markup. -->
 <!ELEMENT i (#PCDATA|sub|sup|b|br|anchor)*>
 <!-- A formal term. -->
 <!ELEMENT term (#PCDATA)>
 <!-- A span of superscript markup. -->
 <!ELEMENT sup (#PCDATA|sup|sub|b|i)*>
 <!-- A span of subscript markup. -->
 <!ELEMENT sub (#PCDATA|sup|sub|b|i)*>

 <!-- An unordered list. -->
 <!ELEMENT ul (li)*>
 <!ATTLIST ul
 title CDATA #IMPLIED
 >
 <!-- An ordered list. -->
 <!ELEMENT ol (li)*>
 <!ATTLIST ol
 title CDATA #IMPLIED
 >

 <!-- An item in an ordered or unordered list. -->
 <!ELEMENT li (#PCDATA|p|ul|dl)*>

 <!-- A definition list. -->
 <!ELEMENT dl (dt, dd)*>
 <!ATTLIST dl
 title CDATA #IMPLIED
 >
 <!-- A definition term. -->
 <!ELEMENT dt (#PCDATA)>
 <!-- A definition description -->
 <!ELEMENT dd (p|picture|ul|ol)*>

 <!-- A preformatted ascii art diagram. -->
 <!ELEMENT picture (#PCDATA)>
 <!ATTLIST picture
 title CDATA #IMPLIED
 >