Julia: XSL Problem: Kontextknoten nicht bekannt?

Beitrag lesen

Hallo zusammen,

ich möchte aud XML ein HTML bauen. Ich habe folgende XML-Datei für Bücher:

<?xml version="1.1" encoding="UTF-8"?>

<library xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
	 xsi:noNamespaceSchemaLocation='library.xsd'>

  <book>
    <author-ref>J.K.Rowling</author-ref>
    <title>Harry Potter und der Stein der Weisen</title>
    <language>de</language>
    <year>1998</year>
  </book>

  <book>
    <author-ref>J.K.Rowling</author-ref>
    <title>Harry Potter und die Kammer des Schreckens</title>
    <language>de</language>
    <year>1999</year>
  </book>
...

Daraus möchte ich sozusagen einen Glossar bauen:

z.B.:

H

Harry

Harry Potter und der Stein der Weisen

Harry Potter und die Kammer des Schreckens


K

Kammer

Harry Potter und die Kammer des Schreckens


usw.

Ich habe bereis geschafft,die Buchtsaben und Suchwörter sortiert auszugeben.

und möchte jetzt nur noch die passenden Titeln dazu schreiben.

Meine Idee wäre das mit xsl:key zu machen, aber ich kriege das nicht hin. Hier der wesentliche Ausschnitt:

<xsl:for-each-group select="$suchwoerter" group-by="$ersterBuchstabe">
	<xsl:sort select="current-grouping-key()" />
		<p><h2>
			  <xsl:value-of select="current-grouping-key()"/>
			 </h2>
		<p><h3>
				<xsl:for-each select="current-group()">						
				  <xsl:value-of select=".[substring(.,1,1)=current-grouping-key()]"/>				
				  <xsl:for-each select="key('titelsuche', '.[substring(.,1,1)=current-grouping-key()]')">
          <!-- Auswertung -->
					</xsl:for-each>
				</xsl:for-each>
				</h3>
				</p>
</xsl:for-each-group>
  1. Die 2. xsl:for-each gibt den Fehler: "Cannot call the key() function when the context item is not a node". Wie kann ich den Context Item bekannt machen?

  2. Ich weiß auch nicht, wie ich den richtigen xsl:key definieren soll. Ich dachte: <xsl:key name= "titelsuche" use="title"/> Ist es richtig? Wenn nein, was wäre richtig?

Und noch eine Frage: Soweit ich verstehe, muss xsl:key immer in obersten Ebene stehen. Ist es korrekt?

Schönen Dank im Voraus!

Julia