/** Makes a XML node from an object/ array / text */
 static function makeXML($model, $parent, $addToParent = false)
 {
     if (is_array($model)) {
         foreach ($model as $name => $value) {
             if (!is_numeric($name)) {
                 $node = $parent->ownerDocument->createElement($name);
                 $parent->appendChild($node);
                 IPXSLTemplate::makeXml($value, $node, true);
             } else {
                 $node = $parent;
                 IPXSLTemplate::makeXml($value, $node);
             }
         }
     } elseif (is_object($model)) {
         if ($addToParent) {
             $node = $parent;
         } else {
             $node = $parent->ownerDocument->createElement(get_class($model));
             $parent->appendChild($node);
         }
         foreach ($model as $propertyName => $propertyValue) {
             $property = $parent->ownerDocument->createElement($propertyName);
             $node->appendChild($property);
             IPXSLTemplate::makeXml($propertyValue, $property);
         }
     } else {
         $parent->appendChild($parent->ownerDocument->createTextNode($model));
     }
 }