<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/pool/xslt_ht.xslt" type="application/xml"?>
<xsl:stylesheet
  xmlns = "http://herbaer.de/xmlns/20151211/kalenderbilder/"
  xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  xmlns:ht = "http://www.w3.org/1999/xhtml"
  xmlns:k = "http://herbaer.de/xmlns/20151211/kalenderbilder/"
  xmlns:l = "http://herbaer.de/xmlns/20151212/loctext/"
  xmlns:xl = "http://www.w3.org/1999/xlink"
  version = "1.0"
  xml:lang = "de"
  exclude-result-prefixes = "d k ht xl"
>
<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>web2local.xslt</title>
  <subtitle>Lokaler Kalenderdatei aus Web-Kalenderdatei</subtitle>
  <date>2018-04-13</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</d:info>

<d:para role="stylesheet">
Diese Transformation passt eine Web-Kalenderdatei
zur Verwendung als lokale Kalenderdatei an.
</d:para>

<d:para>
Das Jahr
</d:para>
<xsl:param name="year" select="2022"/>

<d:para>
Die Sprache-/Land-Kennung
</d:para>
<xsl:param name="lang" select="'de'"/>

<d:para>
Die Sprach-Kennung
</d:para>
<xsl:param name="lg">
  <xsl:choose>
    <xsl:when test="contains ($lang, '-')">
      <xsl:value-of select="substring-before ($lang, '-')"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$lang"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:param>

<xsl:output method="xml" encoding="utf-8" indent="yes"/>

<d:para>
Wurzel: Verarbeitungsanweisung
</d:para>
<xsl:template match="/">
  <xsl:processing-instruction name="xml-stylesheet"
  >href="src/kal.xslt" type="application/xml"</xsl:processing-instruction>
  <xsl:apply-templates select="*"/>
</xsl:template>

<d:para>
Kalenderbilder: Attribut @xml:lang
</d:para>
<xsl:template match="k:kalenderbilder">
  <xsl:copy>
    <xsl:attribute name="xml:lang">
      <xsl:value-of select="$lang"/>
    </xsl:attribute>
    <xsl:apply-templates select="*"/>
  </xsl:copy>
</xsl:template>

<d:para>
HTML-Elemente werden entfernt.
</d:para>
<xsl:template match="ht:*"/>

<d:para>
Aus mehreren Sprach-Varianten wird die richtige ausgewählt.
</d:para>
<xsl:template match="l:v">
  <xsl:choose>
    <xsl:when test="l:t [@l = $lg]">
      <xsl:value-of select="l:t [@l = $lg]"/>
    </xsl:when>
    <xsl:when test="l:t [@l = $lang]">
      <xsl:value-of select="l:t [@l = $lang]"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="l:t[1]"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<d:para>
s-Elemente werden entfernt.
</d:para>
<xsl:template match="k:s"/>

<d:para>
Attribute und Textknoten werden kopiert.
</d:para>
<xsl:template match="@* | text() | comment() | processing-instruction()">
  <xsl:copy-of select="."/>
</xsl:template>

<d:para>
Das richtige Kalenderjahr
</d:para>
<xsl:template match="k:y">
  <y><xsl:value-of select="$year"/></y>
</xsl:template>

<d:para>
Andere Elemente werden kopiert.
</d:para>
<xsl:template match="*">
  <xsl:copy>
    <xsl:apply-templates select="@* | * | text()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>
