<?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:d = "http://herbaer.de/xmlns/20051201/doc"
  xmlns = "http://www.w3.org/1999/xhtml"
  xmlns:ht = "http://www.w3.org/1999/xhtml"
  exclude-result-prefixes = "d ht"
  version = "1.0"
  xml:lang = "de"
>
<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>treelist.xslt</title>
  <subtitle>HTML-Listen als Baumansicht</subtitle>
  <date>2015-12-15</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 ist nützlich für XHTML-Dateien mit verschachtelten Listen
(<d:tag class="element">ol</d:tag>
oder
<d:tag class="element">ul</d:tag>-Elementen)
Sie fügt die Dateien
<d:filename>treelist.js</d:filename> und
<d:filename>treelist.css</d:filename> hinzu,
die die verschachtelten Listen als &#x201e;faltbare&#x201d; Baumansicht zeigen.
</d:para>

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

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

<d:para>
Verweise führen zu einem neuen Fenster
</d:para>
<xsl:template match="ht:a [not (@target)]">
  <xsl:copy>
    <xsl:attribute name="target">_blank</xsl:attribute>
    <xsl:apply-templates select="@* | * | text()"/>
  </xsl:copy>
</xsl:template>

<d:para>
Attribute werden direkt kopiert.
</d:para>
<xsl:template match="@*">
  <xsl:copy-of select="."/>
</xsl:template>

<d:para>
Im Kopf werden Stil-Verweise und Skript-Elemente eingefügt
</d:para>
<xsl:template match="ht:head">
  <xsl:if test="not (ht:link[@rel = 'stylesheet'])">
    <xsl:element name="link">
      <xsl:attribute name="rel">stylesheet</xsl:attribute>
      <xsl:attribute name="href">/kal/s/treelist.css</xsl:attribute>
    </xsl:element>
  </xsl:if>
  <xsl:if test="not (ht:script)">
    <xsl:element name="script">
      <xsl:attribute name="src">/kal/s/treelist.js</xsl:attribute>
    </xsl:element>
  </xsl:if>
  <xsl:if test="not (ht:link[@rel = 'icon'])">
    <link rel="icon" href="/style/shortcut_icon.png"/>
  </xsl:if>
  <xsl:if test="not (ht:meta[@name = 'viewport'])">
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
  </xsl:if>
  <xsl:apply-templates select="*"/>
</xsl:template>

</xsl:stylesheet>
