<?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:is = "http://herbaer.de/xmlns/20080705/imgshow"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  xmlns = "http://herbaer.de/xmlns/20080705/imgshow"
  exclude-result-prefixes = "d is"
  version = "1.0"
>
<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>imgshow_adjust_sect.xslt</title>
  <subtitle>Verweise auf Bilder in der WWW-Version anpassen</subtitle>
  <date>2011-08-10</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">
<para>
Ein Verweis auf ein Bild innerhalb einer "Bildergeschichte"
enthält die Position des Bildes innerhalb seines Abschnitts.
Da in der Web-Version im Vergleich zur Katalog-Version Bilder entfernt sind,
ist die Position im Verweis anzupassen.
Wenn das Bild, auf das verwiesen wird, entfernt ist,
wird aus dem Verweis auf das Bild ein Verweis auf den Abschnitt.
</para>
</d:section><!-- role = 'stylesheet' -->

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

<d:para>Wurzel mit Verarbeitungsanweisungen verarbeiten</d:para>
<xsl:template match="/">
  <xsl:copy-of select="processing-instruction()"/>
  <xsl:apply-templates/>
</xsl:template>

<d:para>Elemente werden kopiert, soweit es keine andere Vorlage gibt</d:para>
<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

<xsl:template match="is:meta"/>

<d:para>
Bildpositionen in Verweisen auf Bilder werden korrigiert
</d:para>
<xsl:template match="is:sect">
  <xsl:variable name="ref">
    <xsl:choose>
      <xsl:when test="not (contains (@ref, '_'))">
        <xsl:value-of select="@ref"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:variable name="sref" select="substring-before (@ref, '_')"/>
        <xsl:variable name="iref" select="substring-before (substring-after (@ref, '_'), '_')"
        />
        <xsl:variable name="img" select="/is:section [position() = $sref]//is:jpg [@src = $iref]"
        />
        <xsl:choose>
          <xsl:when test="$img">
            <xsl:apply-templates select="$img[1]" mode="iref"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:variable name="img2" select="//is:jpg [@src = $iref]"/>
            <xsl:choose>
              <xsl:when test="$img2">
                <xsl:apply-templates select="$img2[1]" mode="iref"/>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="$sref"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <sect ref="{$ref}"><xsl:apply-templates/></sect>
</xsl:template>

<d:para>
Die Kennung eines Bildes
</d:para>
<xsl:template match="is:jpg" mode="iref">
  <xsl:value-of select="concat (count (preceding::is:section) + 1, '_', @src, '_')"/>
  <xsl:value-of select="count (preceding-sibling::is:jpg | parent::is:p/preceding-sibling::is:p/is:jpg)"
  />
</xsl:template>

</xsl:stylesheet>
