[xsl] Selecting nodes based on previous node values

Subject: [xsl] Selecting nodes based on previous node values
From: "peter verhaar" <peter.verhaar1@xxxxxxxxx>
Date: Thu, 11 Dec 2008 10:16:24 +0100
Hello,

I am trying some (for me) complex constructions, but I don;t get it working.

Assume the following XML snippet.

<demo>
    <library>
        <criteria><status  value="active"/></criteria>
        <books><book title="test"/></books>
    </library>
    <library>
        <criteria><status  value="notActive"/></criteria>
        <books><book title="this may not be visible"/></books>
    </library>
</demo>

I want to print all book titles in library with criteria status = "active".

I was thinking about something like this:

 <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:reporting="http://www.sophis.net/reporting";>
<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="demo/library/books[preceding::/criteria/status[@value='active']]">
    <xsl:for-each select="book">
         <xsl:value-of select="./@title"/>
    </xsl:for-each
</xsl:template>
 </xsl:stylesheet>

But I couldn't get it working. What did I wrong?

Thanks,

Peter

Current Thread