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>