diff --git a/src/xercesc/validators/schema/identity/XercesXPath.cpp b/src/xercesc/validators/schema/identity/XercesXPath.cpp index b7c301fab8eb149ec9fa69dccaca8d95275a8201..ebd2002e910f0dce67757c64dd0fe0ea911f405e 100644 --- a/src/xercesc/validators/schema/identity/XercesXPath.cpp +++ b/src/xercesc/validators/schema/identity/XercesXPath.cpp @@ -390,7 +390,9 @@ void XercesXPath::parseExpression(XMLStringPool* const stringPool, ValueVectorOf<int> tokens(16, fMemoryManager); XPathScannerForSchema scanner(stringPool); - scanner.scanExpression(fExpression, 0, length, &tokens); + if(!scanner.scanExpression(fExpression, 0, length, &tokens)) + ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_TokenNotSupported, fMemoryManager); + bool firstTokenOfLocationPath=true; unsigned int tokenCount = tokens.size(); RefVectorOf<XercesStep>* stepsVector = new (fMemoryManager) RefVectorOf<XercesStep>(16, true, fMemoryManager); diff --git a/tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd b/tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd new file mode 100644 index 0000000000000000000000000000000000000000..7a7bf8f65f01b602c98307af3cb1aecb1ef894a3 --- /dev/null +++ b/tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd @@ -0,0 +1,20 @@ +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> + +<xs:element name="Songs"> + <xs:complexType> + <xs:sequence> + <xs:element name="Song" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="title" use="required"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + + <xs:unique name="Song"> + <xs:selector xpath="*:Song"/> + <xs:field xpath="@title"/> + </xs:unique> +</xs:element> + +</xs:schema> \ No newline at end of file diff --git a/tests/src/XSTSHarness/regression/Xerces.testSet b/tests/src/XSTSHarness/regression/Xerces.testSet index 3555e429540a2cdf18eee9a412e540e601fd0275..106e5fafdc0d389b6d68147662e5e69ba6c11553 100644 --- a/tests/src/XSTSHarness/regression/Xerces.testSet +++ b/tests/src/XSTSHarness/regression/Xerces.testSet @@ -419,4 +419,15 @@ <current status="accepted" date="2008-02-13"/> </schemaTest> </testGroup> + <testGroup name="XERCESC-1787"> + <annotation> + <documentation>Wildcard namespace prefixes in XPath are not reported as errors</documentation> + </annotation> + <documentationReference xlink:href="https://issues.apache.org/jira/browse/XERCESC-1787"/> + <schemaTest name="XERCESC-1787"> + <schemaDocument xlink:href="./XERCESC-1787/schema.xsd"/> + <expected validity="invalid"/> + <current status="accepted" date="2008-03-14"/> + </schemaTest> + </testGroup> </testSet> \ No newline at end of file