- From: Vineet Chopra <incivinci@gmail.com>
- Date: Thu, 14 Oct 2004 10:39:31 +0400
- To: xmlschema-dev@w3.org
Hi all, I will make things more clear - Can anybody point out the problem - I have a multiple root node schema. And I am validation my XML against this schema using JDOM with XercesJ parser. Code sections as follows - =========================================================== if(new Boolean(CommonsUtil.readProps(Globals.SERVICE_ID, "xmlSchemaValidation")).booleanValue()){ log.debug("Started validating XML against defined schema"); builder.setValidation(true); XMLParseErrorHandler errorHandler = new XMLParseErrorHandler(xml); builder.setErrorHandler(errorHandler); builder.setFeature("http://apache.org/xml/features/validation/schema", true); builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", CommonsUtil.readProps(Globals.SERVICE_ID, "xmlSchemaLocation")); }else{ log.debug("XML Schema Validation switched off"); } Document doc = builder.build(src); =========================================================== The parser validates one XML with root node "Response" but gives the following error while validating XML with root node "Request" - Error: cvc-elt.1: Cannot find the declaration of element 'Request'. at line 1, co lumn 10 in entity null I know that the error description suggests that there is no definition for the tag "Request" in the schema. But I have cross checked the schema and the XML with XMLSpy, no problem in that. Here is the schema, though a long one - <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Activity"> <xs:complexType> <xs:attribute name="ID" type="xs:string" use="required"/> <xs:attribute name="Name" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="Applicant"> <xs:complexType> <xs:all> <xs:element ref="ApplicantNameAR" minOccurs="0"/> <xs:element ref="ApplicantNameEN" minOccurs="0"/> <xs:element ref="BirthPlaceAR" minOccurs="0"/> <xs:element ref="BirthPlaceEN" minOccurs="0"/> <xs:element ref="Comments" minOccurs="0"/> <xs:element ref="DOB" minOccurs="0"/> <xs:element ref="EmiratesId" minOccurs="0"/> <xs:element ref="EmiratesID" minOccurs="0"/> <xs:element ref="EmiratesDescAR" minOccurs="0"/> <xs:element ref="EmiratesDescEN" minOccurs="0"/> <xs:element ref="JobId" minOccurs="0"/> <xs:element ref="JobDescAR" minOccurs="0"/> <xs:element ref="JobDescEN" minOccurs="0"/> <xs:element ref="McValidityDate" minOccurs="0"/> <xs:element ref="McStatus" minOccurs="0"/> <xs:element ref="NationalityId" minOccurs="0"/> <xs:element ref="NationalityDescAR" minOccurs="0"/> <xs:element ref="NationalityDescEN" minOccurs="0"/> <xs:element ref="POBox" minOccurs="0"/> <xs:element ref="PersonType" minOccurs="0"/> <xs:element ref="PersonNumber" minOccurs="0"/> <xs:element ref="Passport" minOccurs="0"/> <xs:element ref="PassportNb" minOccurs="0"/> <xs:element ref="Sex" minOccurs="0"/> <xs:element ref="Sponsor" minOccurs="0"/> <xs:element ref="Status" minOccurs="0"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="AcknowledgementInfo"> <xs:complexType> <xs:all> <xs:element ref="Committed"/> <xs:element ref="Duplicate"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="ApplicantInfo"> <xs:complexType> <xs:sequence> <xs:element ref="Applicant" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ApplicantNameAR" type="xs:string"/> <xs:element name="ApplicantNameEN" type="xs:string"/> <xs:element name="AreaId" type="xs:string"/> <xs:element name="AreaDescAR" type="xs:string"/> <xs:element name="AreaDescEN" type="xs:string"/> <xs:element name="BirthPlaceAR" type="xs:string"/> <xs:element name="BirthPlaceEN" type="xs:string"/> <xs:element name="Building" type="xs:string"/> <xs:element name="Body"> <xs:complexType> <xs:all> <xs:element ref="Process"/> <xs:element ref="ApplicantInfo" minOccurs="0"/> <xs:element ref="AcknowledgementInfo" minOccurs="0"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="CityId" type="xs:string"/> <xs:element name="CityDescAR" type="xs:string"/> <xs:element name="CityDescEN" type="xs:string"/> <xs:element name="Committed" type="xs:string"/> <xs:element name="Contact1" type="xs:string"/> <xs:element name="Contact2" type="xs:string"/> <xs:element name="Comments" type="xs:string"/> <xs:element name="DOB" type="xs:string"/> <xs:element name="Duplicate" type="xs:string"/> <xs:element name="Date" type="xs:string"/> <xs:element name="DepartmentInfo"> <xs:complexType> <xs:all> <xs:element ref="Sender"/> <xs:element ref="Receiver"/> <xs:element ref="Transaction"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="Description" type="xs:string"/> <xs:element name="EmiratesDescAR" type="xs:string"/> <xs:element name="EmiratesDescEN" type="xs:string"/> <xs:element name="ExpiryDate" type="xs:string"/> <xs:element name="EmiratesId" type="xs:string"/> <xs:element name="EmiratesID" type="xs:string"/> <xs:element name="FlatNumber" type="xs:string"/> <xs:element name="FusionInfo"> <xs:complexType> <xs:all> <xs:element ref="Activity"/> <xs:element ref="Process"/> <xs:element ref="TransactionID"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="Header"> <xs:complexType> <xs:all> <xs:element ref="DepartmentInfo"/> <xs:element ref="FusionInfo"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="Id"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="140"/> <xs:enumeration value="180"/> <xs:enumeration value="EMCS-001"/> <xs:enumeration value="EMCS-002"/> <xs:enumeration value="EMCS-003"/> <xs:enumeration value="EMCS-004"/> <xs:enumeration value="EMCS-005"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="IssueDate" type="xs:string"/> <xs:element name="JobDescAR" type="xs:string"/> <xs:element name="JobDescEN" type="xs:string"/> <xs:element name="JobId" type="xs:string"/> <xs:element name="McValidityDate" type="xs:string"/> <xs:element name="McStatus" type="xs:string"/> <xs:element name="NameAR" type="xs:string"/> <xs:element name="NameEN" type="xs:string"/> <xs:element name="NationalityId" type="xs:string"/> <xs:element name="NationalityDescAR" type="xs:string"/> <xs:element name="NationalityDescEN" type="xs:string"/> <xs:element name="Number" type="xs:string"/> <xs:element name="POBox" type="xs:string"/> <xs:element name="Passport"> <xs:complexType> <xs:all> <xs:element ref="ExpiryDate"/> <xs:element ref="IssueDate"/> <xs:element ref="Number"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="PassportNb" type="xs:string"/> <xs:element name="PersonNumber" type="xs:string"/> <xs:element name="PersonType" type="xs:string"/> <xs:element name="Process"> <xs:complexType> <xs:all> <xs:element ref="Comments" minOccurs="0"/> <xs:element ref="Id" minOccurs="0"/> <xs:element ref="Description" minOccurs="0"/> <xs:element ref="Status" minOccurs="0"/> </xs:all> <xs:attribute name="ID" type="xs:string" use="optional"/> <xs:attribute name="Name" type="xs:string" use="optional"/> </xs:complexType> </xs:element> <xs:element name="ProcessType" type="xs:string"/> <xs:element name="Receiver"> <xs:complexType> <xs:all> <xs:element ref="Id"/> <xs:element ref="Description"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="ReferenceNumber" type="xs:string"/> <xs:element name="Response"> <xs:complexType> <xs:all> <xs:element ref="Header"/> <xs:element ref="Body"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="Request"> <xs:complexType> <xs:all> <xs:element ref="Header"/> <xs:element ref="Body"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="Status" type="xs:string"/> <xs:element name="Sex" type="xs:string"/> <xs:element name="Sponsor"> <xs:complexType> <xs:all> <xs:element ref="AreaId"/> <xs:element ref="AreaDescAR"/> <xs:element ref="AreaDescEN"/> <xs:element ref="Building"/> <xs:element ref="CityId"/> <xs:element ref="CityDescAR"/> <xs:element ref="CityDescEN"/> <xs:element ref="Contact1"/> <xs:element ref="Contact2"/> <xs:element ref="EmiratesId"/> <xs:element ref="EmiratesDescAR"/> <xs:element ref="EmiratesDescEN"/> <xs:element ref="FlatNumber"/> <xs:element ref="NameAR"/> <xs:element ref="NameEN"/> <xs:element ref="SponsorType"/> <xs:element ref="SponsorNumber"/> <xs:element ref="Street"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="SponsorType" type="xs:string"/> <xs:element name="SponsorNumber" type="xs:string"/> <xs:element name="Street" type="xs:string"/> <xs:element name="Sender"> <xs:complexType> <xs:all> <xs:element ref="Id"/> <xs:element ref="Description"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="Transaction"> <xs:complexType> <xs:all> <xs:element ref="Type"/> <xs:element ref="ProcessType"/> <xs:element ref="Date"/> <xs:element ref="ReferenceNumber"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="TransactionID" type="xs:string"/> <xs:element name="Type" type="xs:string"/> </xs:schema> Thanks once again. On Tue, 12 Oct 2004 16:50:41 +0400, Vineet Chopra <incivinci@gmail.com> wrote: > Hello, > > I am facing a problem while validating an XML document against a > schema, using JDOM with XercesJ parser. > > Description - > > My code is consuming XML messages sent over HTTP Connection. I want to > validate the XML messages before parsing the same. For this I have > created a single Schema which defines all incoming XML messages. The > resultant schema has multiple root nodes. > > The code validates one root node for an incoming XML mesaage but fails > to validate root nodes of another XML messages. > > The error which I get is > > Error: cvc-elt.1: Cannot find the declaration of element 'Request'. at > line 1, column 10 in entity null > > The schema does contain a definition for the tag "Request". I have > cross checked it umpteen times. > > I shall be thankful if you throw some light on this. > > Vineet Chopra >
Received on Thursday, 14 October 2004 06:39:32 UTC