element
Click on the red underlined text to get to the source
... domain identifier is the primary identifier and is the only
REQUIRED element of a JID (a mere domain identifier is a valid ...
... XML Stream: An XML stream is a container for the
exchange of XML elements between any two entities over a network.
The start ...
... stream, the entity that initiated it can send an unbounded
number of XML elements over the stream, either elements used to
...
... number of XML elements over the stream, either elements used to
negotiate the stream (e.g., to negotiate Use of TLS ...
... SASL (Section 6)) or XML stanzas (as defined herein,
<message/>, <presence/>, or <iq/> elements qualified by the
default namespace). The "initial stream ...
... level of the root <stream/> element and is said to be
well-balanced if it matches the production [43] content of [XML].
...
... start of any XML stanza is denoted unambiguously by the
element start tag at depth=1 of the XML stream ...
... corresponding close tag at depth=1 (e.g., </presence>). An XML
stanza MAY contain child elements (with accompanying attributes,
elements, and XML character data ...
... XML
stanza MAY contain child elements (with accompanying attributes,
elements, and XML character data) as necessary in order to convey
the desired information. The only XML stanzas ...
... the desired information. The only XML stanzas defined herein are
the <message/>, <presence/>, and <iq/> elements qualified by the
default namespace for the stream ...
... stream, as described under XML Stanzas
(Section 9); an XML element sent for the purpose of Transport
Layer Security (TLS) negotiation ...
... perspective, the root <stream/> element can be considered the
document entity for each "document", and the two "documents" are
...
... this applies to XML stanzas only (i.e., <message/>, <presence/>, and
<iq/> elements scoped by the default namespace) and not to XML
elements used for stream ...
... <iq/> elements scoped by the default namespace) and not to XML
elements used for stream negotiation (e.g., elements ...
... XML
elements used for stream negotiation (e.g., elements used to
negotiate Use of TLS (Section 5) or Use of SASL ...
...
The attributes of the stream element are as follows:
o to -- The 'to' attribute SHOULD be used only in the XML stream ...
... newer version entity if it simply ignored the elements and attributes
it did not understand and took the actions specified in the older
specification. The minor version number ...
...
The stream element MUST possess both a streams namespace declaration
and a default namespace ...
... receiving
entity MUST send a <features/> child element (prefixed by the streams
namespace prefix) to the initiating entity ...
... The root stream element MAY contain an <error/> child element that is
prefixed by the streams namespace prefix ...
... root stream element MAY contain an <error/> child element that is
prefixed by the streams namespace prefix. The error child MUST be
...
... element:
o MUST contain a child element corresponding to one of the defined
stanza error conditions ...
... stanza error conditions defined below; this element MUST be
qualified by the 'urn:ietf:params:xml:ns:xmpp-streams' namespace
...
... o MAY contain a <text/> child containing XML character data that
describes the error in more detail; this element MUST be qualified
by the 'urn:ietf:params:xml:ns:xmpp-streams' namespace and SHOULD
...
... XML character data
o MAY contain a child element for an application-specific error
condition; this element ...
... element for an application-specific error
condition; this element MUST be qualified by an
application-defined namespace, and its structure is defined by
...
... namespace
The <text/> element is OPTIONAL. If included, it SHOULD be used only
to provide descriptive or diagnostic information that supplements the
...
... be shown in addition to the error message associated with the
included condition element (or elements).
...
... namespace prefix
that is unsupported, or has sent no namespace prefix on an element
that requires such a prefix (see XML Namespace ...
... service
policy; the server MAY choose to specify the policy in the <text/>
element or an application-specific condition element.
...
... XML character data of
the <see-other-host/> element.
o <system-shutdown/> -- the server is being shut down and all active ...
... by the server; the server
MAY specify the version(s) it supports in the <text/> element.
o <xml-not-well-formed ...
... application-specific stream
error information by including a properly-namespaced child in the
error element. The application-specific element SHOULD supplement or
...
... error element. The application-specific element SHOULD supplement or
further qualify a defined element. Thus the <error/> element ...
... application-specific element SHOULD supplement or
further qualify a defined element. Thus the <error/> element will
contain two or three child elements ...
... element SHOULD supplement or
further qualify a defined element. Thus the <error/> element will
contain two or three child elements:
...
... header in reply (including the version flag), it MUST
include a <starttls/> element (qualified by the
'urn:ietf:params:xml:ns:xmpp-tls' namespace) along with the list
...
... root stream element as separators between elements (any white
space characters shown in the TLS ...
... TLS negotiation to have
begun immediately after sending the closing ">" character of the
<proceed/> element. The initiating entity MUST consider the TLS
negotiation to have begun immediately after receiving ...
... TLS
negotiation to have begun immediately after receiving the closing
">" character of the <proceed/> element from the receiving
entity ...
... receiving entity, it SHOULD signal that fact by
including a <required/> element as a child of the <starttls/>
element).
...
... including a <required/> element as a child of the <starttls/>
element).
4. The initiating entity ...
... entity issues the STARTTLS command (i.e., a
<starttls/> element qualified by the
'urn:ietf:params:xml:ns:xmpp-tls' namespace) to instruct the
...
... 5. The receiving entity MUST reply with either a <proceed/> element
or a <failure/> element qualified by the
...
... entity MUST reply with either a <proceed/> element
or a <failure/> element qualified by the
'urn:ietf:params:xml:ns:xmpp-tls' namespace. If the failure case
...
... advertise one or more authentication mechanisms within a
<mechanisms/> element qualified by the
'urn:ietf:params:xml:ns:xmpp-sasl' namespace in reply to the
...
... root stream element as separators between elements (any white
space characters shown in the SASL ...
...
5. Any XML character data contained within the XML elements used
during SASL negotiation MUST be encoded using base64 ...
... SASL authentication mechanisms;
each of these is a <mechanism/> element included as a child
within a <mechanisms/> container element qualified by the
...
... each of these is a <mechanism/> element included as a child
within a <mechanisms/> container element qualified by the
'urn:ietf:params:xml:ns:xmpp-sasl' namespace, which in turn is a
...
... 'urn:ietf:params:xml:ns:xmpp-sasl' namespace, which in turn is a
child of a <features/> element in the streams namespace. If Use
of TLS ...
... 3. The initiating entity selects a mechanism by sending an <auth/>
element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl'
namespace to the receiving ...
... receiving entity and including an appropriate
value for the 'mechanism' attribute. This element MAY contain
XML character data (in SASL ...
... entity challenges the initiating
entity by sending a <challenge/> element qualified by the
'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the initiating
...
... namespace to the initiating
entity; this element MAY contain XML character data (which MUST
be computed in accordance with the definition of the SASL ...
... 5. The initiating entity responds to the challenge by sending a
<response/> element qualified by the
'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the receiving ...
... receiving
entity; this element MAY contain XML character data (which MUST
be computed in accordance with the definition of the SASL ...
... entity aborts the handshake by sending an <abort/>
element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl'
namespace to the receiving ...
... entity. Upon receiving an <abort/>
element, the receiving entity SHOULD allow a configurable but
...
... entity reports failure of the handshake by sending
a <failure/> element qualified by the
'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the initiating
...
... entity (the particular cause of failure SHOULD be communicated in
an appropriate child element of the <failure/> element as defined
under SASL ...
... entity (the particular cause of failure SHOULD be communicated in
an appropriate child element of the <failure/> element as defined
under SASL Errors (Section 6.4)). If the failure case occurs,
...
... entity reports success of the handshake by sending
a <success/> element qualified by the
'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the initiating
...
... chosen SASL mechanism. Upon receiving the <success/> element,
the initiating entity MUST initiate a new stream ...
... stream to be closed upon sending or receiving the <success/>
element). Upon receiving the new stream header ...
... STARTTLS and SASL
features) or an empty <features/> element (to signify that no
additional features are available); any such additional features
not defined herein MUST be defined by the relevant extension to
...
... receiving entity as the value of the
'mechanism' attribute possessed by an <auth/> element, optionally
including an initial response to avoid a round trip.
...
...
exchange sequence: Challenges and responses are carried through the
exchange of <challenge/> elements from receiving entity to
...
... receiving entity reports failure by
sending a <failure/> element and success by sending a <success/>
element; the initiating entity ...
... sending a <failure/> element and success by sending a <success/>
element; the initiating entity aborts the exchange by sending an
<abort/> element ...
... element; the initiating entity aborts the exchange by sending an
<abort/> element. Upon successful negotiation, both sides
consider the original XML stream ...
... security layer takes effect
immediately after sending the closing ">" character of the
<success/> element for the receiving entity, and immediately after
...
... entity, and immediately after
receiving the closing ">" character of the <success/> element for
the initiating entity. The order of layers is first [TCP ...
... receiving entity acknowledges an <abort/>
element sent by the initiating entity; sent in reply to the
<abort/> element ...
... element sent by the initiating entity; sent in reply to the
<abort/> element.
o <incorrect-encoding ...
... definition in Section 3 of [BASE64]); sent in reply to a
<response/> element or an <auth/> element with initial response
data.
...
... BASE64]); sent in reply to a
<response/> element or an <auth/> element with initial response
data.
...
... because the initiating entity does not have permissions to
authorize that ID; sent in reply to a <response/> element or an
<auth/> element with initial response data.
...
... authorize that ID; sent in reply to a <response/> element or an
<auth/> element with initial response data.
o <invalid-mechanism/> -- The initiating entity ...
... receiving entity; sent in reply to an <auth/> element.
o <mechanism-too-weak/> -- The mechanism requested by the initiating
...
... entity is weaker than server policy permits for that initiating
entity; sent in reply to a <response/> element or an <auth/>
element with initial response data.
...
... entity; sent in reply to a <response/> element or an <auth/>
element with initial response data.
o <not-authorized/> -- The authentication ...
... but is not limited to the case of an unknown username); sent in
reply to a <response/> element or an <auth/> element with initial
response data.
...
... username); sent in
reply to a <response/> element or an <auth/> element with initial
response data.
...
... stream header to Server1 along
with any additional features (or an empty features element):
<stream ...
... client to bind a resource to the stream after successful SASL
negotiation, it MUST include an empty <bind/> element qualified by
the 'urn:ietf:params:xml:ns:xmpp-bind' namespace in the stream ...
... resource
identifier on its behalf, it sends an IQ stanza of type "set" that
contains an empty <bind/> element:
Client ...
... resource identifier
as the XML character data of a <resource/> element that is a child of
the <bind/> element:
...
... stanza of type "result" to the client, which MUST
include a <jid/> child element that specifies the full JID for the
connected resource as determined by the server ...
... root stream
element. If the namespace name is incorrect, then the Originating
Server MUST generate an <invalid-namespace ...
... root stream
element. If the namespace name is incorrect, then the Authoritative
Server MUST generate an <invalid-namespace ...
... XML character data, which MAY be overridden by the
'xml:lang' attribute of a specific child element. If a stanza does
not possess an 'xml:lang ...
... request and response is defined by the namespace
declaration of a direct child element of the IQ element, and the
interaction is tracked by the requesting entity ...
... namespace
declaration of a direct child element of the IQ element, and the
interaction is tracked by the requesting entity through use of the
...
... 5. An IQ stanza of type "get" or "set" MUST contain one and only one
child element that specifies the semantics of the particular
request or response.
...
...
7. An IQ stanza of type "error" SHOULD include the child element
contained in the associated "get" or "set" and MUST include an
<error/> child; for details, see Stanza ...
...
o An error stanza MUST contain an <error/> child element.
o An <error/> child MUST NOT be included if the 'type' attribute has
...
... stanza-kind is one of message, presence, or iq.
The value of the <error/> element's 'type' attribute MUST be one of
the following:
...
... o wait -- retry after waiting (the error is temporary)
The <error/> element:
o MUST contain a child element ...
... element:
o MUST contain a child element corresponding to one of the defined
stanza error conditions ...
... stanza error conditions specified below; this element MUST be
qualified by the 'urn:ietf:params:xml:ns:xmpp-stanzas' namespace ...
... o MAY contain a <text/> child containing XML character data that
describes the error in more detail; this element MUST be qualified
by the 'urn:ietf:params:xml:ns:xmpp-stanzas' namespace ...
... xml:lang' attribute.
o MAY contain a child element for an application-specific error
condition; this element ...
... element for an application-specific error
condition; this element MUST be qualified by an
application-defined namespace, and its structure is defined by
...
... namespace.
The <text/> element is OPTIONAL. If included, it SHOULD be used only
to provide descriptive or diagnostic information that supplements the
...
... be shown in addition to the error message associated with the
included condition element (or elements).
...
... error message associated with the
included condition element (or elements).
Finally, to maintain backward compatibility ...
... address in the
XML character data of the <gone/> element); the associated error
type SHOULD be "modify".
...
... JID, in the XML character data of the <redirect/> element); the
associated error type SHOULD be "modify".
...
... stanza
error information by including a properly-namespaced child in the
error element. The application-specific element SHOULD supplement or
...
... error element. The application-specific element SHOULD supplement or
further qualify a defined element. Thus, the <error/> element ...
... application-specific element SHOULD supplement or
further qualify a defined element. Thus, the <error/> element will
contain two or three child elements ...
... element SHOULD supplement or
further qualify a defined element. Thus, the <error/> element will
contain two or three child elements:
...
... element. Thus, the <error/> element will
contain two or three child elements:
<iq type='error' id='some-id'>
...
...
XMPP is a simplified and specialized protocol for streaming XML
elements in order to exchange structured information in close to real
time. Because XMPP does not require the parsing of arbitrary and
...
... create strict boundaries of data ownership. The basic function of
namespaces is to separate different vocabularies of XML elements that
are structurally mixed together. Ensuring that XMPP-compliant XML ...
... namespace-aware enables any allowable XML to be structurally mixed
with any data element within XMPP. Rules for XML namespace names and
...
... namespace MUST be
'http://etherx.jabber.org/streams'. The element names of the
<stream/> element ...
... element names of the
<stream/> element and its <features/> and <error/> children MUST be
qualified by the streams namespace prefix in all instances. An
...
... stream:' prefix for these
elements, and for historical reasons MAY accept only the 'stream:'
prefix ...
...
An implementation MUST NOT generate namespace prefixes for elements
in the default namespace if the default namespace ...
... or 'jabber:server'. An implementation SHOULD NOT generate namespace
prefixes for elements qualified by content (as opposed to stream)
namespaces ...
... A dialback namespace declaration is REQUIRED for all elements used in
server dialback (Section 8). The name of the dialback ...
... be 'jabber:server:dialback'. All elements qualified by this
namespace MUST be prefixed. An implementation SHOULD generate only
...
... namespace MUST be prefixed. An implementation SHOULD generate only
the 'db:' prefix for such elements and MAY accept only the 'db:'
prefix.
...
... jabber:server' namespace, a server is not responsible for
validating the XML elements forwarded to a client or another server;
an implementation MAY choose to provide only validated ...
... client or another server;
an implementation MAY choose to provide only validated data elements
but this is OPTIONAL (although an implementation MUST NOT accept XML
...
... Clients SHOULD NOT rely on the ability to
send data which does not conform to the schemas, and SHOULD ignore
any non-conformant elements or attributes on the incoming XML stream.
Validation ...
... jabber:server:dialback'>
<xs:element ref='features' minOccurs='0' maxOccurs='1'/>
<xs:any namespace='urn:ietf:params:xml:ns:xmpp-tls'
...
... <xs:choice minOccurs='0' maxOccurs='1'>
<xs:choice minOccurs='0' maxOccurs='unbounded'>
<xs:element ref='client:message'/>
<xs:element ...
... </xs:choice>
<xs:choice minOccurs='0' maxOccurs='unbounded'>
<xs:element ref='server:message'/>
<xs:element ref='server:presence'/>
...
... <xs:element ref='server:message'/>
<xs:element ref='server:presence'/>
<xs:element ref='server:iq'/>
...
... <xs:element ref='server:presence'/>
<xs:element ref='server:iq'/>
<xs:element ref='db:result'/>
...
... </xs:choice>
</xs:choice>
<xs:element ref='error' minOccurs='0' maxOccurs='1'/>
</xs:sequence>
<xs:attribute name ...
... xmlns:sess='urn:ietf:params:xml:ns:xmpp-session'>
<xs:element ref='tls:starttls' minOccurs='0'/>
<xs:element ref='sasl:mechanisms' minOccurs='0'/>
...
... <xs:element ref='tls:starttls' minOccurs='0'/>
<xs:element ref='sasl:mechanisms' minOccurs='0'/>
<xs:element ref='bind:bind' minOccurs='0'/>
...
... <xs:element ref='sasl:mechanisms' minOccurs='0'/>
<xs:element ref='bind:bind' minOccurs='0'/>
<xs:element ref='sess:session ...
... <xs:element ref='bind:bind' minOccurs='0'/>
<xs:element ref='sess:session' minOccurs='0'/>
</xs:all>
...
... <xs:group ref='err:streamErrorGroup'/>
<xs:element ref='err:text'
minOccurs='0'
maxOccurs='1'/>
...
... </xs:complexType>
</xs:element>
</xs:schema>
...
... elementFormDefault='qualified'>
<xs:element name='bad-format' type='empty'/>
<xs:element name='bad-namespace ...
... <xs:element name='bad-format' type='empty'/>
<xs:element name='bad-namespace-prefix' type='empty'/>
...
... namespace-prefix' type='empty'/>
<xs:element name='conflict' type='empty'/>
<xs:element name='connection ...
... <xs:element name='conflict' type='empty'/>
<xs:element name='connection-timeout' type='empty'/>
<xs:element ...
... element name='connection-timeout' type='empty'/>
<xs:element name='host-gone' type='empty'/>
<xs:element ...
... element name='host-gone' type='empty'/>
<xs:element name='host-unknown' type='empty'/>
<xs:element ...
... element name='host-unknown' type='empty'/>
<xs:element name='improper-addressing' type='empty'/>
<xs:element ...
... element name='improper-addressing' type='empty'/>
<xs:element name='internal-server-error' type='empty'/>
<xs:element name='invalid-from' type='empty'/>
...
... <xs:element name='internal-server-error' type='empty'/>
<xs:element name='invalid-from' type='empty'/>
<xs:element name='invalid-id' type='empty'/>
...
... <xs:element name='invalid-from' type='empty'/>
<xs:element name='invalid-id' type='empty'/>
<xs:element name='invalid-namespace ...
... <xs:element name='invalid-id' type='empty'/>
<xs:element name='invalid-namespace' type='empty'/>
<xs:element ...
... element name='invalid-namespace' type='empty'/>
<xs:element name='invalid-xml' type='empty'/>
<xs:element name='not-authorized' type='empty'/>
...
... <xs:element name='invalid-xml' type='empty'/>
<xs:element name='not-authorized' type='empty'/>
<xs:element name='policy-violation' type='empty'/>
...
... <xs:element name='not-authorized' type='empty'/>
<xs:element name='policy-violation' type='empty'/>
<xs:element name='remote-connection ...
... <xs:element name='policy-violation' type='empty'/>
<xs:element name='remote-connection-failed' type='empty'/>
<xs:element ...
... element name='remote-connection-failed' type='empty'/>
<xs:element name='resource-constraint' type='empty'/>
<xs:element ...
... element name='resource-constraint' type='empty'/>
<xs:element name='restricted-xml' type='empty'/>
<xs:element name='see-other-host ...
... <xs:element name='restricted-xml' type='empty'/>
<xs:element name='see-other-host' type='xs:string'/>
<xs:element ...
... element name='see-other-host' type='xs:string'/>
<xs:element name='system-shutdown' type='empty'/>
<xs:element name='undefined-condition' type='empty'/>
...
... <xs:element name='system-shutdown' type='empty'/>
<xs:element name='undefined-condition' type='empty'/>
<xs:element name='unsupported-encoding ...
... <xs:element name='undefined-condition' type='empty'/>
<xs:element name='unsupported-encoding' type='empty'/>
<xs:element ...
... element name='unsupported-encoding' type='empty'/>
<xs:element name='unsupported-stanza-type' type='empty'/>
<xs:element ...
... element name='unsupported-stanza-type' type='empty'/>
<xs:element name='unsupported-version' type='empty'/>
<xs:element ...
... element name='unsupported-version' type='empty'/>
<xs:element name='xml-not-well-formed' type='empty'/>
...
... group name='streamErrorGroup'>
<xs:choice>
<xs:element ref='bad-format'/>
<xs:element ref='bad-namespace ...
... <xs:element ref='internal-server-error'/>
<xs:element ref='invalid-from'/>
<xs:element ref='invalid-id'/>
...
... <xs:element ref='invalid-from'/>
<xs:element ref='invalid-id'/>
<xs:element ref='invalid-namespace ...
... element ref='invalid-namespace'/>
<xs:element ref='invalid-xml'/>
<xs:element ref='not-authorized'/>
...
... <xs:element ref='invalid-xml'/>
<xs:element ref='not-authorized'/>
<xs:element ref='policy-violation'/>
...
... <xs:element ref='not-authorized'/>
<xs:element ref='policy-violation'/>
<xs:element ref='remote-connection ...
... <xs:element ref='policy-violation'/>
<xs:element ref='remote-connection-failed'/>
<xs:element ...
... element ref='remote-connection-failed'/>
<xs:element ref='resource-constraint'/>
<xs:element ...
... element ref='resource-constraint'/>
<xs:element ref='restricted-xml'/>
<xs:element ref='see-other-host ...
... element ref='see-other-host'/>
<xs:element ref='system-shutdown'/>
<xs:element ref='undefined-condition'/>
...
... <xs:element ref='system-shutdown'/>
<xs:element ref='undefined-condition'/>
<xs:element ref='unsupported-encoding ...
... <xs:element ref='undefined-condition'/>
<xs:element ref='unsupported-encoding'/>
<xs:element ...
... element ref='unsupported-encoding'/>
<xs:element ref='unsupported-stanza-type'/>
<xs:element ...
... </xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name='empty'>
...
... elementFormDefault='qualified'>
<xs:element name='starttls'>
<xs:complexType>
<xs:sequence>
...
... <xs:complexType>
<xs:sequence>
<xs:element
name='required'
minOccurs='0'
...
... element>
<xs:element name='proceed' type='empty'/>
<xs:element name='failure' type='empty'/>
...
... <xs:element name='proceed' type='empty'/>
<xs:element name='failure' type='empty'/>
<xs:simpleType name='empty'>
...
... elementFormDefault='qualified'>
<xs:element name='mechanisms'>
<xs:complexType>
<xs:sequence>
...
... <xs:complexType>
<xs:sequence>
<xs:element name='mechanism'
maxOccurs='unbounded'
type='xs:string'/>
...
... element>
<xs:element name='challenge' type='xs:string'/>
<xs:element name='response' type='xs:string'/>
...
... <xs:element name='challenge' type='xs:string'/>
<xs:element name='response' type='xs:string'/>
<xs:element name='abort' type='empty'/>
...
... <xs:element name='response' type='xs:string'/>
<xs:element name='abort' type='empty'/>
<xs:element name='success' type='empty'/>
...
... <xs:element name='abort' type='empty'/>
<xs:element name='success' type='empty'/>
<xs:element ...
... element name='success' type='empty'/>
<xs:element name='failure'>
<xs:complexType>
<xs:choice minOccurs='0'>
...
... <xs:complexType>
<xs:choice minOccurs='0'>
<xs:element name='aborted' type='empty'/>
<xs:element name='incorrect-encoding ...
... <xs:element name='aborted' type='empty'/>
<xs:element name='incorrect-encoding' type='empty'/>
<xs:element ...
... element name='incorrect-encoding' type='empty'/>
<xs:element name='invalid-authzid' type='empty'/>
<xs:element ...
... element name='invalid-authzid' type='empty'/>
<xs:element name='invalid-mechanism' type='empty'/>
<xs:element name='mechanism-too-weak' type='empty'/>
...
... <xs:element name='invalid-mechanism' type='empty'/>
<xs:element name='mechanism-too-weak' type='empty'/>
<xs:element name='not-authorized' type='empty'/>
...
... <xs:element name='mechanism-too-weak' type='empty'/>
<xs:element name='not-authorized' type='empty'/>
<xs:element name='temporary-auth-failure' type='empty'/>
...
... <xs:element name='not-authorized' type='empty'/>
<xs:element name='temporary-auth-failure' type='empty'/>
</xs:choice>
</xs:complexType>
...
... </xs:choice>
</xs:complexType>
</xs:element>
<xs:simpleType name='empty'>
<xs:restriction base='xs:string'>
...
... elementFormDefault='qualified'>
<xs:element name='bind'>
<xs:complexType>
<xs:choice minOccurs='0' maxOccurs='1'>
...
... <xs:complexType>
<xs:choice minOccurs='0' maxOccurs='1'>
<xs:element name='resource' type='xs:string'/>
<xs:element name='jid' type='xs:string'/>
...
... <xs:element name='resource' type='xs:string'/>
<xs:element name='jid' type='xs:string'/>
</xs:choice>
...
... </xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
...
... elementFormDefault='qualified'>
<xs:element name='result'>
<xs:complexType>
<xs:simpleContent>
...
... </xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
...
... elementFormDefault='qualified'>
<xs:element name='bad-request' type='empty'/>
<xs:element name='conflict' type='empty'/>
...
... <xs:element name='bad-request' type='empty'/>
<xs:element name='conflict' type='empty'/>
<xs:element name='feature-not-implemented' type='empty'/>
...
... <xs:element name='conflict' type='empty'/>
<xs:element name='feature-not-implemented' type='empty'/>
<xs:element name='forbidden' type='empty'/>
...
... <xs:element name='feature-not-implemented' type='empty'/>
<xs:element name='forbidden' type='empty'/>
<xs:element name='gone' type='xs:string'/>
...
... <xs:element name='forbidden' type='empty'/>
<xs:element name='gone' type='xs:string'/>
<xs:element name='internal-server-error' type='empty'/>
...
... <xs:element name='gone' type='xs:string'/>
<xs:element name='internal-server-error' type='empty'/>
<xs:element name='item-not-found' type='empty'/>
...
... <xs:element name='internal-server-error' type='empty'/>
<xs:element name='item-not-found' type='empty'/>
<xs:element name='jid-malformed' type='empty'/>
...
... <xs:element name='item-not-found' type='empty'/>
<xs:element name='jid-malformed' type='empty'/>
<xs:element name='not-acceptable' type='empty'/>
...
... <xs:element name='jid-malformed' type='empty'/>
<xs:element name='not-acceptable' type='empty'/>
<xs:element name='not-allowed' type='empty'/>
...
... <xs:element name='not-acceptable' type='empty'/>
<xs:element name='not-allowed' type='empty'/>
<xs:element name='payment ...
... <xs:element name='not-allowed' type='empty'/>
<xs:element name='payment-required' type='empty'/>
<xs:element ...
... element name='payment-required' type='empty'/>
<xs:element name='recipient-unavailable' type='empty'/>
<xs:element ...
... element name='recipient-unavailable' type='empty'/>
<xs:element name='redirect' type='xs:string'/>
<xs:element name='registration ...
... <xs:element name='redirect' type='xs:string'/>
<xs:element name='registration-required' type='empty'/>
<xs:element ...
... element name='registration-required' type='empty'/>
<xs:element name='remote-server-not-found' type='empty'/>
<xs:element name='remote-server-timeout' type='empty'/>
...
... <xs:element name='remote-server-not-found' type='empty'/>
<xs:element name='remote-server-timeout' type='empty'/>
<xs:element name='resource-constraint ...
... <xs:element name='remote-server-timeout' type='empty'/>
<xs:element name='resource-constraint' type='empty'/>
<xs:element ...
... element name='resource-constraint' type='empty'/
