Author: cargilld
Date: Wed Oct 12 06:05:22 2005
New Revision: 314878
URL: http://svn.apache.org/viewcvs?rev=314878&view=rev
Log:
QName fix. Need to verify that the prefix is defined.
Modified:
xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.cpp
xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.hpp
xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp
Modified:
xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.cpp
URL:
http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.cpp?rev=314878&r1=314877&r2=314878&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.cpp
(original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.cpp
Wed Oct 12 06:05:22 2005
@@ -26,12 +26,14 @@
#include <xercesc/framework/XMLRefInfo.hpp>
#include <xercesc/validators/DTD/DTDEntityDecl.hpp>
#include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
+#include <xercesc/internal/ElemStack.hpp>
XERCES_CPP_NAMESPACE_BEGIN
// ---------------------------------------------------------------------------
// Constructor and Destructor
// ---------------------------------------------------------------------------
+
ValidationContextImpl::~ValidationContextImpl()
{
if (fIdRefList)
@@ -44,6 +46,7 @@
,fEntityDeclPool(0)
,fToCheckIdRefList(true)
,fValidatingMemberType(0)
+,fElemStack(0)
{
fIdRefList = new (fMemoryManager) RefHashTableOf<XMLRefInfo>(109,
fMemoryManager);
}
@@ -172,6 +175,19 @@
);
}
+}
+
+/* QName
+ */
+bool ValidationContextImpl::isPrefixUnknown(XMLCh* prefix) {
+ bool unknown = false;
+ if (XMLString::equals(prefix, XMLUni::fgXMLNSString)) {
+ return true;
+ }
+ else if (!XMLString::equals(prefix, XMLUni::fgXMLString)) {
+ unsigned int uriId = fElemStack->mapPrefixToURI(prefix,
(ElemStack::MapModes) ElemStack::Mode_Element, unknown);
+ }
+ return unknown;
}
XERCES_CPP_NAMESPACE_END
Modified:
xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.hpp
URL:
http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.hpp?rev=314878&r1=314877&r2=314878&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.hpp
(original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/internal/ValidationContextImpl.hpp
Wed Oct 12 06:05:22 2005
@@ -24,6 +24,7 @@
#include <xercesc/framework/ValidationContext.hpp>
XERCES_CPP_NAMESPACE_BEGIN
+class ElemStack;
class XMLPARSER_EXPORT ValidationContextImpl : public ValidationContext
{
@@ -83,6 +84,13 @@
virtual DatatypeValidator * getValidatingMemberType() const;
virtual void setValidatingMemberType(DatatypeValidator *
validatingMemberType) ;
+ /**
+ * QName datatype handling
+ * Create default implementations for source code compatibility
+ */
+ virtual bool isPrefixUnknown(XMLCh* prefix);
+ virtual void setElemStack(ElemStack* elemStack);
+
//@}
private:
@@ -113,12 +121,15 @@
// own this object, and the value of getValidatingMemberType
// will not be accurate unless the type of the most recently-validated
// element/attribute is in fact a union datatype.
+ // fElemStack
+ // Need access to elemstack to look up URI's that are inscope.
// -----------------------------------------------------------------------
RefHashTableOf<XMLRefInfo>* fIdRefList;
const NameIdPool<DTDEntityDecl>* fEntityDeclPool;
bool fToCheckIdRefList;
- DatatypeValidator * fValidatingMemberType;
+ DatatypeValidator * fValidatingMemberType;
+ ElemStack* fElemStack;
};
@@ -132,6 +143,10 @@
inline void ValidationContextImpl::setValidatingMemberType(DatatypeValidator *
validatingMemberType)
{
fValidatingMemberType = validatingMemberType;
+}
+
+inline void ValidationContextImpl::setElemStack(ElemStack* elemStack) {
+ fElemStack = elemStack;
}
XERCES_CPP_NAMESPACE_END
Modified: xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp
URL:
http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp?rev=314878&r1=314877&r2=314878&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp Wed Oct 12
06:05:22 2005
@@ -750,6 +750,7 @@
// Create the id ref list. This is used to enforce XML 1.0 ID ref
// semantics, i.e. all id refs must refer to elements that exist
fValidationContext = new (fMemoryManager)
ValidationContextImpl(fMemoryManager);
+ fValidationContext->setElemStack(&fElemStack);
// Create the GrammarResolver
//fGrammarResolver = new GrammarResolver();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]