XML/XSLT: :
global $arCustomTemplateEngines; $arCustomTemplateEngines = array( "xslt" => array( "templateExt" => array("xsl"), "function" => "XSLTEngine" ), );
:
function CreateXMLFromArray($xDoc, $xNode, $ar) { foreach($ar as $key=>$val) { if(!is_string($key) || strlen($key)<=0) $key = "value"; $xElement = $xDoc->createElement($key); if(is_array($val)) { CreateXMLFromArray($xDoc, $xElement, $val); } else { $xElement->appendChild($xDoc->createTextNode(iconv( SITE_CHARSET, "utf-8", $val))); } $xNode->appendChild($xElement); } return $xNode; }
function XSLTEngine($templateFile, $arResult, $arParams, $arLangMessages, $templateFolder, $parentTemplateFolder, $template) { $arResult["PARAMS"] = array( "templateFolder" => $templateFolder, "parentTemplateFolder" => $parentTemplateFolder, "arParams" => $arParams, "arLangMessages" => $arLangMessages ); $xDoc = new DOMDocument("1.0", SITE_CHARSET); $xRoot = $xDoc->createElement('result'); CreateXMLFromArray($xDoc, $xRoot, $arResult); $xDoc->appendChild($xRoot); $xXsl = new DOMDocument(); $xXsl->load( $_SERVER["DOCUMENT_ROOT"].$templateFile ); $xProc = new XSLTProcessor; $xProc->importStyleSheet($xXsl); echo $xProc->transformToXML($xDoc); }