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]

Reply via email to