You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2010/09/28 20:51:55 UTC

svn commit: r1002320 - in /xerces/c/branches/xerces-3.1: ./ src/xercesc/internal/ tests/src/XSTSHarness/regression/ tests/src/XSTSHarness/regression/XERCESC-1945/

Author: amassari
Date: Tue Sep 28 18:51:54 2010
New Revision: 1002320

URL: http://svn.apache.org/viewvc?rev=1002320&view=rev
Log:
Normalize the attribute values before collapsing whitespace, or the special characters used to signal the usage of an entity reference inside an attribute value will remain in the value of xsi:type and xsi:nill (XERCESC-1945)

Added:
    xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/XERCESC-1945/
      - copied from r1002312, xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/
    xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/XERCESC-1945/test.xml
      - copied unchanged from r1002312, xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xml
    xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/XERCESC-1945/test.xsd
      - copied unchanged from r1002312, xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xsd
Modified:
    xerces/c/branches/xerces-3.1/   (props changed)
    xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner2.cpp
    xerces/c/branches/xerces-3.1/src/xercesc/internal/SGXMLScanner.cpp
    xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/Xerces.testSet

Propchange: xerces/c/branches/xerces-3.1/
------------------------------------------------------------------------------
    svn:mergeinfo = /xerces/c/trunk:1002312

Modified: xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner2.cpp
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner2.cpp?rev=1002320&r1=1002319&r2=1002320&view=diff
==============================================================================
--- xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner2.cpp (original)
+++ xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner2.cpp Tue Sep 28 18:51:54 2010
@@ -1697,7 +1697,8 @@ void IGXMLScanner::scanRawAttrListforNam
 
                             // normalize the attribute according to schema whitespace facet
                             DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_QNAME);
-                            ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiType, true);
+                            normalizeAttRawValue(SchemaSymbols::fgXSI_TYPE, valuePtr, fXsiType);
+                            ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, fXsiType.getRawBuffer(), fXsiType, true);
                             if (!fXsiType.isEmpty()) {
                                 int colonPos = -1;
                                 unsigned int uriId = resolveQName (
@@ -1712,16 +1713,18 @@ void IGXMLScanner::scanRawAttrListforNam
                         else if (XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL))
                         {
                             // normalize the attribute according to schema whitespace facet
-                            XMLBuffer& fXsiNil = fBufMgr.bidOnBuffer();
+                            XMLBufBid bbXsi(&fBufMgr);
+                            XMLBuffer& fXsiNil = bbXsi.getBuffer();
+
                             DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_BOOLEAN);
-                            ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiNil, true);
+                            normalizeAttRawValue(SchemaSymbols::fgATT_NILL, valuePtr, fXsiNil);
+                            ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, fXsiNil.getRawBuffer(), fXsiNil, true);
                             if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_TRUE))
                                 ((SchemaValidator*)fValidator)->setNillable(true);
                             else if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_FALSE))
                                 ((SchemaValidator*)fValidator)->setNillable(false);
                             else
                                 emitError(XMLErrs::InvalidAttValue, fXsiNil.getRawBuffer(), valuePtr);
-                            fBufMgr.releaseBuffer(fXsiNil);
                         }
                     }
                 }

Modified: xerces/c/branches/xerces-3.1/src/xercesc/internal/SGXMLScanner.cpp
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-3.1/src/xercesc/internal/SGXMLScanner.cpp?rev=1002320&r1=1002319&r2=1002320&view=diff
==============================================================================
--- xerces/c/branches/xerces-3.1/src/xercesc/internal/SGXMLScanner.cpp (original)
+++ xerces/c/branches/xerces-3.1/src/xercesc/internal/SGXMLScanner.cpp Tue Sep 28 18:51:54 2010
@@ -3524,7 +3524,8 @@ void SGXMLScanner::scanRawAttrListforNam
 
                         // normalize the attribute according to schema whitespace facet
                         DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_QNAME);
-                        ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiType, true);
+                        normalizeAttRawValue(SchemaSymbols::fgXSI_TYPE, valuePtr, fXsiType);
+                        ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, fXsiType.getRawBuffer(), fXsiType, true);
                         if (!fXsiType.isEmpty()) {
                             int colonPos = -1;
                             unsigned int uriId = resolveQName (
@@ -3539,16 +3540,18 @@ void SGXMLScanner::scanRawAttrListforNam
                     else if (XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL))
                     {
                         // normalize the attribute according to schema whitespace facet
-                        XMLBuffer& fXsiNil = fBufMgr.bidOnBuffer();
+                        XMLBufBid bbXsi(&fBufMgr);
+                        XMLBuffer& fXsiNil = bbXsi.getBuffer();
+
                         DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_BOOLEAN);
-                        ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiNil, true);
+                        normalizeAttRawValue(SchemaSymbols::fgATT_NILL, valuePtr, fXsiNil);
+                        ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, fXsiNil.getRawBuffer(), fXsiNil, true);
                         if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_TRUE))
                             ((SchemaValidator*)fValidator)->setNillable(true);
                         else if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_FALSE))
                             ((SchemaValidator*)fValidator)->setNillable(false);
                         else
                             emitError(XMLErrs::InvalidAttValue, fXsiNil.getRawBuffer(), valuePtr);
-                        fBufMgr.releaseBuffer(fXsiNil);
                     }
                 }
             }

Modified: xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/Xerces.testSet
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/Xerces.testSet?rev=1002320&r1=1002319&r2=1002320&view=diff
==============================================================================
--- xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/Xerces.testSet (original)
+++ xerces/c/branches/xerces-3.1/tests/src/XSTSHarness/regression/Xerces.testSet Tue Sep 28 18:51:54 2010
@@ -826,4 +826,20 @@
       <current status="accepted" date="2010-08-09"/>
     </instanceTest>
   </testGroup>
+  <testGroup name="XERCESC-1945">
+    <annotation>
+      <documentation>Whitespace in xsi:type</documentation>
+    </annotation>
+    <documentationReference xlink:href="https://issues.apache.org/jira/browse/XERCESC-1945"/>
+    <schemaTest name="XERCESC-1945-1">
+      <schemaDocument xlink:href="./XERCESC-1945/test.xsd"/>
+      <expected validity="valid"/>
+      <current status="accepted" date="2010-09-28"/>
+    </schemaTest>
+    <instanceTest name="XERCESC-1945-2">
+      <instanceDocument xlink:href="./XERCESC-1945/test.xml"/>
+      <expected validity="valid"/>
+      <current status="accepted" date="2010-09-28"/>
+    </instanceTest>
+  </testGroup>
 </testSet>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org