diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp index f5696c231d500033de95d6e27607a4c9484b0e3a..3c43a4b0b3a80ec1201884afbd8826ec06a3dda3 100644 --- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp +++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp @@ -43,6 +43,16 @@ AnySimpleTypeDatatypeValidator::~AnySimpleTypeDatatypeValidator() } +// --------------------------------------------------------------------------- +// DatatypeValidators: Compare methods +// --------------------------------------------------------------------------- +int AnySimpleTypeDatatypeValidator::compare( const XMLCh* const lValue + , const XMLCh* const rValue + , MemoryManager* const) +{ + return XMLString::compareString(lValue, rValue); +} + // --------------------------------------------------------------------------- // AnySimpleTypeDatatypeValidator: Instance methods // --------------------------------------------------------------------------- diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp index 2eaa74d78c35a8335746a6950b7825adbf6626d1..b30b4c6e8df3070c982732520202b9ff0a6d3b43 100644 --- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp +++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp @@ -95,7 +95,7 @@ public: * */ - bool isSubstitutableBy(const DatatypeValidator* const toCheck); + virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); //@} @@ -113,7 +113,7 @@ public: * @param value2 string to compare * */ - int compare(const XMLCh* const value1, const XMLCh* const value2 + virtual int compare(const XMLCh* const value1, const XMLCh* const value2 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); @@ -153,17 +153,6 @@ inline bool AnySimpleTypeDatatypeValidator::isAtomic() const { return false; } - -// --------------------------------------------------------------------------- -// DatatypeValidators: Compare methods -// --------------------------------------------------------------------------- -inline int AnySimpleTypeDatatypeValidator::compare(const XMLCh* const, - const XMLCh* const - , MemoryManager* const) -{ - return -1; -} - // --------------------------------------------------------------------------- // DatatypeValidators: Validation methods // --------------------------------------------------------------------------- diff --git a/tests/src/XSTSHarness/regression/XERCESC-1393/invalid.xml b/tests/src/XSTSHarness/regression/XERCESC-1393/invalid.xml new file mode 100644 index 0000000000000000000000000000000000000000..81553dc98ad0aa34dab1c33d2ea9054886e95069 --- /dev/null +++ b/tests/src/XSTSHarness/regression/XERCESC-1393/invalid.xml @@ -0,0 +1,4 @@ +<Songs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> +<Song title="Hotel California"/> +<Song title="Hotel California"/> +</Songs> \ No newline at end of file diff --git a/tests/src/XSTSHarness/regression/XERCESC-1393/schema.xsd b/tests/src/XSTSHarness/regression/XERCESC-1393/schema.xsd new file mode 100644 index 0000000000000000000000000000000000000000..8c1f4e94905963e0fd70f49a5c4ec9a39b9b1200 --- /dev/null +++ b/tests/src/XSTSHarness/regression/XERCESC-1393/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/XERCESC-1393/valid.xml b/tests/src/XSTSHarness/regression/XERCESC-1393/valid.xml new file mode 100644 index 0000000000000000000000000000000000000000..5cbf6d5ae3ed607e15e7bed8f2002fbcf4eb78a2 --- /dev/null +++ b/tests/src/XSTSHarness/regression/XERCESC-1393/valid.xml @@ -0,0 +1,4 @@ +<Songs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> +<Song title="Hotel California"/> +<Song title="Desperado"/> +</Songs> \ No newline at end of file diff --git a/tests/src/XSTSHarness/regression/Xerces.testSet b/tests/src/XSTSHarness/regression/Xerces.testSet index 051a76441a377e43583ae0b2a46fab3cc586dfaf..3555e429540a2cdf18eee9a412e540e601fd0275 100644 --- a/tests/src/XSTSHarness/regression/Xerces.testSet +++ b/tests/src/XSTSHarness/regression/Xerces.testSet @@ -252,6 +252,27 @@ <current status="accepted" date="2008-02-13"/> </instanceTest> </testGroup> + <testGroup name="XERCESC-1393"> + <annotation> + <documentation>Identity constraint is not enforced on xs:anySimpleType</documentation> + </annotation> + <documentationReference xlink:href="https://issues.apache.org/jira/browse/XERCESC-1393"/> + <schemaTest name="XERCESC-1393-1"> + <schemaDocument xlink:href="./XERCESC-1393/schema.xsd"/> + <expected validity="valid"/> + <current status="accepted" date="2008-03-14"/> + </schemaTest> + <instanceTest name="XERCESC-1393-2"> + <instanceDocument xlink:href="./XERCESC-1393/invalid.xml"/> + <expected validity="invalid"/> + <current status="accepted" date="2008-03-14"/> + </instanceTest> + <instanceTest name="XERCESC-1393-3"> + <instanceDocument xlink:href="./XERCESC-1393/valid.xml"/> + <expected validity="valid"/> + <current status="accepted" date="2008-03-14"/> + </instanceTest> + </testGroup> <testGroup name="XERCESC-1419"> <annotation> <documentation>Regular expressions in schema should allow unescaped '-'</documentation>