Subject: Re: [xsl] Xslt transform & grouping, Using the Muenchian Method? From: "row.filter" <row.filter@xxxxxxxxx> Date: Sun, 10 Oct 2004 20:43:22 +0200 |
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]
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Xslt transform & grouping, M. David Peterson | Thread | Re: [xsl] Xslt transform & grouping, Anton Triest |
RE: [xsl] re-ordering nodes/partial, Kevin Bird | Date | [xsl] xsl:sequence produces error I, Kenneth Stephen |
Month |