Hi Michael, I was using a slightly older SVN code for Xerces. Now I have downloaded today the latest Xerces SVN code. I am creating a file like, xercesImpl.jar from the latest SVN code and using it.
I am now trying the below examples (with corrections in the Schema as you have pointed). XML file: <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"> <street1>ddd</street1> <street2>aaa</street2> <city>aaa</city> </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="Address"> <xs:alternative test="@type='short'" type="ShortAddress"/> <xs:alternative test="@type='long'" type="LongAddress"/> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="Address"> <xs:sequence> <xs:element name="street1" type="xs:string" /> <xs:element name="street2" type="xs:string" minOccurs="0" /> </xs:sequence> <xs:attribute name="type" type="xs:string"/> </xs:complexType> <xs:complexType name="ShortAddress"> <xs:complexContent> <xs:extension base="Address"> <xs:sequence> <xs:element name="city" type="xs:string" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="LongAddress"> <xs:complexContent> <xs:extension base="Address"> <xs:sequence> <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:extension> </xs:complexContent> </xs:complexType> </xs:schema> When I perform the validation (using the jaxp.SourceValidator utility), 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:8:8: cvc-complex-type.2.4.d: Invalid content was found starting with element 'city'. No child element is expected at this point. I saw following code in the Java file, XSDElementTraverser.java if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) { while (childName.equals(SchemaSymbols.ELT_ALTERNATIVE)) { fSchemaHandler.fTypeAlternativeTraverser.traverse(child, element, schemaDoc, grammar); It seems to me, that TypeAlternativeTraverser is triggered only when version 1.1 is specified in the XSD file. How should I specify this information in the Schema file? Thanks for your help ... On Wed, Dec 17, 2008 at 1:39 AM, Michael Glavassevich (JIRA) <[email protected]> wrote: > > [ > https://issues.apache.org/jira/browse/XERCESJ-1351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12657142#action_12657142 > ] > > Michael Glavassevich commented on XERCESJ-1351: > ----------------------------------------------- > > Mukul, I get different behaviour when I try your test. The only error I'm > getting is: > > org.xml.sax.SAXParseException: cvc-minLength-valid: Value '' with length = > '0' is not facet-valid with respect to minLength '1' for type 'shortString'. -- Regards, Mukul Gandhi --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
