Set xsi:type during object construction.
[shibboleth/cpp-xmltooling.git] / xmltooling / AbstractXMLObject.cpp
index 4e0005b..cdba177 100644 (file)
@@ -34,11 +34,15 @@ AbstractXMLObject::~AbstractXMLObject() {
     std::for_each(m_children.begin(), m_children.end(), cleanup<XMLObject>());\r
 }\r
 \r
-AbstractXMLObject::AbstractXMLObject(const XMLCh* namespaceURI, const XMLCh* elementLocalName, const XMLCh* namespacePrefix)\r
-    : m_elementQname(namespaceURI,elementLocalName, namespacePrefix), m_typeQname(NULL), m_parent(NULL),\r
+AbstractXMLObject::AbstractXMLObject(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)\r
+    : m_elementQname(nsURI, localName, prefix), m_typeQname(NULL), m_parent(NULL),\r
         m_log(&log4cpp::Category::getInstance(XMLTOOLING_LOGCAT".XMLObject"))\r
 {\r
-    addNamespace(Namespace(namespaceURI, namespacePrefix));\r
+    addNamespace(Namespace(nsURI, prefix));\r
+    if (schemaType) {\r
+        m_typeQname = new QName(*schemaType);\r
+        addNamespace(Namespace(m_typeQname->getNamespaceURI(), m_typeQname->getPrefix()));\r
+    }\r
 }\r
 \r
 AbstractXMLObject::AbstractXMLObject(const AbstractXMLObject& src)\r