I've got a stylesheet that merges XML-files specified in the input
document. Its pretty short so I'll just post the whole thing here:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1"
indent="yes"/>
<xsl:variable name="docs" select="/*/doc"/>
<xsl:template match="mergeDocs">
<xsl:apply-templates select="doc[1]"/>
</xsl:template>
<xsl:template match="doc">
<xsl:variable name="path" select="@path"/>
<xsl:for-each select="document($path)/*">
<xsl:sort select=".//@page[1]"/>
<xsl:copy>
<article>
<xsl:copy-of select="@* | *"/>
</article>
<xsl:for-each select="$docs[position() > 1]">
<article>
<xsl:copy-of
select="document(@path)/*/*"/>
</article>
</xsl:for-each>
</xsl:copy>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
The input file can look like this:
<mergeDocs>
<doc path="doc1.xml"/>
<doc path="doc2.xml"/>
<doc path="doc3.xml"/>
</mergeDocs>
As you might figure out from the stylesheet, each of these XML-files
contains an article. There are no metadata available about the
ordering of these articles besides that they usually (not all do, so
"usually") contain a pagebreak tag like this one:
<pagebreak page="36"/>
Lets assume that these pagebreaks can occur at any place within the
article. In the stylesheet above I've tried to sort the articles like
this:
<xsl:sort select=".//@page[1]"/>
In my head this XPath expression reads "in the current article -> go
through all of the descendants -> select all of their attributes ->
pick out the page attributes -> pick the first one".
However, when run; nothing is sorted - as if the xsl:sort wasn't there
at all. I suspect that maybe it searches through the entire document
each time so that all articles are sorted as "page 1"? What am I doing
wrong here...
Regards
Jostein
--~------------------------------------------------------------------
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>
--~--