Handle prefix-less xsi:type values.
authorScott Cantor <cantor.2@osu.edu>
Thu, 11 May 2006 04:46:19 +0000 (04:46 +0000)
committerScott Cantor <cantor.2@osu.edu>
Thu, 11 May 2006 04:46:19 +0000 (04:46 +0000)
xmltooling/util/XMLHelper.cpp

index 74e09b3..091fd95 100644 (file)
@@ -47,15 +47,20 @@ QName* XMLHelper::getXSIType(const DOMElement* e)
 {\r
     DOMAttr* attribute = e->getAttributeNodeNS(XMLConstants::XSI_NS, type);\r
     if (attribute) {\r
-        int i;\r
         const XMLCh* attributeValue = attribute->getTextContent();\r
-        if (attributeValue && (i=XMLString::indexOf(attributeValue,chColon))>0) {\r
-            XMLCh* prefix=new XMLCh[i+1];\r
-            XMLString::subString(prefix,attributeValue,0,i);\r
-            prefix[i]=chNull;\r
-            QName* ret=new QName(e->lookupNamespaceURI(prefix), attributeValue + i + 1, prefix);\r
-            delete[] prefix;\r
-            return ret;\r
+        if (attributeValue && *attributeValue) {\r
+            int i;\r
+            if ((i=XMLString::indexOf(attributeValue,chColon))>0) {\r
+                XMLCh* prefix=new XMLCh[i+1];\r
+                XMLString::subString(prefix,attributeValue,0,i);\r
+                prefix[i]=chNull;\r
+                QName* ret=new QName(e->lookupNamespaceURI(prefix), attributeValue + i + 1, prefix);\r
+                delete[] prefix;\r
+                return ret;\r
+            }\r
+            else {\r
+                return new QName(e->lookupNamespaceURI(&chNull), attributeValue);\r
+            }\r
         }\r
     }\r
 \r