|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Xslt transform & grouping, Using the Muenchian Me
I get this exception:
Exception Details: System.Xml.Xsl.XsltException: 'local-name()' is an
invalid QName.
On Sun, 10 Oct 2004 11:27:20 -0700, M. David Peterson
<m.david@xxxxxxxxxx> wrote:
> I'm not sure if using keys is necessary as it seems they are already grouped
> using the document order and hierarchy. Either way, to ensure that they are
> processed numerically if and only if the @filter attribute equals food or has no
> value and then further more only include Article elements within each Document
> structure that contain the @filter equal to food then your problem is pretty
> simple...
>
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
> <xsl:template match="/">
> <xsl:apply-templates select="Documents/Document[@filter = 'food' or @filter =
> '']">
> <xsl:sort select="@title"/>
> </xsl:apply-templates>
> </xsl:template>
> <xsl:template match="Document">
> <xsl:copy>
> <xsl:element name="local-name()">
> <xsl:copy-of select="@* | Article[@filter = 'food']"/>
> </xsl:element>
> </xsl:copy>
> </xsl:template>
> </xsl:stylesheet>
>
> Produces this using your sample XML input:
>
> <Document title="1" chapter="1" href="file1.xml" filter="food">
> <Article title="1.1" info="sub" filter="food"/>
> <Article title="1.2" info="main" filter="food"/>
> </Document>
> <Document title="3" chapter="3" href="file2.xml" filter=""/>
>
> If this is not the output you want maybe an example of what you want the output
> to look like will help us help you further.
>
> Best of luck!
>
> <M:D/>
>
>
>
>
> row.filter wrote:
> > Hi,
> >
> > I would like to group following, by attribute Title, and then filter
> > by attribute filter="food". Title-attribute exists in both Document
> > and Article elements.
> >
> > That is, groups should be created based on attribute Title in Document
> > element, and filtered by attribute e.g. filter="food".
> >
> > Currently I am using grouping and filtering in following stylesheet.
> >
> > All other elements, where filter != "food" should be ignored.
> > Filter is global parameter.
> >
> > Thank you!
> >
> >
> > Some help on the way:
> >
> > XSL:
> >
> > <?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="UTF-8" indent="yes"/>
> >
> > <xsl:key name="by-info" match="Article" use="@info"/>
> >
> > <xsl:param name="filter" select="'food'"/>
> >
> > <xsl:template match="Documents">
> > <Documents>
> > <xsl:for-each select="Document[@filter='' or
> > @filter=$filter]/Article[generate-id()=generate-id(key('by-info',@info)[@filter=$filter])]">
> > <Document name="{@info}">
> > <xsl:copy-of select="key('by-info',@info)[@filter=$filter]"/>
> > </Document>
> > </xsl:for-each>
> > </Documents>
> > </xsl:template>
> >
> > </xsl:stylesheet>
> >
> >
> > XML:
> >
> > <Documents>
> > <Document title="1" chapter="1" href="file1.xml" filter="food">
> > <Article title="1.1" info="sub" filter="food"/>
> > <Article title="1.2" info="main" filter="food"/>
> > </Document>
> > <Document title="2" chapter="2" href="file2.xml" filter="drink">
> > <Article title="2.1" info="sub" filter="drink"/>
> > <Article title="2.2" info="main" filter="food"/>
> > </Document>
> > <Document title="3" chapter="3" href="file2.xml" filter="">
> > <Article title="3.1" info="sub" filter="drink"/>
> > <Article title="3.2" info="child" filter=""/>
> > </Document>
> > </Documents>
>
>
--
[row.filter]
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








