Turok:evil2001: Problem mit preceding::

Hallo,

ich komme irgendwie mit der XPath Achsenfunktion preceding nicht klar. Ich habe eine einfache XML-Datei, die folgendermaßen aussieht (Ausschnitt):

<namensliste>
<name>
<vorname>Ernst<vorname>
<nachname>Meier<nachname>
<strasse>Waldweg<strasse>
</name>
<name>
<vorname>Fritz<vorname>
<nachname>Müller<nachname>
<strasse>Wiesenweg<strasse>
</name>
</namensliste>

Die Templates sehen so aus (verkürzt):

<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates select="namensliste"/>
</fo:flow>

<xsl:template match="namensliste">
<xsl:apply-templates select="name"/>
</xsl:template>

<xsl:template match="name">
<fo:block color="red">
<xsl:value-of select="preceding::strasse/text()"/>
</fo:block>
fo:block
<xsl:apply-templates select="nachname"/>
<xsl:apply-templates select="vorname"/>
</fo:block>
</xsl:template>

Im Template "name" sollte nun immer das Element "strasse" aus dem vorhergehenden Knoten "name" ausgegeben werden. Das klappt aber nicht, ich erhalte immer das Element aus dem ersten Knoten "name" in der Datei, in diesem Falle also immer "Waldweg". Mit following klappt es, da kann ich immer auf den nachfolgenden Knoten zugreifen.

Was ist da falsch?

Herzlichen Dank
Mario

  1. Hallo,

    ich komme irgendwie mit der XPath Achsenfunktion preceding nicht klar.

    preseding arbeitet so http://de.selfhtml.org/xml/darstellung/anzeige/preceding.htm

    Im Template "name" sollte nun immer das Element "strasse" aus dem vorhergehenden Knoten "name" ausgegeben werden.

    <xsl:value-of select="preceding-sibling::name[1]/strasse"/>

    Grüße
    Thomas