[JDEV] XML Conformance

Julian Missig julian at jabber.org
Wed Jan 16 14:57:27 CST 2002


People have repeatedly brought up on JDEV the issue of Jabber's XML 
conformance. I just wanted to make two quick notes about it. ALL 
DISCUSSION SHOULD BE CONTINUED *ONLY* ON THE STANDARDS-JIG LIST. This 
mail is being cc'd to jdev because quite a few jdev members who have 
brought up these issues are unaware of the standards JIG.

First off, the id attribute: the id *MUST* start with an alphabetic 
character, but can contain numbers after that.
Reference: XML 1.0 Recommendation:
"Values of type ID must match the Name production. A name must not 
appear more than once in an XML document as a value of this type; i.e., 
ID values must uniquely identify the elements which bear them."
The definition of Name:
Name    ::=    (Letter | '_' | ':') (NameChar)*
definition of NameChar:
NameChar    ::=    Letter | Digit | '.' | '-' | '_' | ':' | 
CombiningChar | Extender
definition of Letter: http://www.w3.org/TR/2000/REC-xml-20001006#NT-Letter
So therefore, ids may start with a letter, an underscore, or a colon, 
and then have all the numbers your pretty little heart desires. However, 
'2' is not a valid id.
It is also important to remember that there are *two* XML documents 
being created, one going to the server, one coming from the server, 
which is why you can receive a packet with the same id as one you sent.

Second, namespaces. Contrary to what some people believe, Jabber's usage 
of namespaces conforms with the specification. <x> and <query> are 
actually a parent element of everything within in the same namespace. 
Schemas will conform with this statement. The "problem" is that current 
Jabber implementations do not fully support namespaces via Qualified 
Names. (Such as <last:query xmlns:last="jabber:iq:last"> and then being 
able to use last: thereafter) - However, there is NOTHING WRONG with 
Jabber being even more restrictive than the XML Namespaces 
Recommendation. I feel that we should continue to enforce the fact that 
jabber:x: and jabber:iq: namespaces within jabber:client are only 
allowed in certain places (<x> within <message> and <presence>, <query> 
within <iq> and so on). If the protocol remains strict here, Jabber 
implementations will not have as much to compensate for and can be much 
better optimized. It's also much easier to program when you expect 
namespaces to always use certain element names in certain places. Again 
I stress that this does not break the XML Namespaces Recommendation in 
any fashion, we are simply adding additional restrictions to Jabber.

Julian
-- 
email: julian at jabber.org
jabber:julian at jabber.org




More information about the JDev mailing list