<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/pool/xslt_ht.xslt" type="application/xml"?>
<xsl:stylesheet
  xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
  xmlns:ht = "http://www.w3.org/1999/xhtml"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  version = "1.0"
>
<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>xhtml_title.xslt</title>
  <subtitle>Titel eines XHTML-Dokuments</subtitle>
  <date>2016-01-16</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</d:info>

<d:para xmlns="http://herbaer.de/xmlns/20051201/doc">
Die gewünschte Sprache des Titels:
Zuerst wird ein Titel in der gewünschte Sprache einschließlich der Land-Kennung gesucht.
dann ein Titel in der gewünschten Sprache ohne die Land-Kennung,
zuletzt der erste Titel
</d:para>
<xsl:param name="p_lang" select="'de'"/>

<xsl:output method="text" encoding="utf-8"/>

<d:para>
Wurzel
</d:para>
<xsl:template match="/">
  <xsl:apply-templates select="*"/>
</xsl:template>

<d:para>
Elemente werden absteigend durchsucht.
Falls ein
<d:tag class="element">html</d:tag>-
oder
<d:tag class="element">head</d:tag>-Element
als Kind enthalten ist,
wird nur das erste dieser Elemente verarbeitet.
</d:para>
<xsl:template match="*">
  <xsl:choose>
    <xsl:when test="ht:html">
      <xsl:apply-templates select="ht:html [1]"/>
    </xsl:when>
    <xsl:when test="ht:head">
      <xsl:apply-templates select="ht:head [1]"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:apply-templates select="*"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<d:para>
HTML-Kopf:
der erste Titel in der passenden Sprache mit oder ohne Land-Kennung
</d:para>
<xsl:template match="ht:head | * [ht:title] ">
  <xsl:variable name="l2">
    <xsl:choose>
      <xsl:when test="contains ($p_lang, '-')">
        <xsl:value-of select="substring-before ($p_lang, '-')"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$p_lang"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:choose>
    <xsl:when test="ht:title [@lang = $p_lang or @xml:lang = $p_lang]">
      <xsl:value-of select="ht:title [@lang = $p_lang or @xml:lang = $p_lang][1]"/>
    </xsl:when>
    <xsl:when test="ht:title [@lang = $l2 or @xml:lang = $l2]">
      <xsl:value-of select="ht:title [@lang = $l2 or @xml:lang = $l2][1]"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="ht:title"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

</xsl:stylesheet>
