You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2004/05/25 20:09:51 UTC
cvs commit: xml-xerces/c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.hpp IGXMLScanner2.cpp ReaderMgr.cpp SGXMLScanner.cpp SGXMLScanner.hpp
peiyongz 2004/05/25 11:09:51
Modified: c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.hpp
IGXMLScanner2.cpp ReaderMgr.cpp SGXMLScanner.cpp
SGXMLScanner.hpp
Log:
XML1.0 3rd: 4.2.2 ...Since escaping is not always a fully reversible process,
it must be performed only when absolutely necessary and as late as possible
in a processing chain...
Revision Changes Path
1.46 +16 -5 xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp
Index: DGXMLScanner.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- DGXMLScanner.cpp 27 Apr 2004 19:17:51 -0000 1.45
+++ DGXMLScanner.cpp 25 May 2004 18:09:50 -0000 1.46
@@ -66,6 +66,7 @@
#include <xercesc/util/Janitor.hpp>
#include <xercesc/util/RuntimeException.hpp>
#include <xercesc/util/UnexpectedEOFException.hpp>
+#include <xercesc/util/XMLUri.hpp>
#include <xercesc/framework/URLInputSource.hpp>
#include <xercesc/framework/LocalFileInputSource.hpp>
#include <xercesc/framework/XMLDocumentHandler.hpp>
@@ -2488,13 +2489,17 @@
XMLBufBid bbSys(&fBufMgr);
XMLBuffer& expSysId = bbSys.getBuffer();
+ XMLBuffer& normalizedSysId = bbSys.getBuffer();
+ XMLString::removeChar(sysId, 0xFFFF, normalizedSysId);
+ const XMLCh* normalizedURI = normalizedSysId.getRawBuffer();
+
// Allow the entity handler to expand the system id if they choose
// to do so.
InputSource* srcToFill = 0;
if (fEntityHandler)
{
- if (!fEntityHandler->expandSystemId(sysId, expSysId))
- expSysId.set(sysId);
+ if (!fEntityHandler->expandSystemId(normalizedURI, expSysId))
+ expSysId.set(normalizedURI);
XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity,
expSysId.getRawBuffer());
@@ -2502,7 +2507,7 @@
}
else
{
- expSysId.set(sysId);
+ expSysId.set(normalizedURI);
}
// If they didn't create a source via the entity handler, then we
@@ -2517,12 +2522,18 @@
(urlTmp.isRelative()))
{
if (!fStandardUriConformant)
+ {
+ XMLBufBid ddSys(&fBufMgr);
+ XMLBuffer& resolvedSysId = ddSys.getBuffer();
+ XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId);
+
srcToFill = new (fMemoryManager) LocalFileInputSource
(
lastInfo.systemId
- , expSysId.getRawBuffer()
+ , resolvedSysId.getRawBuffer()
, fMemoryManager
);
+ }
else
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
}
1.22 +3 -4 xml-xerces/c/src/xercesc/internal/IGXMLScanner.hpp
Index: IGXMLScanner.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.hpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- IGXMLScanner.hpp 13 Apr 2004 17:00:23 -0000 1.21
+++ IGXMLScanner.hpp 25 May 2004 18:09:50 -0000 1.22
@@ -56,6 +56,11 @@
/*
* $Log$
+ * Revision 1.22 2004/05/25 18:09:50 peiyongz
+ * XML1.0 3rd: 4.2.2 ...Since escaping is not always a fully reversible process,
+ * it must be performed only when absolutely necessary and as late as possible
+ * in a processing chain...
+ *
* Revision 1.21 2004/04/13 17:00:23 peiyongz
* IdentityConstraintHandler
*
@@ -228,10 +233,6 @@
// -----------------------------------------------------------------------
void commonInit();
void cleanUp();
-
- // Spaces are not allowed in URI, so %20 is used instead.
- // Convert %20 to spaces before resolving the URI
- void normalizeURI(const XMLCh* const systemURI, XMLBuffer& normalizedURI);
unsigned int buildAttList
(
1.64 +25 -34 xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp
Index: IGXMLScanner2.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -r1.63 -r1.64
--- IGXMLScanner2.cpp 3 May 2004 18:50:59 -0000 1.63
+++ IGXMLScanner2.cpp 25 May 2004 18:09:50 -0000 1.64
@@ -71,6 +71,7 @@
#include <xercesc/internal/IGXMLScanner.hpp>
#include <xercesc/internal/EndOfEntityException.hpp>
#include <xercesc/util/UnexpectedEOFException.hpp>
+#include <xercesc/util/XMLUri.hpp>
#include <xercesc/framework/LocalFileInputSource.hpp>
#include <xercesc/framework/URLInputSource.hpp>
#include <xercesc/framework/XMLDocumentHandler.hpp>
@@ -1716,7 +1717,7 @@
XMLBuffer& expSysId = bbSys.getBuffer();
XMLBuffer& normalizedSysId = bbSys.getBuffer();
- normalizeURI(loc, normalizedSysId);
+ XMLString::removeChar(loc, 0xFFFF, normalizedSysId);
// Allow the entity handler to expand the system id if they choose
// to do so.
@@ -1750,12 +1751,18 @@
(urlTmp.isRelative()))
{
if (!fStandardUriConformant)
+ {
+ XMLBufBid ddSys(&fBufMgr);
+ XMLBuffer& resolvedSysId = ddSys.getBuffer();
+ XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId);
+
srcToFill = new (fMemoryManager) LocalFileInputSource
(
lastInfo.systemId
- , expSysId.getRawBuffer()
+ , resolvedSysId.getRawBuffer()
, fMemoryManager
);
+ }
else
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
}
@@ -1889,23 +1896,27 @@
XMLBufBid bbSys(&fBufMgr);
XMLBuffer& expSysId = bbSys.getBuffer();
+ XMLBuffer& normalizedSysId = bbSys.getBuffer();
+ XMLString::removeChar(sysId, 0xFFFF, normalizedSysId);
+ const XMLCh* normalizedURI = normalizedSysId.getRawBuffer();
+
// Allow the entity handler to expand the system id if they choose
// to do so.
InputSource* srcToFill = 0;
if (fEntityHandler)
{
- if (!fEntityHandler->expandSystemId(sysId, expSysId))
- expSysId.set(sysId);
+ if (!fEntityHandler->expandSystemId(normalizedURI, expSysId))
+ expSysId.set(normalizedURI);
ReaderMgr::LastExtEntityInfo lastInfo;
fReaderMgr.getLastExtEntityInfo(lastInfo);
XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity,
- expSysId.getRawBuffer(), 0, XMLUni::fgZeroLenString, lastInfo.systemId);
+ expSysId.getRawBuffer(), 0, XMLUni::fgZeroLenString, lastInfo.systemId);
srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier);
}
else
{
- expSysId.set(sysId);
+ expSysId.set(normalizedURI);
}
// If they didn't create a source via the entity handler, then we
@@ -1920,12 +1931,18 @@
(urlTmp.isRelative()))
{
if (!fStandardUriConformant)
+ {
+ XMLBufBid ddSys(&fBufMgr);
+ XMLBuffer& resolvedSysId = ddSys.getBuffer();
+ XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId);
+
srcToFill = new (fMemoryManager) LocalFileInputSource
(
lastInfo.systemId
- , expSysId.getRawBuffer()
+ , resolvedSysId.getRawBuffer()
, fMemoryManager
);
+ }
else
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
}
@@ -3232,32 +3249,6 @@
}
return anyEncountered;
-}
-
-void IGXMLScanner::normalizeURI(const XMLCh* const systemURI,
- XMLBuffer& normalizedURI)
-{
- const XMLCh* pszSrc = systemURI;
-
- normalizedURI.reset();
-
- while (*pszSrc) {
-
- if ((*(pszSrc) == chPercent)
- && (*(pszSrc+1) == chDigit_2)
- && (*(pszSrc+2) == chDigit_0))
- {
- pszSrc += 3;
- normalizedURI.append(chSpace);
- }
- else if (*pszSrc == 0xFFFF) { //escaped character
- pszSrc++;
- }
- else {
- normalizedURI.append(*pszSrc);
- pszSrc++;
- }
- }
}
inline XMLAttDefList& getAttDefList(bool isSchemaGrammar
1.23 +27 -9 xml-xerces/c/src/xercesc/internal/ReaderMgr.cpp
Index: ReaderMgr.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/ReaderMgr.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- ReaderMgr.cpp 29 Jan 2004 11:46:30 -0000 1.22
+++ ReaderMgr.cpp 25 May 2004 18:09:51 -0000 1.23
@@ -69,6 +69,7 @@
#include <xercesc/util/XMLURL.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/util/XMLUni.hpp>
+#include <xercesc/util/XMLUri.hpp>
#include <xercesc/sax/InputSource.hpp>
#include <xercesc/framework/LocalFileInputSource.hpp>
#include <xercesc/framework/URLInputSource.hpp>
@@ -510,18 +511,22 @@
// Create a buffer for expanding the system id
XMLBuffer expSysId(1023, fMemoryManager);
+ XMLBuffer& normalizedSysId = expSysId;
+ XMLString::removeChar(sysId, 0xFFFF, normalizedSysId);
+ const XMLCh* normalizedURI = normalizedSysId.getRawBuffer();
+
//
// Allow the entity handler to expand the system id if they choose
// to do so.
//
if (fEntityHandler)
{
- if (!fEntityHandler->expandSystemId(sysId, expSysId))
- expSysId.set(sysId);
+ if (!fEntityHandler->expandSystemId(normalizedURI, expSysId))
+ expSysId.set(normalizedURI);
}
else
{
- expSysId.set(sysId);
+ expSysId.set(normalizedURI);
}
// Call the entity resolver interface to get an input source
@@ -586,12 +591,17 @@
(urlTmp.isRelative()))
{
if (!fStandardUriConformant)
+ {
+ XMLBuffer resolvedSysId(1023, fMemoryManager);
+ XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId);
+
srcToFill = new (fMemoryManager) LocalFileInputSource
(
lastInfo.systemId
- , expSysId.getRawBuffer()
+ , resolvedSysId.getRawBuffer()
, fMemoryManager
);
+ }
else
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
}
@@ -647,18 +657,21 @@
// Create a buffer for expanding the system id
XMLBuffer expSysId(1023, fMemoryManager);
+ XMLBuffer& normalizedSysId = expSysId;
+ XMLString::removeChar(sysId, 0xFFFF, normalizedSysId);
+ const XMLCh* normalizedURI = normalizedSysId.getRawBuffer();
//
// Allow the entity handler to expand the system id if they choose
// to do so.
//
if (fEntityHandler)
{
- if (!fEntityHandler->expandSystemId(sysId, expSysId))
- expSysId.set(sysId);
+ if (!fEntityHandler->expandSystemId(normalizedURI, expSysId))
+ expSysId.set(normalizedURI);
}
else
{
- expSysId.set(sysId);
+ expSysId.set(normalizedURI);
}
// Call the entity resolver interface to get an input source
@@ -684,12 +697,17 @@
(urlTmp.isRelative()))
{
if (!fStandardUriConformant)
+ {
+ XMLBuffer resolvedSysId(1023, fMemoryManager);
+ XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId);
+
srcToFill = new (fMemoryManager) LocalFileInputSource
(
lastInfo.systemId
- , expSysId.getRawBuffer()
+ , resolvedSysId.getRawBuffer()
, fMemoryManager
);
+ }
else
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
}
1.81 +25 -33 xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp
Index: SGXMLScanner.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -r1.80 -r1.81
--- SGXMLScanner.cpp 3 May 2004 18:50:59 -0000 1.80
+++ SGXMLScanner.cpp 25 May 2004 18:09:51 -0000 1.81
@@ -65,6 +65,7 @@
#include <xercesc/internal/SGXMLScanner.hpp>
#include <xercesc/util/RuntimeException.hpp>
#include <xercesc/util/UnexpectedEOFException.hpp>
+#include <xercesc/util/XMLUri.hpp>
#include <xercesc/framework/LocalFileInputSource.hpp>
#include <xercesc/framework/URLInputSource.hpp>
#include <xercesc/framework/XMLDocumentHandler.hpp>
@@ -3634,7 +3635,7 @@
XMLBuffer& expSysId = bbSys.getBuffer();
XMLBuffer& normalizedSysId = bbSys.getBuffer();
- normalizeURI(loc, normalizedSysId);
+ XMLString::removeChar(loc, 0xFFFF, normalizedSysId);
// Allow the entity handler to expand the system id if they choose
// to do so.
@@ -3668,12 +3669,18 @@
(urlTmp.isRelative()))
{
if (!fStandardUriConformant)
+ {
+ XMLBufBid ddSys(&fBufMgr);
+ XMLBuffer& resolvedSysId = ddSys.getBuffer();
+ XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId);
+
srcToFill = new (fMemoryManager) LocalFileInputSource
(
lastInfo.systemId
- , expSysId.getRawBuffer()
+ , resolvedSysId.getRawBuffer()
, fMemoryManager
);
+ }
else
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
}
@@ -3681,6 +3688,7 @@
{
if (fStandardUriConformant && urlTmp.hasInvalidChar())
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
+
srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager);
}
}
@@ -3785,13 +3793,17 @@
XMLBufBid bbSys(&fBufMgr);
XMLBuffer& expSysId = bbSys.getBuffer();
+ XMLBuffer& normalizedSysId = bbSys.getBuffer();
+ XMLString::removeChar(sysId, 0xFFFF, normalizedSysId);
+ const XMLCh* normalizedURI = normalizedSysId.getRawBuffer();
+
// Allow the entity handler to expand the system id if they choose
// to do so.
InputSource* srcToFill = 0;
if (fEntityHandler)
{
- if (!fEntityHandler->expandSystemId(sysId, expSysId))
- expSysId.set(sysId);
+ if (!fEntityHandler->expandSystemId(normalizedURI, expSysId))
+ expSysId.set(normalizedURI);
ReaderMgr::LastExtEntityInfo lastInfo;
fReaderMgr.getLastExtEntityInfo(lastInfo);
@@ -3801,7 +3813,7 @@
}
else
{
- expSysId.set(sysId);
+ expSysId.set(normalizedURI);
}
// If they didn't create a source via the entity handler, then we
@@ -3816,12 +3828,18 @@
(urlTmp.isRelative()))
{
if (!fStandardUriConformant)
+ {
+ XMLBufBid ddSys(&fBufMgr);
+ XMLBuffer& resolvedSysId = ddSys.getBuffer();
+ XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId);
+
srcToFill = new (fMemoryManager) LocalFileInputSource
(
lastInfo.systemId
- , expSysId.getRawBuffer()
+ , resolvedSysId.getRawBuffer()
, fMemoryManager
);
+ }
else
ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager);
}
@@ -4733,32 +4751,6 @@
}
return anyEncountered;
-}
-
-void SGXMLScanner::normalizeURI(const XMLCh* const systemURI,
- XMLBuffer& normalizedURI)
-{
- const XMLCh* pszSrc = systemURI;
-
- normalizedURI.reset();
-
- while (*pszSrc) {
-
- if ((*(pszSrc) == chPercent)
- && (*(pszSrc+1) == chDigit_2)
- && (*(pszSrc+2) == chDigit_0))
- {
- pszSrc += 3;
- normalizedURI.append(chSpace);
- }
- else if (*pszSrc == 0xFFFF) { //escaped character
- pszSrc++;
- }
- else {
- normalizedURI.append(*pszSrc);
- pszSrc++;
- }
- }
}
inline XMLAttDefList& getAttDefList(ComplexTypeInfo* currType, XMLElementDecl* elemDecl)
1.19 +3 -4 xml-xerces/c/src/xercesc/internal/SGXMLScanner.hpp
Index: SGXMLScanner.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.hpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- SGXMLScanner.hpp 13 Apr 2004 16:56:58 -0000 1.18
+++ SGXMLScanner.hpp 25 May 2004 18:09:51 -0000 1.19
@@ -56,6 +56,11 @@
/*
* $Log$
+ * Revision 1.19 2004/05/25 18:09:51 peiyongz
+ * XML1.0 3rd: 4.2.2 ...Since escaping is not always a fully reversible process,
+ * it must be performed only when absolutely necessary and as late as possible
+ * in a processing chain...
+ *
* Revision 1.18 2004/04/13 16:56:58 peiyongz
* IdentityConstraintHandler
*
@@ -218,10 +223,6 @@
// -----------------------------------------------------------------------
void commonInit();
void cleanUp();
-
- // Spaces are not allowed in URI, so %20 is used instead.
- // Convert %20 to spaces before resolving the URI
- void normalizeURI(const XMLCh* const systemURI, XMLBuffer& normalizedURI);
unsigned int buildAttList
(
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org