You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org> on 2009/11/22 19:43:40 UTC
[jira] Updated: (XERCESJ-1351) Type alternatives implementation
seems to be broken
[ https://issues.apache.org/jira/browse/XERCESJ-1351?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Glavassevich updated XERCESJ-1351:
------------------------------------------
Fix Version/s: 2.10.0
> Type alternatives implementation seems to be broken
> ---------------------------------------------------
>
> Key: XERCESJ-1351
> URL: https://issues.apache.org/jira/browse/XERCESJ-1351
> Project: Xerces2-J
> Issue Type: Bug
> Components: XML Schema 1.1 Structures
> Affects Versions: 2.9.1
> Environment: Windows XP, JRE 1.5.0_15
> Reporter: Mukul Gandhi
> Assignee: Michael Glavassevich
> Fix For: 2.10.0
>
> Attachments: type-alternatives-updat1.patch, type-alternatives.patch
>
>
> I am running the latest Xerces-J development code from SVN repository. I tried the following sample XML document, and the XML Schema document.
> XML document:
> <PERSON xsi:noNamespaceSchemaLocation="person.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <FNAME>Mukul</FNAME>
> <LNAME>Gandhi</LNAME>
> <DOB>1999-06-02</DOB>
> <ADDRESS type="short">my address</ADDRESS>
> </PERSON>
> Schema:
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <xs:element name="PERSON" type="PersonType" />
> <xs:complexType name="PersonType">
> <xs:sequence>
> <xs:element name="FNAME" type="xs:string" />
> <xs:element name="LNAME" type="xs:string" />
> <xs:element name="DOB" type="xs:date" />
> <xs:element name="ADDRESS" type="LongAddress">
> <xs:alternative test="@type='short'" type="ShortAddress"/>
> <xs:alternative test="@type='long'" type="LongAddress"/>
> </xs:element>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="ShortAddress">
> <xs:simpleContent>
> <xs:extension base="shortString">
> <xs:attribute name="type" type="xs:string"/>
> </xs:extension>
> </xs:simpleContent>
> </xs:complexType>
> <xs:simpleType name="shortString">
> <xs:restriction base="xs:string">
> <xs:minLength value="1" />
> <xs:maxLength value="50" />
> </xs:restriction>
> </xs:simpleType>
> <xs:complexType name="LongAddress">
> <xs:sequence>
> <xs:element name="street1" type="xs:string" />
> <xs:element name="street2" type="xs:string" minOccurs="0" />
> <xs:element name="city" type="xs:string" />
> <xs:element name="state" type="xs:string" />
> <xs:element name="pin" type="xs:string" />
> <xs:element name="country" type="xs:string" />
> </xs:sequence>
> <xs:attribute name="type" type="xs:string"/>
> </xs:complexType>
> </xs:schema>
> When I apply validation using the above examples, with Xerces, I get following errors:
> [Error] person.xsd:11:69: s4s-elt-must-match.1: The content of 'ADDRESS' must match (annotation?, (simpleType
> | complexType)?, alternative*, (unique | key | keyref)*)). A problem was found starting at: alternative.
> [Error] person.xml:5:45: cvc-complex-type.2.3: Element 'ADDRESS' cannot have character [children], because the
> type's content type is element-only.
> [Error] person.xml:5:45: cvc-complex-type.2.4.b: The content of element 'ADDRESS' is not complete. One of '{st
> reet1}' is expected.
> It seems to me, that type alternative support in Xerces is not working as expected.
> Some comments about the Java class, org.apache.xerces.impl.xpath.XPath20 (which I think is used by type alternatives)
> The method,
> public boolean evaluateNodeTest(QName element, XMLAttributes attributes)
> doesn't use the parameter, "element" anywhere in the method body.
> Please correct me, on any of the points I have mentioned.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org