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