Hi Mukul, The language identifier [1] we were using for XML Schema 1.1 was incorrect. I just committed a fix to SVN. You should replace occurrences of "http://www.w3.org/2001/XMLSchema/v1.1" with "http://www.w3.org/XML/XMLSchema/v1.1".
Thanks. [1] http://www.w3.org/TR/xmlschema11-1/#nonnormative-language-ids Michael Glavassevich XML Parser Development IBM Toronto Lab E-mail: [email protected] E-mail: [email protected] Michael Glavassevich/Toronto/i...@ibmca wrote on 12/17/2008 07:19:53 AM: > Hi Mukul, > > The jaxp.SourceValidator sample creates a SchemaFactory for XML > Schema 1.0 by default. There's no identifier for an XML Schema 1.1 > document. You need to explicitly select an XML Schema 1.1 processor > if you want to load and use it. > > For example: > > import javax.xml.transform.stream.StreamSource; > import javax.xml.validation.Schema; > import javax.xml.validation.SchemaFactory; > import javax.xml.validation.Validator; > > public class XMLSchema11Test { > > public static void main (String [] args) { > try { > System.setProperty("javax.xml.validation.SchemaFactory: > http://www.w3.org/2001/XMLSchema/v1.1", > "org.apache.xerces.jaxp.validation.XMLSchema11Factory"); > SchemaFactory sf = SchemaFactory.newInstance("http: > //www.w3.org/2001/XMLSchema/v1.1"); > Schema s = sf.newSchema(new StreamSource(args[0])); > Validator v = s.newValidator(); > v.validate(new StreamSource(args[1])); > } > catch (Exception e) { > e.printStackTrace(); > } > } > } > > Thanks. > > Michael Glavassevich > XML Parser Development > IBM Toronto Lab > E-mail: [email protected] > E-mail: [email protected] > > "Mukul Gandhi" <[email protected]> wrote on 12/17/2008 12:55:42 AM: > > > 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]
