[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] preceding sibling


Subject: [xsl] preceding sibling
From: "Kaarle Kaila" <kaarle.kaila@xxxxxx>
Date: Sun, 18 Apr 2004 13:24:14 +0300

My XML file contains data like this:

<person sex="F">
<name>
<givenname>Lena</givenname>
<surname>Karamazina</surname>
</name>

<notices>
<notice tag="NAME">
<name>
<givenname>Lena</givenname>
<surname>Koski</surname>
</name>
</notice>

<notice tag="BIRT">
<date>1944</date>
<place>Tyrvdd</place>
</notice>
<notice>
<name>
<givenname>Lena</givenname>
<surname>Karamazina</surname>
</name>
</notice>

<notice tag="NAME">
<name>
<givenname>Lena-Lisa</givenname>
<surname>Karamazina</surname>
</name>
</notice>
</notices>
</person>
--------------------------------
I want to print the names after each other but if teh givenname is same as
previous one then I want to print only the surname.

The lower part of this xsl section is OK to compare the name in the person
but how should I compare with the givenname of the previous sibling in
notice element with tag="NAME".

Any advice would be appreciated. I am having some difficulties in reading
the XSLT book Expressions chapter I guess.



<xsl:template match="givenname">


<xsl:choose>
<xsl:when test="../../../notice::preceding-sibling[@tag='NAME']=.">
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</xsl:when>

<xsl:when test="ancestor::person/name/givenname=.">
</xsl:when>
<xsl:otherwise>
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

------------------
regards
Kaarle Kaila
--
Kaarle Kaila
email: kaarle dot kaila at iki dot fi
www.iki.fi/kaila


Current Thread
Keywords