Re: Facing problem when validating XML with multiple root node Schema

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