You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ca...@apache.org on 2005/10/12 15:19:12 UTC

svn commit: r314889 - /xerces/c/trunk/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp

Author: cargilld
Date: Wed Oct 12 06:19:11 2005
New Revision: 314889

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

Modified:
    xerces/c/trunk/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp

Modified: xerces/c/trunk/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp?rev=314889&r1=314888&r2=314889&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp Wed Oct 12 06:19:11 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: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org