/** * Generate string from $xmlWriter use $template for this. * * @param string $template * @param XML\Writer $xmlWriter * @param array $parameters * * @throws \DomainException * @throws \LogicException * @return string */ public function render($template, \XSLTemplate\XML\Writer $xmlWriter, array $parameters = array()) { $this->_currentParameters = $currentParameters = array_merge($this->getParameters(), $parameters); if (empty($currentParameters['render.types'])) { throw new \DomainException('render.types is not defined in renderer parameters'); } //close all opened nodes in xml document $xmlWriter->endDocument(); if (in_array(Renderer::RENDER_XML, $currentParameters['render.types']) && isset($currentParameters['only.xml']) && $currentParameters['only.xml'] == true) { return $this->renderXml($xmlWriter, $parameters); } $userAgent = isset($currentParameters['userAgent']) ? $currentParameters['userAgent'] : $_SERVER['HTTP_USER_AGENT']; if (in_array(Renderer::RENDER_BROWSER, $currentParameters['render.types']) && $this->isBrowserSupport($userAgent, $currentParameters['render.browsers'])) { if (!isset($currentParameters['templates.url'])) { throw new \DomainException('templates.url is not defined in renderer parameters, need for render on browser side'); } return $this->renderBrowser($currentParameters['templates.url'] . $template, $xmlWriter, $currentParameters); } if (!isset($currentParameters['templates.path'])) { throw new \DomainException('templates.path is not defined in renderer parameters, need for render on server side with libxslt or xslcache'); } if (in_array(Renderer::RENDER_XSL_CACHE, $currentParameters['render.types'])) { return $this->renderXslCache($currentParameters['templates.path'] . $template, $xmlWriter, $currentParameters); } if (in_array(Renderer::RENDER_LIB_XSLT, $currentParameters['render.types'])) { return $this->renderLibXslt($currentParameters['templates.path'] . $template, $xmlWriter, $currentParameters); } throw new \LogicException("Renderers for xsl transformation is not found"); }