Thomas J.S.: xpath und attribute

Beitrag lesen

hallo Josef,

jetzt hast du einen pfad der so geht: ehe/kinder/ehe/kinder
Solche Fehler habe ich leider oefter. Da es funktioniert faellt es mir auch schwer auf.

ne, es funktioniert nicht.

Im speciellen Fall kann ich sogar ausser "." alles moegliche hineinschreiben !?

nein, das ist auch dein meistvergekommener fehler, dass du statt "." (den du bist ja durch for-each bereits im gewünschten knoten) weitere pfade definierst.

bei ../../ komme ich doch in das <paar> element und wie ein Versuch bestaetigt hat wuerde ../../@farbe"/ ein attribut auswaehlen das sich im <paar> element befindet.

richtig, deshalb muss du wieder einen schritt nach unten gehen:
<xsl:value-of select="../../mann/@farbe"/>

Ihr habt in Eurem Buch ein paar schoene Achsenbilder und Knotentestbeispiele (leider nicht im praktischen Einsatz). Wenn
<xsl:value-of select="preceding-sibling::mann/@farbe"/> nicht stimmt dann habe ich es trotzdem noch nicht verstanden.

soory, ader wie es den anschein hat, hast du es vielleicht noch nicht ganz verstanden:

preceding-sibling wählt die vorangegangene elemte (geschwister) des aktuellen elements vom selben elternelement.

was du hier suchst ist eine kombination vom ancestor:: und preceding-sibling::

probiere es mal aus:
 <h1><xsl:value-of select="$vater" /><xsl:value-of select="ancestor::*[1]/preceding-sibling::*[1]/@farbe" /> (<xsl:value-of select="name(ancestor::*[1]/preceding-sibling::*[1])" />)</h1>

---wenn man weis wie man dem Browser mitteilt das dann z.B. farbe="spanisch-habsburg" die farbe #666 ist.

per xslt, etwa so:
 <xsl:variable name="farben" select="../../mann/@farbe" />
 <xsl:variable name="vater">background:#
 xsl:choose
  <xsl:when test="$farben='spanisch-habsburg'">666</xsl:when>
 <xsl:when test="$farben='lothringen'">ddd</xsl:when>
 xsl:otherwisefff</xsl:otherwise>
 </xsl:choose>
 </xsl:variable>

grüße
thomas

ps: deine xslt datei habe ich auf deine mail zugeschickt