xsl-list
[Top] [All Lists]

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

2010-09-22 16:09:10
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


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--