Dantzler, DeWayne C wrote:
Ok, I turned on namespace processing using setDoNamespace(true), but the
results are not what I expected (see below). I want to use an external
schema specified by the caller and not the schema called out in the XML
document. How do I do this with Xerces? And what exactly is the cause of
the below error?

========================================================================
=================
Error reported by the Parser

<?xml-stylesheet type="text/xsl" href="BCME_Transform.xsl"?>
<bcme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
Line 4::Column 58
xsi:noNamespaceSchemaLocation="787_BCMEdition_v1.1.xds">

Parser Error Message: The schemaLocation attribute does not contain
pairs of values.

You used
 _XmlDOMParser->setExternalSchemaLocation((const char* const)schema);
that requires a string like "uri schema uri2 schema2" (i.e. "pairs of values") where 'schema' is the location of the schema for the namespace 'uri' and 'schema2' is the location of the schema for the namespace 'uri2'. In your case the schema is for the empty namespace, so you must use setExternalNoNamespaceSchemaLocation

Alberto


========================================================================
==================

DeWayne Dantlzer
206-544-3658


-----Original Message-----
From: Alberto Massari [mailto:[email protected]] Sent: Thursday, January 08, 2009 11:30 PM
To: [email protected]
Subject: Re: Validation using a schema

You also need to turn on namespace processing using
setDoNamespaces(true)

Alberto

Dantzler, DeWayne C wrote:
Hello,

I trying for the first time to validate an XML document with a schema,

but I'm not sure of the results from the parser. I'm currently using Xerces C++ 2.8.0 DOM Parser. What is the correct syntax to specify a schema? If the schema and xml file are in the same directory can I just use the filename of the schema or do I have to specify a full
pathname?
If the schema is not in the same directory or location then what is the correct syntax? Here's what I've done.

Code snippet:
==========================================================
//perform the necessary DOM Parser init and setup ... omitting all the

gory details

//setup the Entity Resolver to redirect the parser to use the external

Schema _XmlDOMParser->setEntityResolver(resolver);

//Turn on the necessary features to allow validation by an external Schema _XmlDOMParser->setValidationScheme(_XmlDOMParser->Val_Always);

//enable schema processing
_XmlDOMParser->setDoSchema(true);

//specify schema to use where scheme syntax is the filename i.e bcme.xsd _XmlDOMParser->setExternalSchemaLocation((const char* const)schema); _XmlDOMParser->loadGrammar(schema, Grammar::SchemaGrammarType, true);


//ignore DTD's
_XmlDOMParser->setSkipDTDValidation(false);

//attempt to parse the xml
_XmlDOMParser->parse(xmlDoc2Parse);
==============================================================

Results: Lots of Parser Errors but several of the elments are defined in the schema. See schema and xml below

The following error occurred during XML Schema or DTD validation

XML Parser Error in file "bcme.xml"

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="BCME_Transform.xsl"?>
Line 3::Column 6        <bcme
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

Parser Error Message: Unknown element 'bcme'

The following error occurred during XML Schema or DTD validation

XML Parser Error in file "bcme.xml"

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="BCME_Transform.xsl"?>
Line 3::Column 17       <bcme
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

Parser Error Message: Attribute 'xmlns:xsi' is not declared for element 'bcme'

The following error occurred during XML Schema or DTD validation

<?xml-stylesheet type="text/xsl" href="BCME_Transform.xsl"?> <bcme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
Line 4::Column 32
xsi:noNamespaceSchemaLocation="BCMEdition_v1.1.xds">

Parser Error Message: Attribute 'xsi:noNamespaceSchemaLocation' is not

declared for element 'bcme'

The following error occurred during XML Schema or DTD validation

<bcme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:noNamespaceSchemaLocation="BCMEdition_v1.1.xds">
Line 5::Column 11       <edition>

Parser Error Message: Unknown element 'edition'

The following error occurred during XML Schema or DTD validation

xsi:noNamespaceSchemaLocation="BCMEdition_v1.1.xds">
<edition>
Line 6::Column 15
<editionid>D633W101-AFA_20080604.0000000000</editionid>

Parser Error Message: Unknown element 'editionid'
==============================================================

XML Document Snippet:

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="BCME_Transform.xsl"?> <bcme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
 xsi:noNamespaceSchemaLocation="BCMEdition_v1.1.xds">
  <edition>
    <editionid>D633W101-AFA_20080604.0000000000</editionid>
    <editionType>Replace</editionType>
    <editionNumber>0000000000</editionNumber>
  </edition>

==============================================================
Schema Snippet

<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
        
        <xs:element name="bcme">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="edition"/>
                                <xs:element ref="publication"/>
                                <xs:element ref="files"/>
                                <xs:element ref="toc"/>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
        <xs:element name="edition">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="editionid"/>
                                <xs:element ref="editionType"/>
                                <xs:element ref="editionNumber"/>
                                <xs:element ref="lastEdition"
minOccurs="0"/>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
==============================================================

DeWayne Dantlzer




Reply via email to