<?xml version="1.0"?>
<?xml-stylesheet href="/pool/xslt_ht.xslt" type="application/xml"?>
<xsl:stylesheet
  xmlns = "http://herbaer.de/xmlns/20170613/vis/"
  xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
  xmlns:v = "http://herbaer.de/xmlns/20170605/visits/"
  xmlns:ht = "http://www.w3.org/1999/xhtml"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  xmlns:xl = "http://www.w3.org/1999/xlink"
  version = "1.0"
  exclude-result-prefixes = "v ht d xl"
>
<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>visits_reduce.xslt</title>
  <subtitle>Daten zu Besuchen kürzen</subtitle>
  <date>2017-06-10</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</d:info>

<d:para>
Anzahl der beliebtesten und unbeliebtesten Bildergeschichten
</d:para>
<xsl:param name="p_numfavstories" select="6"/>

<d:para>
Anzahl der beliebtesten Bilder
</d:para>
<xsl:param name="p_numfavimages" select="6"/>

<d:para>
Anzahl der beliebtesten Sprachen
</d:para>
<xsl:param name="p_numfavlangs" select="6"/>

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

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

<d:para>
Wurzelelement
</d:para>
<xsl:template match="v:visits">
  <b>
    <xsl:apply-templates select="v:last_time"/>
    <xsl:apply-templates
      select =
      "v:favstories [@lang = 'total'] | v:favimages [@lang = 'total'] | v:favlangs"
    />
  </b>
</xsl:template>

<d:para>
Zeit des letzten Zugriffs
</d:para>
<xsl:template match="v:last_time">
  <t><xsl:value-of select="."/></t>
</xsl:template>

<d:para>
Die beliebtesten
<d:parameter>p_numfavstories</d:parameter>
und die unbeliebtesten
<d:parameter>p_numfavstories</d:parameter>
Bildergeschichten werden ausgewählt.
</d:para>
<xsl:template match="v:favstories">
  <s>
    <xsl:apply-templates
      select = "
        v:favstory
        [position() &lt;= $p_numfavstories or position() + $p_numfavstories &gt; last()]
      "
    />
  </s>
</xsl:template>

<d:para>
Von einer beliebten Bildergeschichte
werden die Kennung und die Zahl der Besuche übernommen,
hinzu kommt das beliebteste Bild der Bildergeschichte.
</d:para>
<xsl:template match="v:favstory">
  <s>
    <xsl:variable name="story" select="v:story"/>
    <xsl:apply-templates select="v:story | v:visits"/>
    <xsl:apply-templates
      mode = "image"
      select =
      "(../../v:favimages/v:favimage[substring-before (v:imgid, '/') = $story])[1]"
    />
  </s>
</xsl:template>

<d:para>
Die Kennung eines Bildes
</d:para>
<xsl:template match="v:favimage" mode="image">
  <i><xsl:value-of select="substring-after (v:imgid, '/')"/></i>
</xsl:template>

<d:para>
Kennung einer Bildergeschichte
</d:para>
<xsl:template match="v:story">
  <s><xsl:value-of select="."/></s>
</xsl:template>

<d:para>
Zahl der Besuche
</d:para>
<xsl:template match="v:*/v:visits">
  <b><xsl:value-of select="."/></b>
</xsl:template>

<d:para>
Die beliebtesten <d:parameter>p_numfavimages</d:parameter> Bilder werden ausgewählt.
</d:para>
<xsl:template match="v:favimages">
  <i>
    <xsl:apply-templates select="v:favimage [position() &lt;= $p_numfavimages]"/>
  </i>
</xsl:template>

<d:para>
Von einem beliebten Bild
werden die Kennung und die Zahl der Besuche übernommen.
</d:para>
<xsl:template match="v:favimage">
  <i>
    <xsl:apply-templates select="v:imgid | v:visits"/>
  </i>
</xsl:template>

<d:para>
Kennung eines Bildes und der zugehörigen Bildergeschichte
</d:para>
<xsl:template match="v:imgid">
  <i><xsl:value-of select="substring-after (., '/')"/></i>
  <s><xsl:value-of select="substring-before (., '/')"/></s>
</xsl:template>

<d:para>
Die beliebtesten <d:parameter>p_numfavlangs</d:parameter> Sprachen werden ausgewählt.
</d:para>
<xsl:template match="v:favlangs">
  <l>
    <xsl:apply-templates select="v:favlang [position() &lt;= $p_numfavlangs + 1]"/>
  </l>
</xsl:template>

<d:para>
Zu einer Sprache werden die Kennung,
die Anzahl der Besuche, die beliebteste Bildergeschichte und das beliebteste Bild übernommen.
</d:para>
<xsl:template match="v:favlang">
  <xsl:variable name="lang" select="v:lang"/>
  <l>
    <xsl:apply-templates select="v:lang | v:visits"/>
    <xsl:apply-templates select="/v:visits/v:favstories[@lang = $lang]/v:favstory[1]"/>
    <xsl:apply-templates select="/v:visits/v:favimages[@lang = $lang]/v:favimage[1]"/>
  </l>
</xsl:template>

<d:para>
Kennung einer Sprache
</d:para>
<xsl:template match="v:lang">
  <l><xsl:value-of select="."/></l>
</xsl:template>

</xsl:stylesheet>
