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