You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by "Herbert Oppmann (JIRA)" <xe...@xml.apache.org> on 2012/05/08 13:41:49 UTC

[jira] [Updated] (XERCESC-1981) Schema validation error with empty key

     [ 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: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org