<?xml version="1.0"?>
<?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:is = "http://herbaer.de/xmlns/20080705/imgshow"
  xmlns:ix = "http://herbaer.de/xmlns/20110902/imgindex"
  xmlns:v = "http://herbaer.de/xmlns/20170613/vis/"
  xmlns:xl = "http://www.w3.org/1999/xlink"
  xmlns = "http://herbaer.de/xmlns/20170613/vis/"
  exclude-result-prefixes = "xsl d is ix xl v"
  version = "1.0"
>

<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>vis_add_details.xslt</title>
  <subtitle>Bilder und Bildpositionen der Favoriten hinzufügen</subtitle>
  <date>2017-06-13</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</d:info>

<d:section xmlns="http://herbaer.de/xmlns/20051201/doc" role="stylesheet">
<d:para>
  Diese Transformation fügt
  Bilder und Fragment-Kennungen zu den Bildern ein.
</d:para>
</d:section>

<d:para>
Muster des Pfads einer Bildergeschichte
mit dem Platzhalter '<d:literal>${storyid}</d:literal>'
</d:para>
<xsl:param name="p_ptn_storypath" select="'../../docroot/s${storyid}/story.xml.de.'"/>

<d:para>
Muster des Pfads einer Bildbewertungsdatei
mit dem Platzhalter '<d:literal>${storyid}</d:literal>'
</d:para>
<xsl:param name="p_ptn_iixpath" select="'../../imgix/imgix_${storyid}.xml'"/>

<d:para>Vorlage <d:literal>txt.replacelist</d:literal></d:para>
<xsl:include href="/pool/txt.xslt"/>

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

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

<d:para>Wurzelelement</d:para>
<xsl:template match="v:b">
  <xsl:copy>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

<d:para>
Text wird kopiert.
</d:para>
<xsl:template match="text()">
  <xsl:copy-of select="."/>
</xsl:template>

<d:para>
Elemente werden "tief" kopiert.
</d:para>
<xsl:template match="v:*">
  <xsl:copy>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

<d:para>
Zu einer Bildergeschichte wird ein Bild hinzugefügt,
wenn ihr noch kein Bild zugeordnet ist:
das erste Bild mit der besten Bewertung 1 aus der Bildbewertungsdatei
(s. <d:link linkend="vis_add_details.param_p_ptn_iixpath">p_ptn_iixpath</d:link>).
</d:para>
<xsl:template match="v:b/v:s/v:s[not (v:i)]">
  <xsl:variable name="story" select="v:s"/>
  <xsl:variable name="list" select="concat ('${storyid},', $story)"/>
  <xsl:copy>
    <xsl:apply-templates select="*"/>
    <xsl:variable name="iixpath">
      <xsl:call-template name="txt.replacelist">
        <xsl:with-param name="txt" select="$p_ptn_iixpath"/>
        <xsl:with-param name="list" select="$list"/>
      </xsl:call-template>
    </xsl:variable>
    <i>
      <xsl:value-of select="document ($iixpath)/ix:imgindex/ix:image[ix:rank = 1][1]/ix:key"
      />
    </i>
  </xsl:copy>
</xsl:template>

<d:para>
Zu einem Bild wird der "Fragment-Bezeichner" hinzugefügt.
</d:para>
<xsl:template match="v:b/v:i/v:i">
  <xsl:variable name="image" select="v:i"/>
  <xsl:variable name="path">
    <xsl:call-template name="txt.replacelist">
      <xsl:with-param name="txt" select="$p_ptn_storypath"/>
      <xsl:with-param name="list" select="concat ('${storyid},', v:s)"/>
    </xsl:call-template>
  </xsl:variable>
  <xsl:copy>
    <xsl:apply-templates select="document($path)//is:jpg[@src = $image]"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

<d:para>
Fragment-Bezeichner zu einem Bild
</d:para>
<xsl:template match="is:jpg">
  <p>
    <xsl:value-of
      select = "
        concat (
        's', count (preceding::is:section) + 1, '_', @src, '_',
        count (preceding-sibling::is:jpg | parent::is:p/preceding-sibling::is:p/is:jpg)
        )
      "
    />
  </p>
</xsl:template>

</xsl:stylesheet>
