Česky
Kamil Dudka

Web components

File detail

Name:DownloadPageServer_init.xsl [Download]
Location: src > page
Size:2.3 KB
Last modification:2007-12-11 16:09

Source code

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/>
  <xsl:strip-space elements="*"/>
  <!--<xsl:preserve-space elements="pre"/>
-->
 
  <xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>
 
  <!-- Match root element -->
  <xsl:template match="/page">
    <xsl:if test="not(@visible='no')">
      <xsl:call-template name="initTitle"/>
    </xsl:if>
    <xsl:apply-templates />
  </xsl:template>
 
  <!-- Load title from page metadata and build l10n PHP script -->
  <xsl:template name="initTitle">
    <xsl:processing-instruction name="php">
      <xsl:text>
// Page title l10n script
// Generated by XSLT processor using PageServer_init.xsl template
$pageTitleLocalization = Array();</xsl:text>
      <xsl:for-each select="name[not(@lang)]">
        <xsl:text>
$pageTitle = '</xsl:text>
        <xsl:value-of select="text()"/>
        <xsl:text>';</xsl:text>
      </xsl:for-each>
      <xsl:for-each select="name[@lang]">
        <xsl:text>
$pageTitleLocalization['</xsl:text>
        <xsl:value-of select="@lang"/>
        <xsl:text>'] = '</xsl:text>
        <xsl:value-of select="text()"/>
        <xsl:text>';</xsl:text>
      </xsl:for-each>
      <xsl:text></xsl:text>
      <xsl:text>
$pageLang = LangSelect::singleton()->getLang();
if (array_key_exists($pageLang, $pageTitleLocalization))
  $pageTitle = $pageTitleLocalization[$pageLang];
</xsl:text>
    </xsl:processing-instruction>
  </xsl:template>
 
  <!-- Copy initPage element's content to output document -->
  <xsl:template match="pageInit[parent::page]">
    <xsl:apply-templates mode="copy"/>
  </xsl:template>
 
  <!-- Handle processing instruction -->
  <xsl:template match="processing-instruction('php')" mode="copy">
    <xsl:processing-instruction name="php">
      <xsl:value-of select="self::processing-instruction('php')"/>
    </xsl:processing-instruction>
  </xsl:template>
 
  <!-- Copy all content recursively -->
  <xsl:template match="*" mode="copy">
    <xsl:copy>
      <xsl:for-each select="@*">
        <xsl:copy-of select="."/>
      </xsl:for-each>
      <xsl:apply-templates mode="copy"/>
    </xsl:copy>
  </xsl:template>
 
  <!-- suppress default actions -->
  <xsl:template match="*" />
 
</xsl:stylesheet>