[
https://issues.apache.org/jira/browse/XERCESC-1981?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Herbert Oppmann updated XERCESC-1981:
-------------------------------------
Attachment: EmptyKey.zip
Example XML and Schema.
> Schema validation error with empty key
> --------------------------------------
>
> Key: XERCESC-1981
> URL: https://issues.apache.org/jira/browse/XERCESC-1981
> Project: Xerces-C++
> Issue Type: Bug
> Components: Validating Parser (XML Schema)
> Affects Versions: 2.8.0, 3.0.0, 3.1.0, 3.1.1
> Environment: Windows XP SP3, Command Prompt, example program DOMCount.
> Reporter: Herbert Oppmann
> Priority: Minor
> Attachments: EmptyKey.zip
>
>
> With the example below, the validation returns "identity constraint key for
> element 'Profile' not found".
> This is caused by the attribute TextId having the empty string as value,
> which is used as keyref in Item/Name and as key in Language/Text. Other XML
> parsers do not complain, and examining the W3C XML Schema specification I
> also did not find any reason why an empty string should not be acceptable.
> (I know of course, that it is not _wise_ to use an empty string as
> key/keyref. This was done by mistake.)
> Example XML:
> <?xml version="1.0" encoding="UTF-8"?>
> <Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns="http://www.example.com/Profile"
> xsi:schemaLocation="http://www.example.com/Profile Profile.xsd">
> <Item Id="2">
> <Name TextId=""/>
> </Item>
> <Item Id="1">
> <Name TextId="NAME1"/>
> </Item>
> <Language>
> <Text TextId="NAME1" Value="Some name"/>
> <Text TextId="" Value="Empty!"/>
> </Language>
> </Profile>
> And this example Schema:
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:test="http://www.example.com/Profile"
> targetNamespace="http://www.example.com/Profile"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> <xsd:element name="Profile">
> <xsd:complexType>
> <xsd:sequence>
> <xsd:element name="Item" type="test:ItemT"
> maxOccurs="unbounded"/>
> <xsd:element name="Language"
> type="test:LanguageT"/>
> </xsd:sequence>
> </xsd:complexType>
> <xsd:key name="Text-Id">
> <xsd:selector xpath=".//test:Language/test:Text"/>
> <xsd:field xpath="@TextId"/>
> </xsd:key>
> <xsd:keyref name="Name-TextRef" refer="test:Text-Id">
> <xsd:selector xpath=".//test:Name"/>
> <xsd:field xpath="@TextId"/>
> </xsd:keyref>
> </xsd:element>
> <xsd:complexType name="ItemT">
> <xsd:sequence>
> <xsd:element name="Name" minOccurs="0">
> <xsd:complexType>
> <xsd:attribute name="TextId"
> type="test:RefIdT" use="required"/>
> </xsd:complexType>
> </xsd:element>
> </xsd:sequence>
> <xsd:attribute name="Id" type="xsd:unsignedInt" use="required"/>
> </xsd:complexType>
> <xsd:complexType name="LanguageT">
> <xsd:sequence>
> <xsd:element name="Text" maxOccurs="unbounded">
> <xsd:complexType>
> <xsd:attribute name="TextId"
> type="test:IdT" use="required"/>
> <xsd:attribute name="Value"
> type="xsd:string" use="required"/>
> </xsd:complexType>
> </xsd:element>
> </xsd:sequence>
> </xsd:complexType>
> <xsd:simpleType name="IdT">
> <xsd:restriction base="xsd:token"/>
> </xsd:simpleType>
> <xsd:simpleType name="RefIdT">
> <xsd:restriction base="xsd:token"/>
> </xsd:simpleType>
> </xsd:schema>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]