fjh: erster Geschwister-Vorgänger des aktuellen Knoten

Beitrag lesen

Hallo Paule,

Folgender xPath-Ausdruck sollte nach meinem Verständniss das gewünschte Ergebnis bringen. Statt dessen liefert er immer 1.
Wo ist mein Denkfehler?

xPath:
*----
preceding-sibling::node()/attribute::nr[last()]
*----

Bei den preciding-Achsen wird in umgekehrter Dokumentenordnung gezählt, d.h. du must nicht erst die ganze Achse auswählen und dann das letzte Glied der Knotenmenge wählen, sondern "rückwärts" vom Kontextknoten aus das erste:

preceding-sibling::node()[1]/@nr

Zur Illustration ein Beispiel, welches sich an deines anlehnt:

XML

<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<entries>
  <entry nr="1" />
  <entry nr="2" />
  <entry nr="3" />
  <entry nr="4" />
  <entry nr="5" />
</entries>

XSL

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="entries">
    <html>
      <head>
        <title>Test preceding-sibling</title>
      </head>
      <body>
        xsl:apply-templates/
      </body>
    </html>
  </xsl:template>

<xsl:template match="entry">
    <p>
      Nr. des aktuellen entrys:<xsl:value-of select="@nr"/><br/>
      Nr. des vorhergehenden entrys:<xsl:value-of select="preceding-sibling::node()[1]/@nr"/>
    </p>
  </xsl:template>

</xsl:stylesheet>

Die zweite Frage: Wer kann ein gutes Buch zum Thema xsl&Co empfehlen, in dem die Feinheiten etwas detailierter beschrieben werden?

Auf deutsch kann ich dieses (sowohl vom Preis als auch vom Inhalt her) empfehlen:
http://www.amazon.de/exec/obidos/ASIN/3826672097/qid=1023266486/sr=8-2/ref=sr_aps_prod_2_1/302-7143576-1257668

Auf englisch und ungeschlagen (und den höheren Preis wirklich Wert):
http://www.amazon.de/exec/obidos/ASIN/1861005067/qid=1023266580/sr=10-1/ref=sr_sp_bow/302-7143576-1257668

Ein dickeres Werk auf deutsch (Übersetzung), das ich nicht kenne ist auch:
http://www.amazon.de/exec/obidos/ASIN/3827262607/qid=1023266580/sr=2-2/ref=sr_2_3_2/302-7143576-1257668

Tja, und in selfhtml (wie du ja wahrscheinlich weisst), steht auch einiges.

Gruß
Franz

Gruß
Paul