- From: <bugzilla@wiggum.w3.org>
- Date: Tue, 27 Feb 2007 16:22:50 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4353 Summary: [XSLT+XQuery] Identity constraints at element level Product: XPath / XQuery / XSLT Version: Recommendation Platform: PC OS/Version: Windows XP Status: NEW Severity: normal Priority: P2 Component: XPath AssignedTo: chamberl@almaden.ibm.com ReportedBy: mike@saxonica.com QAContact: public-qt-comments@w3.org Both XSLT and XQuery state that when validating an element node (as distinct from a document node), identity constraints specified in the element declaration are not taken into account. XQuery says: If the operand node is an element node, the validation rules named "Validation Root Valid (ID/IDREF)" and "Identity-constraint Satisfied" are not applied. This means that document-level constraints relating to uniqueness and referential integrity are not enforced. XSLT says: Validation of an element or attribute node only takes into account constraints on the content of the element or attribute. Validation rules affecting the document as a whole are not applied. Specifically, this means... The validation rule "Validation Rule: Identity-constraint Satisfied" is not applied. In both cases, the reasoning given in the spec is spurious. Identity constraints (xs:unique, xs:key, and xs:keyref) defined on an element declaration are not document-level constraints, their effect is local to the element on which they are defined. It would be perfectly possible to apply such constraints when validating at element level, and it seems odd that we should diverge from the XML Schema rules in this regard. There might be some rationale if we ignored everything on the element declaration other than its type, but we don't: we take into account properties of the element declaration such as abstract="true", nillability, and fixed values. The effect of the omission is that it's very easy to output a document which appears to have been validated, but which will then fail validation if put through a free-standing schema validator. This is also true of ID/IDREF constraints, of course, but in this case there is a solid justification, in that validation of a non-document element would otherwise give spurious IDREF errors. In the XSLT case, it's not entirely clear when this rule applies. Does it apply, for example where validation is initiated using <lre xsl:type="xxx">? Michael Kay
Received on Tuesday, 27 February 2007 16:23:00 UTC