Hi,
I want pick only Article elements where attribute info="main"
info-attribute is not located on the Document level, only on
Article level,
so when info="main" located it should be placed in the same
originating Document node
wheter info-atribute is located on Document level or not.
I need to order output XML by Chapter, chapter-attribute, on
Document-level. (i,ii,1,2 ... n)
Then I need to sort the output on Article level by state, ascending.
the output XML should look like this
<?xml version="1.0"?>
<Document title="1" chapter="i" href="file1.xml" filter="food">
<Article title="1.3" info="main" filter="drink" state="2"/>
<Article title="1.2" info="main" filter="food" state="3"/>
</Document>
<Document title="2" chapter="ii" href="file2.xml" filter="drink">
<Article title="2.1" info="main" filter="drink" state="1"/>
<Article title="2.2" info="main" filter="food" state="2"/>
</Document>
<Document title="4" chapter="2" href="file2.xml" filter="">
<Article title="3.2" info="main" filter="food" state="1"/>
</Document>
<xsl:template match="/">
<xsl:apply-templates select="Documents/Document[Article/@info = 'main']"/>
</xsl:template>
<xsl:template match="Document">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:for-each select="Article[(_at_)info = 'main']">
<xsl:sort select="@state" data-type="number"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
Note that your output is not well-formed XML and the stylesheet above will
recreate the output example.
Cheers,
Jarno - Seabound: Contact (Assemblage 23 remix)