Modified: xerces/c/trunk/src/xercesc/util/XMLChar.hpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/XMLChar.hpp?rev=1517488&r1=1517487&r2=1517488&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLChar.hpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLChar.hpp Mon Aug 26 10:33:26 2013
@@ -162,6 +162,11 @@ inline bool XMLChar1_0::isFirstNameChar(
 {
     if (!toCheck2)
         return ((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0);
+    else {
+        if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F))
+           if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF))
+               return true;
+    }
     return false;
 }
 
@@ -170,7 +175,11 @@ inline bool XMLChar1_0::isFirstNCNameCha
     if (!toCheck2) {
         return (((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0) && 
(toCheck != chColon));
     }
-
+    else {
+        if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F))
+           if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF))
+               return true;
+    }
     return false;
 }
 
@@ -178,6 +187,11 @@ inline bool XMLChar1_0::isNameChar(const
 {
     if (!toCheck2)
         return ((fgCharCharsTable1_0[toCheck] & gNameCharMask) != 0);
+    else {
+        if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F))
+           if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF))
+               return true;
+    }
     return false;
 }
 
@@ -185,6 +199,11 @@ inline bool XMLChar1_0::isNCNameChar(con
 {
     if (!toCheck2)
         return ((fgCharCharsTable1_0[toCheck] & gNCNameCharMask) != 0);
+    else {
+        if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F))
+           if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF))
+               return true;
+    }
     return false;
 }
 

Modified: xerces/c/trunk/src/xercesc/util/XMLUni.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/XMLUni.cpp?rev=1517488&r1=1517487&r2=1517488&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLUni.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLUni.cpp Mon Aug 26 10:33:26 2013
@@ -316,6 +316,11 @@ const XMLCh XMLUni::fgStandaloneString[]
     chLatin_s, chLatin_t, chLatin_a, chLatin_n, chLatin_d, chLatin_a, 
chLatin_l, chLatin_o, chLatin_n, chLatin_e, chNull
 };
 
+const XMLCh XMLUni::fgVersion1[] =
+{
+    chDigit_1, chPeriod, chNull
+};
+
 const XMLCh XMLUni::fgVersion1_0[] =
 {
     chDigit_1, chPeriod, chDigit_0, chNull

Modified: xerces/c/trunk/src/xercesc/util/XMLUni.hpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/XMLUni.hpp?rev=1517488&r1=1517487&r2=1517488&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLUni.hpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLUni.hpp Mon Aug 26 10:33:26 2013
@@ -98,6 +98,7 @@ public :
     static const XMLCh fgRefString[];
     static const XMLCh fgRequiredString[];
     static const XMLCh fgStandaloneString[];
+    static const XMLCh fgVersion1[];
     static const XMLCh fgVersion1_0[];
     static const XMLCh fgVersion1_1[];
     static const XMLCh fgSysIDString[];

Modified: xerces/c/trunk/src/xercesc/validators/DTD/DTDValidator.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/DTD/DTDValidator.cpp?rev=1517488&r1=1517487&r2=1517488&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/DTD/DTDValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/DTD/DTDValidator.cpp Mon Aug 26 
10:33:26 2013
@@ -137,6 +137,7 @@ DTDValidator::validateAttrValue(const   
     const XMLCh* const              valueText = attDef->getValue();
     const XMLCh* const              fullName = attDef->getFullName();
     const XMLCh* const              enumList = attDef->getEnumeration();
+    const bool                      isExternal = attDef->isExternal();
 
     //
     //  If the default type is fixed, then make sure the passed value maps
@@ -222,6 +223,14 @@ DTDValidator::validateAttrValue(const   
         pszTmpVal = janTmpVal.get();
     }
 
+    //  if the type is an enumeration, normalize it, unless standalone = yes 
is specified
+    //  "The standalone document declaration MUST have the value "no" if any 
external markup declarations contain declarations of:
+    //   - ...
+    //   - attributes with tokenized types, where the attribute appears in the 
document with a value such that normalization will 
+    //     produce a different value from that which would be produced in the 
absence of the declaration"
+    if (multipleValues && (!isExternal || !getScanner()->getStandalone()))
+        XMLString::collapseWS(pszTmpVal, getScanner()->getMemoryManager());
+
     XMLCh* valPtr = pszTmpVal;
 
     bool doNamespace = getScanner()->getDoNamespaces();

Modified: xerces/c/trunk/tests/src/XSTSHarness/XMLHarnessHandlers.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/XMLHarnessHandlers.cpp?rev=1517488&r1=1517487&r2=1517488&view=diff
==============================================================================
--- xerces/c/trunk/tests/src/XSTSHarness/XMLHarnessHandlers.cpp (original)
+++ xerces/c/trunk/tests/src/XSTSHarness/XMLHarnessHandlers.cpp Mon Aug 26 
10:33:26 2013
@@ -62,6 +62,9 @@ static XMLCh szError[]={ chLatin_e, chLa
 static XMLCh szBase[]={ chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_b, 
chLatin_a, chLatin_s, chLatin_e, chNull };
 static XMLCh szNamespace[]={ chLatin_N, chLatin_A, chLatin_M, chLatin_E, 
chLatin_S, chLatin_P, chLatin_A, chLatin_C, chLatin_E, chNull };
 static XMLCh szNO[]={ chLatin_n, chLatin_o, chNull };
+static XMLCh szVersion[] = { chLatin_V, chLatin_E, chLatin_R, chLatin_S, 
chLatin_I, chLatin_O, chLatin_N, chNull };
+static XMLCh szEdition[] = { chLatin_E, chLatin_D, chLatin_I, chLatin_T, 
chLatin_I, chLatin_O, chLatin_N, chNull };
+static XMLCh szFive[]={ chDigit_5, chNull };
 
 // ---------------------------------------------------------------------------
 //  XMLHarnessHandlers: Implementation of the SAX DocumentHandler interface
@@ -86,6 +89,27 @@ void XMLHarnessHandlers::startElement(co
     {
         const XMLCh* useNS=attrs.getValue(szNamespace);
         const XMLCh* testName=attrs.getValue(szID);
+        const XMLCh* version=attrs.getValue(szVersion);
+        if(version == NULL || XMLString::equals(version, XMLUni::fgVersion1_0))
+        {
+            const XMLCh* editions=attrs.getValue(szEdition);
+            // skip tests that don't apply to v.1.0 5th Edition
+            if(editions)
+            {
+                BaseRefVectorOf<XMLCh>* tokens = 
XMLString::tokenizeString(editions);
+                bool appliesTo5 = false;
+                for (XMLSize_t i = 0; i < tokens->size(); i++) {
+                    if (XMLString::equals(tokens->elementAt(i), szFive)) {
+                        appliesTo5 = true;
+                        break;
+                    }
+                }
+                delete tokens;
+                if(!appliesTo5)
+                    return;
+            }
+        }
+
         XMLURL testSet;
         testSet.setURL(*fTestBaseURL.peek(), attrs.getValue(szURI));
         bool success=true, fatalFailure=false;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to