(Q12) Invert the structure of the input document so that, instead of each book element containing a list of authors, each
distinct author element contains a list of book-titles.
<author_list>
FOR $a IN distinct(document("bib.xml")//author)
RETURN
<author>
<name> $a/text() </name>,
FOR $b IN document("bib.xml")//book[author = $a]
RETURN $b/title
</author>
</author_list>
XSLT equivalent to (Q12)
<author_list xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:for-each select="document('bib.xml')//author[not(.=preceding::author)]">
<author>
<name><xsl:value-of select="."/></name>
<xsl:for-each select="document('bib.xml')//book[author=current()]">
<xsl:copy-of select="title"/>
</xsl:for-each>
</author>
</xsl:for-each>
</author_list>
|