Hi,
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++ 3.0 SAX2 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:*
==========================================================
SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true);
parser->setFeature(XMLUni::fgXercesSchema, true);
parser->setFeature(XMLUni::fgXercesSchemaFullChecking, true);
XMLCh* str (XMLString::transcode("D://Documents//CityGML.xsd"));
parser->setProperty(XMLUni::fgXercesSchemaExternalSchemaLocation, str);
==============================================================
*Results:*
Fatal Error: schemaLocation does not contain namespace-location pairs at line: 2
==============================================================
*XML Document Snippet:*
<?xml version="1.0" encoding="ASCII"?>
<CityModel xmlns="http://www.ikg.uni-bonn.de/sig3d/pilot3d"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ikg.uni-bonn.de/sig3d/pilot3d/CityGML.xsd">
...
==============================================================
*
Schema Snippet:*
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.citygml.org/citygml/profiles/base/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.citygml.org/citygml/profiles/base/1.0"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.opengis.net/citygml/appearance/1.0"
schemaLocation="CityGML/appearance.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/building/1.0"
schemaLocation="CityGML/building.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/cityfurniture/1.0"
schemaLocation="CityGML/cityFurniture.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/cityobjectgroup/1.0"
schemaLocation="CityGML/cityObjectGroup.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/generics/1.0"
schemaLocation="CityGML/generics.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/landuse/1.0"
schemaLocation="CityGML/landUse.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/relief/1.0"
schemaLocation="CityGML/relief.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/transportation/1.0"
schemaLocation="CityGML/transportation.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/vegetation/1.0"
schemaLocation="CityGML/vegetation.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/waterbody/1.0"
schemaLocation="CityGML/waterBody.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/texturedsurface/1.0"
schemaLocation="CityGML/texturedSurface.xsd"/>
</xs:schema>
==============================================================
Greets,
Dennis