[ Index ]

PHP Cross Reference of phpBB-3.2.11-deutsch

title

Body

[close]

/vendor/s9e/text-formatter/src/Configurator/RendererGenerators/ -> XSLT.php (source)

   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  }


Generated: Wed Nov 11 20:33:01 2020 Cross-referenced by PHPXref 0.7.1