|
Subject: Re: [xsl] How to sort? From: Mike G <row.filter@xxxxxxxxx> Date: Thu, 14 Oct 2004 11:17:44 +0200 |
ok.
If this is the XML with previously missing root-elements
<Documents>
<Document title="1" chapter="i" href="file1.xml" filter="food">
<Article title="1.1" info="sub" filter="drink" state="1"/>
<Article title="1.2" info="main" filter="food" state="3"/>
<Article title="1.3" info="main" filter="drink" state="2"/>
</Document>
<Document title="2" chapter="ii" href="file2.xml" filter="drink">
<Article title="2.1" info="main" filter="drink" state="1"/>
<Article title="2.1" info="sub" filter="drink" state="3"/>
<Article title="2.2" info="main" filter="food" state="2"/>
</Document>
<Document title="3" chapter="1" href="file2.xml" filter="">
<Article title="3.1" info="sub" filter="drink" state=""/>
<Article title="3.2" info="child" filter="" state="8"/>
</Document>
<Document title="4" chapter="2" href="file2.xml" filter="">
<Article title="3.1" info="sub" filter="drink" state=""/>
<Article title="3.2" info="main" filter="food" state="1"/>
</Document>
</Documents>
could this be correct XSLT for my output. Could you check it? It runs
very slow for some reason.
<xsl:template match="/">
<Documents>
<xsl:apply-templates select="Documents/Document[Article/@info = 'main']"/>
</Documents>
</xsl:template>
<xsl:template match="Document">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:for-each select="Article[@info = 'main']">
<xsl:sort select="@state" data-type="number"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
thanx.
Mike
On Thu, 14 Oct 2004 11:45:38 +0300, jarno.elovirta@xxxxxxxxx
<jarno.elovirta@xxxxxxxxx> wrote:
> 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[@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)
>
>
--
[row.filter]
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] How to sort?, Jarno.Elovirta | Thread | RE: [xsl] How to sort?, Jarno.Elovirta |
| RE: [xsl] How to sort?, Jarno.Elovirta | Date | RE: [xsl] How to sort?, Jarno.Elovirta |
| Month |