it is impossible to compare QNames

This is feedback on the WS-CDL Choreography CR of 2005-11-09. I have been
implementing CDL at a bank and have some questions and feedback on the CR.

The problem I have with the CR is the XML Schema for WS-CDL requires you to
compare a QName type with an NCName type. This comparison is impossible
because the QName type does not have equality or ordering defined for it.

Section 4.2 of the CDL specification states that field
/package/relationshipType/roleType/@typeRef (a QName), must reference the
field /package/roleType/@name (a NCName). I took this from the text: 'A
relationshipType element MUST have exactly two roleTypes defined. Each
roleType is specified by the typeRef attribute within the roleType element.
The "QName" value of the typeRef attribute of the roleType element MUST
reference the name of a roleType.'

Please tell me why the datatype QName was used. I have been unable to work
out why QName was used. QName is normally used to reference elements rather
than the contents of elements.

I have been assuming the word "reference" is as an equality test as defined
by XPath 1.0. This should be explicit in the specification.

Looking through the mail-list examples (e.g.
http://lists.w3.org/Archives/Public/public-ws-chor/2005Sep/0001) it seems
that QName and NCName are being used in the style of xs:ID and xs:IDREF. Why
not just use xs:ID and xs:IDREF? This would also have the benefit of making
the constraint that a typeRef must reference a roleType name explicit. Both
xs:ID and xs:IDREF are subtypes of xs:NCName. 

At the very least typeRef and roleType should be some type of string that is
comparable, otherwise references cannot be tested.

Matthew Rawlings
+44 791 539 7824

Received on Monday, 29 May 2006 01:16:35 UTC