- 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