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:33:53 UTC
svn commit: r1002312 - in /xerces/c/trunk: src/xercesc/internal/
tests/src/XSTSHarness/regression/
tests/src/XSTSHarness/regression/XERCESC-1945/
Author: amassari
Date: Tue Sep 28 18:33:53 2010
New Revision: 1002312
URL: http://svn.apache.org/viewvc?rev=1002312&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/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xml
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xsd
Modified:
xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp
xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp
xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet
Modified: xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp?rev=1002312&r1=1002311&r2=1002312&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp (original)
+++ xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp Tue Sep 28 18:33:53 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/trunk/src/xercesc/internal/SGXMLScanner.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp?rev=1002312&r1=1002311&r2=1002312&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp (original)
+++ xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp Tue Sep 28 18:33:53 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);
}
}
}
Added: xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xml
URL: http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xml?rev=1002312&view=auto
==============================================================================
--- xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xml (added)
+++ xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xml Tue Sep 28 18:33:53 2010
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<p xsi:type=" 	Person "
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="test.xsd">
+ <name>John Doe</name>
+</p>
+
Added: xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xsd
URL: http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xsd?rev=1002312&view=auto
==============================================================================
--- xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xsd (added)
+++ xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1945/test.xsd Tue Sep 28 18:33:53 2010
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:complexType name="Person">
+ <xsd:sequence>
+ <xsd:element name="name"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
+
Modified: xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet
URL: http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet?rev=1002312&r1=1002311&r2=1002312&view=diff
==============================================================================
--- xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet (original)
+++ xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet Tue Sep 28 18:33:53 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