[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * @package s9e\TextFormatter 5 * @copyright Copyright (c) 2010-2019 The s9e Authors 6 * @license http://www.opensource.org/licenses/mit-license.php The MIT License 7 */ 8 namespace s9e\TextFormatter\Configurator\RendererGenerators; 9 use s9e\TextFormatter\Configurator\Helpers\TemplateHelper; 10 use s9e\TextFormatter\Configurator\RendererGenerator; 11 use s9e\TextFormatter\Configurator\RendererGenerators\XSLT\Optimizer; 12 use s9e\TextFormatter\Configurator\Rendering; 13 use s9e\TextFormatter\Renderers\XSLT as XSLTRenderer; 14 class XSLT implements RendererGenerator 15 { 16 public $optimizer; 17 public function __construct() 18 { 19 $this->optimizer = new Optimizer; 20 } 21 public function getRenderer(Rendering $rendering) 22 { 23 return new XSLTRenderer($this->getXSL($rendering)); 24 } 25 public function getXSL(Rendering $rendering) 26 { 27 $groupedTemplates = []; 28 $prefixes = []; 29 $templates = $rendering->getTemplates(); 30 TemplateHelper::replaceHomogeneousTemplates($templates, 3); 31 foreach ($templates as $tagName => $template) 32 { 33 $template = $this->optimizer->optimizeTemplate($template); 34 $groupedTemplates[$template][] = $tagName; 35 $pos = \strpos($tagName, ':'); 36 if ($pos !== \false) 37 $prefixes[\substr($tagName, 0, $pos)] = 1; 38 } 39 $xsl = '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"'; 40 $prefixes = \array_keys($prefixes); 41 \sort($prefixes); 42 foreach ($prefixes as $prefix) 43 $xsl .= ' xmlns:' . $prefix . '="urn:s9e:TextFormatter:' . $prefix . '"'; 44 if (!empty($prefixes)) 45 $xsl .= ' exclude-result-prefixes="' . \implode(' ', $prefixes) . '"'; 46 $xsl .= '><xsl:output method="html" encoding="utf-8" indent="no"'; 47 $xsl .= '/>'; 48 foreach ($rendering->getAllParameters() as $paramName => $paramValue) 49 { 50 $xsl .= '<xsl:param name="' . \htmlspecialchars($paramName) . '"'; 51 if ($paramValue === '') 52 $xsl .= '/>'; 53 else 54 $xsl .= '>' . \htmlspecialchars($paramValue) . '</xsl:param>'; 55 } 56 foreach ($groupedTemplates as $template => $tagNames) 57 { 58 $xsl .= '<xsl:template match="' . \implode('|', $tagNames) . '"'; 59 if ($template === '') 60 $xsl .= '/>'; 61 else 62 $xsl .= '>' . $template . '</xsl:template>'; 63 } 64 $xsl .= '</xsl:stylesheet>'; 65 return $xsl; 66 } 67 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |