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>