[xsl] XPath 1.0 Question: Can two sibling nodes each select their parent node to yield two nodes?

Subject: [xsl] XPath 1.0 Question: Can two sibling nodes each select their parent node to yield two nodes?
From: "Costello, Roger L." <costello@xxxxxxxxx>
Date: Wed, 22 Sep 2010 17:08:54 -0400
Hi Folks,

This is an XPath 1.0 question.

Consider this document:

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <category>
        <genre>Autobiography</genre>
        <book>
            <name>My Life and Times</name>
            <author>Paul McCartney</author>
        </book>
        <book>
            <name>The Beatles</name>
            <author>Paul McCartney</author>
        </book>
    </category>
    <category>
        <genre>Music</genre>
        <book>
            <name>Eight Days a Week</name>
            <author>Paul McCartney</author>
        </book>
    </category>
</books>

I would like to select the value of <genre> of each <book> with <author> equal
to 'Paul McCartney'. Thus, I want the XPath to yield:

    Autobiography
    Autobiography
    Music

I thought that either of these XPath expressions would do the job:

    //book[author='Paul McCartney']/../genre

    //book[author='Paul McCartney']/preceding-sibling::genre

However, both result in this:

    Autobiography
    Music

What XPath 1.0 expression will produce the desired result?

/Roger

Current Thread