ThomasM: XSL Problem: Kontextknoten nicht bekannt?

Beitrag lesen

Hallo Julia,

habe einige Zeit gewartet, ob noch mehr Input zum Thema kommt. Wollte es aber nicht unversucht lassen. Das wäre wohl auch der algorithmische Ansatz.

Du sagst, dass $suchwoerter bereits vorab ermittelt wurde. Ich habe diese Sequenz zum Testen mit den Substantiven aus den Titeln befüllt.

Ich hoffe, etwa das ist gesucht:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">

    <xsl:variable name="suchwoerter"
      select="('Harry', 'Potter', 'Stein', 'Weisen', 'Kammer', 'Schreckens')"/>

    <xsl:variable name="titel" select="//title"/>

    <h1>Glossar</h1>

    <xsl:for-each-group select="$suchwoerter" group-by="substring(., 1, 1)">
      <xsl:sort select="current-grouping-key()" data-type="text" order="ascending"/>

      <h2>
        <xsl:value-of select="current-grouping-key()"/>
      </h2>

      <xsl:for-each select="$suchwoerter[starts-with(., current-grouping-key())]">
        <xsl:sort select="." data-type="text" order="ascending"/>
        <xsl:variable name="suchwort" select="."/>

        <h3>
          <xsl:value-of select="$suchwort"/>
        </h3>

        <ul>
          <xsl:for-each select="$titel">
            <xsl:sort select="." data-type="text" order="ascending"/>
            <xsl:if test="contains(., $suchwort)">
              <li>
                <xsl:value-of select="."/>
              </li>
            </xsl:if>
          </xsl:for-each>
        </ul>

      </xsl:for-each>

    </xsl:for-each-group>

  </xsl:template>

</xsl:stylesheet>

Ergebnis:

<h1>Glossar</h1>
<h2>H</h2>
<h3>Harry</h3>
<ul>
  <li>Harry Potter und der Stein der Weisen</li>
  <li>Harry Potter und die Kammer des Schreckens</li>
</ul>
<h2>K</h2>
<h3>Kammer</h3>
<ul>
  <li>Harry Potter und die Kammer des Schreckens</li>
</ul>
<h2>P</h2>
<h3>Potter</h3>
<ul>
  <li>Harry Potter und der Stein der Weisen</li>
  <li>Harry Potter und die Kammer des Schreckens</li>
</ul>
<h2>S</h2>
<h3>Schreckens</h3>
<ul>
  <li>Harry Potter und die Kammer des Schreckens</li>
</ul>
<h3>Stein</h3>
<ul>
  <li>Harry Potter und der Stein der Weisen</li>
</ul>
<h2>W</h2>
<h3>Weisen</h3>
<ul>
  <li>Harry Potter und der Stein der Weisen</li>
</ul>

Grüße,
Thomas