Identity constraint is not enforced on xs:anySimpleType -------------------------------------------------------
Key: XERCESC-1393 URL: http://issues.apache.org/jira/browse/XERCESC-1393 Project: Xerces-C++ Type: Bug Components: Validating Parser (Schema) (Xerces 1.5 or up only) Versions: 2.6.0 Environment: Windows XP SP2, Visual C++ 6.0 Reporter: Alberto Massari I have this schema file <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Songs"> <xs:complexType> <xs:sequence> <xs:element name="Song" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="title" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:unique name="Song"> <xs:selector xpath="Song"/> <xs:field xpath="@title"/> </xs:unique> </xs:element> </xs:schema> It defines a root named "Songs" with child nodes named "Song" having one attribute, with no type specified (so, it is assumed to be xs:anySimpleType). It also defines a uniqueness constraint to avoid having two "Song" element with the same title. I also have an XML associated with this schema, <Songs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd_unique.xsd"> <Song title="Hotel California"/> <Song title="Hotel California"/> </Songs> that lists the same song twice. However, running "Saxcount -n -s xsd_unique.xml" on the XML file result in no validation errors being reported. But changing the schema to say <xs:attribute name="title" type="xs:string" use="required"/> makes the validator report "Duplicate unique value declared for identity constraint of element 'Songs'." The cause of the error is in inline int AnySimpleTypeDatatypeValidator::compare(const XMLCh* const, const XMLCh* const , MemoryManager* const) { return -1; } that always report two instances of xs:anySimpleType to be different, regardless of their values. Strictly speaking, this is not an error, as the XMLSchema specs say (§ 2.2.1.2, Simple Type Definition): "The mapping from lexical space to value space is unspecified for items whose type definition is the ·simple ur-type definition·. Accordingly this specification does not constrain processors' behaviour in areas where this mapping is implicated, for example [...] checking identity constraints involving such items. Note: The Working Group expects to return to this area in a future version of this specification." Anyhow, this causes confusion in the users (because Xerces-J reports the error, for instance) so I would like to do one (or both) of the following changes: 1) implement the "compare" operation to do a lexical space comparation (i.e. using XMLString::equals) 2) emit a warning when an identity field involves a xs:anySimpleType Feedback? Alberto -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]