Subject: Re: [xsl] filtering From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Mon, 1 Nov 2004 06:51:35 -0800 (PST) |
Here is a generic solution I wrote! A downside though; it relies on node-set function.. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> <xsl:output method="xml" indent="yes" encoding="UTF-8"/> <xsl:template match="/root"> <root> <xsl:variable name="rtf"> <xsl:for-each select="row"> <xsl:variable name="curr_row" select="."/> <xsl:variable name="x"> <xsl:for-each select="column"> <xsl:if test="position() = /root/header/*"> <xsl:if test="normalize-space(.) = ''"> 1 </xsl:if> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:if test="not(contains($x, '1'))"> <success> <xsl:for-each select="/root/header/*"> <xsl:element name="{name()}"> <xsl:value-of select="$curr_row/column[position() = current()]"/> </xsl:element> </xsl:for-each> </success> </xsl:if> </xsl:for-each> </xsl:variable> <flow> <total_in><xsl:value-of select="count(row)" /></total_in> <total_out><xsl:value-of select="count(row) - count(msxsl:node-set($rtf)/*)" /></total_out> </flow> <xsl:copy-of select="msxsl:node-set($rtf)/*"/> </root> </xsl:template> </xsl:stylesheet> Regards, Mukul --- Daniel Heskia <daniel@xxxxxxxxx> wrote: > Hi. > I am trying to filter out data sets that do not have > any data in the column > numbers specified in "header" of the xml. > > The header specifies that columns 1, 2, 3 and 7 are > crucial in this > particular instance and must not be empty. The > values differ from time to > time (I cannot hardcode the numbers in the xsl), but > the element names in > "header" (AAA, BBB etc.) are static for this type of > data). > > I need to test if the column numbers specified in > the header are non-empty > for each each row. I have tried to assign the values > of the header data to > variables and do something like: for each row, if > test not(column[$_aaa]='') > create the element. This, however, I cannot get to > work. > > Does anyone have a good idea? > > xml-input: > > <root> > <header> > <AAA>1</AAA> > <BBB>2</BBB> > <CCC>7</CCC> > <DDD>3</DDD> > </header> > <row> > <column>Dude Looks like a Lady</column> > <column>Local</column> > <column>28-10-2004</column> > <column>51,23</column> > <column /> > <column>80563</column> > <column>IE000000004</column> > </row> > <row> > <column>Never Ending Story</column> > <column>Test</column> > <column>21-02-2003</column> > <column>51,23</column> > <column /> > <column>80563</column> > <column /> > </row> > </root> > > xml-output: > Note 1 element filtered out because column 7 was > empty > > <root> > <flow> > <total_in>2</total_in> > <total_out>1</total_out> > </flow> > <success> > <AAA>Dude Looks Like a Lady</AAA> > <BBB>Local</BBB> > <CCC>IE000000004</CCC> > <DDD>28-10-2004</DDD> > </success> > </root> __________________________________ Do you Yahoo!? Take Yahoo! Mail with you! Get it on your mobile phone. http://mobile.yahoo.com/maildemo
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] filtering, Geert Josten | Thread | RE: [xsl] filtering, Daniel Heskia |
Re: [xsl] filtering, Jeni Tennison | Date | RE: [xsl] SVG Help, George James |
Month |