Author: cargilld
Date: Wed Oct 12 06:06:08 2005
New Revision: 314882

URL: http://svn.apache.org/viewcvs?rev=314882&view=rev
Log:
QName fix.  Need to verify that the prefix is defined.

Modified:
    
xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp

Modified: 
xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
URL: 
http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp?rev=314882&r1=314881&r2=314882&view=diff
==============================================================================
--- 
xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
 (original)
+++ 
xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
 Wed Oct 12 06:06:08 2005
@@ -24,6 +24,7 @@
 #include <xercesc/validators/datatype/QNameDatatypeValidator.hpp>
 #include <xercesc/validators/datatype/InvalidDatatypeFacetException.hpp>
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
+#include <xercesc/internal/ValidationContextImpl.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
@@ -123,6 +124,23 @@
         return;
 
     checkValueSpace(content, manager);
+
+    if (context) {
+        int colonPos = XMLString::indexOf(content, chColon);
+        if (colonPos > 0) {
+            XMLCh* prefix = XMLString::replicate(content, manager);
+            ArrayJanitor<XMLCh>  jan(prefix, manager);
+            normalizeContent(prefix, manager);
+            prefix[colonPos] = chNull;
+                     
+            if (context->isPrefixUnknown(prefix)) {
+                ThrowXMLwithMemMgr1(InvalidDatatypeValueException
+                    , XMLExcepts::VALUE_QName_Invalid
+                    , content
+                    , manager);             
+            }                                  
+        }
+    }
 
     if ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0 &&
         (getEnumeration() != 0))



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to