ok problem is solved. it seems it was related to using namespaces vs
not using them. i am posting code so that other who need a fast way to
setup xsd on xerces can simply copy without wasting time on the non
existent documentation

------------------------ CODE --------------------------------------------
    XercesDOMParser* parser = new XercesDOMParser();

    parser->setValidationScheme(XercesDOMParser::Val_Always);
    parser->setValidationSchemaFullChecking(true);
    parser->setDoNamespaces(true);  // this must be true, even if your
using xsi:noNamespaceSchemaLocation
    parser->setDoSchema(true);

    ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
    parser->setErrorHandler(errHandler);

    char* xmlFile = "test.xml";

    try
    {
        parser->parse(xmlFile);
        DOMElement *domElement =
parser->getDocument()->getElementById( XMLString::transcode("one"));
        cout<<XMLString::transcode(domElement->getNodeName())<<endl;
        .......

--------------- rules.xsd
------------------------------------------------------------

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; >
<xsd:element name="AnElement">
 <xsd:complexType>
   <xsd:attribute name="id" type="xsd:ID" use="required"/>
 </xsd:complexType>
</xsd:element>
</xsd:schema>

------------------- test.xml
----------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<Server xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:noNamespaceSchemaLocation="rules.xsd" >
    <AnElement id="one" >
        <data>dfdfd</data>
        <value>dfdfd</value>
</AnElement>
</Server>

Reply via email to