You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by bo...@apache.org on 2009/11/18 08:54:37 UTC
svn commit: r881694 - in /xerces/c/trunk/src/xercesc/internal:
IGXMLScanner.cpp IGXMLScanner.hpp IGXMLScanner2.cpp SGXMLScanner.cpp
SGXMLScanner.hpp
Author: borisk
Date: Wed Nov 18 07:54:36 2009
New Revision: 881694
URL: http://svn.apache.org/viewvc?rev=881694&view=rev
Log:
Load schemas specified with the external schema location properties even if
the load-schema property is set to false (XERCESC-1713).
Modified:
xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp
xerces/c/trunk/src/xercesc/internal/IGXMLScanner.hpp
xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp
xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp
xerces/c/trunk/src/xercesc/internal/SGXMLScanner.hpp
Modified: xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp?rev=881694&r1=881693&r2=881694&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp (original)
+++ xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp Wed Nov 18 07:54:36 2009
@@ -2194,9 +2194,9 @@
&& (fExternalSchemaLocation || fExternalNoNamespaceSchemaLocation)) {
if (fExternalSchemaLocation)
- parseSchemaLocation(fExternalSchemaLocation);
+ parseSchemaLocation(fExternalSchemaLocation, true);
if (fExternalNoNamespaceSchemaLocation)
- resolveSchemaGrammar(fExternalNoNamespaceSchemaLocation, XMLUni::fgZeroLenString);
+ resolveSchemaGrammar(fExternalNoNamespaceSchemaLocation, XMLUni::fgZeroLenString, true);
}
// Make an initial pass through the list and find any xmlns attributes or
Modified: xerces/c/trunk/src/xercesc/internal/IGXMLScanner.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/IGXMLScanner.hpp?rev=881694&r1=881693&r2=881694&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/IGXMLScanner.hpp (original)
+++ xerces/c/trunk/src/xercesc/internal/IGXMLScanner.hpp Wed Nov 18 07:54:36 2009
@@ -155,8 +155,8 @@
, const int colonPosition
);
void scanRawAttrListforNameSpaces(XMLSize_t attCount);
- void parseSchemaLocation(const XMLCh* const schemaLocationStr);
- void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri);
+ void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false);
+ void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false);
bool switchGrammar(const XMLCh* const newGrammarNameSpace);
bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv,
const XMLContentModel* const cm,
Modified: xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp?rev=881694&r1=881693&r2=881694&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp (original)
+++ xerces/c/trunk/src/xercesc/internal/IGXMLScanner2.cpp Wed Nov 18 07:54:36 2009
@@ -1683,7 +1683,7 @@
}
}
-void IGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr)
+void IGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema)
{
XMLCh* locStr = XMLString::replicate(schemaLocationStr, fMemoryManager);
ArrayJanitor<XMLCh> janLoc(locStr, fMemoryManager);
@@ -1698,12 +1698,12 @@
XMLBuffer normalBuf(1023, fMemoryManager);
for(XMLSize_t i=0; i<size; i=i+2) {
normalizeAttRawValue(SchemaSymbols::fgXSI_SCHEMALOCATION, fLocationPairs->elementAt(i), normalBuf);
- resolveSchemaGrammar(fLocationPairs->elementAt(i+1), normalBuf.getRawBuffer());
+ resolveSchemaGrammar(fLocationPairs->elementAt(i+1), normalBuf.getRawBuffer(), ignoreLoadSchema);
}
}
}
-void IGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri) {
+void IGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema) {
Grammar* grammar = 0;
@@ -1715,7 +1715,7 @@
if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType)
{
- if (fLoadSchema)
+ if (fLoadSchema || ignoreLoadSchema)
{
XSDDOMParser parser(0, fMemoryManager, 0);
Modified: xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp?rev=881694&r1=881693&r2=881694&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp (original)
+++ xerces/c/trunk/src/xercesc/internal/SGXMLScanner.cpp Wed Nov 18 07:54:36 2009
@@ -1167,9 +1167,9 @@
&& (fExternalSchemaLocation || fExternalNoNamespaceSchemaLocation)) {
if (fExternalSchemaLocation)
- parseSchemaLocation(fExternalSchemaLocation);
+ parseSchemaLocation(fExternalSchemaLocation, true);
if (fExternalNoNamespaceSchemaLocation)
- resolveSchemaGrammar(fExternalNoNamespaceSchemaLocation, XMLUni::fgZeroLenString);
+ resolveSchemaGrammar(fExternalNoNamespaceSchemaLocation, XMLUni::fgZeroLenString, true);
}
// Make an initial pass through the list and find any xmlns attributes or
@@ -3514,7 +3514,7 @@
}
}
-void SGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr)
+void SGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema)
{
BaseRefVectorOf<XMLCh>* schemaLocation = XMLString::tokenizeString(schemaLocationStr, fMemoryManager);
Janitor<BaseRefVectorOf<XMLCh> > janLoc(schemaLocation);
@@ -3527,12 +3527,12 @@
XMLBuffer normalBuf(1023, fMemoryManager);
for(XMLSize_t i=0; i<size; i=i+2) {
normalizeAttRawValue(SchemaSymbols::fgXSI_SCHEMALOCATION, schemaLocation->elementAt(i), normalBuf);
- resolveSchemaGrammar(schemaLocation->elementAt(i+1), normalBuf.getRawBuffer());
+ resolveSchemaGrammar(schemaLocation->elementAt(i+1), normalBuf.getRawBuffer(), ignoreLoadSchema);
}
}
}
-void SGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri) {
+void SGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema) {
Grammar* grammar = 0;
@@ -3544,7 +3544,7 @@
if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType)
{
- if (fLoadSchema)
+ if (fLoadSchema || ignoreLoadSchema)
{
XSDDOMParser parser(0, fMemoryManager, 0);
Modified: xerces/c/trunk/src/xercesc/internal/SGXMLScanner.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/SGXMLScanner.hpp?rev=881694&r1=881693&r2=881694&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/SGXMLScanner.hpp (original)
+++ xerces/c/trunk/src/xercesc/internal/SGXMLScanner.hpp Wed Nov 18 07:54:36 2009
@@ -236,8 +236,8 @@
, XMLBuffer& toFill
);
void scanRawAttrListforNameSpaces(XMLSize_t attCount);
- void parseSchemaLocation(const XMLCh* const schemaLocationStr);
- void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri);
+ void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false);
+ void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false);
bool switchGrammar(const XMLCh* const newGrammarNameSpace);
bool anyAttributeValidation(SchemaAttDef* attWildCard,
unsigned int uriId,
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org