<?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
This is not your stated requirement, but maybe the real one:
<categories>
<category><genre count="2">Autobiography</genre></category>
<category><genre count="1">Music</genre></category>
</categories>
Produced like this:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="books">
<categories>
<xsl:apply-templates/>
</categories>
</xsl:template>
<xsl:template match="books/category">
<xsl:copy>
<xsl:apply-templates select="genre"/>
</xsl:copy>
</xsl:template>
<xsl:template match="books/category/genre">
<genre count="{ count(../book) }">
<xsl:apply-templates/>
</genre>
</xsl:template>
</xsl:stylesheet>
But I'd probably rethink your input data structure.
--
Michael Ludwig
--~------------------------------------------------------------------
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>
--~--