|
Subject: Re: [xsl] passing filtered tree to template From: Abel Braaksma <abel.online@xxxxxxxxx> Date: Mon, 06 Jun 2011 18:11:44 +0200 |
<xsl:template match="items">
<xsl:apply-templates select="item" />
</xsl:template><!-- called ONLY when property X is true -->
<xsl:template match="item[property='x']">
<myItem>
<xsl:value-of select="index"/>
</myItem>
</xsl:template><!-- called for all other situations (may leave empty if you don't want to process them) -->
<xsl:template match="item">
<otherItem>
<xsl:value-of select="index"/>
</otherItem>
</xsl:template>Hi I have the following problem: Given an xml like the following:
<test> <items> <item> <index>1</index> <property>x</property> </item> <item> <index>2</index> <property>y</property> </item> <item> <index>3</index> <property>x</property> </item> </items> </test>
and a stylesheet like:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="test"> <myTest> <xsl:variable name="xItems"> <xsl:copy-of select="items"/> </xsl:variable> <xsl:apply-templates select="items[item/property='y']"/><!-- wrong try! --> </myTest> </xsl:template>
<xsl:template match="items"> <xsl:for-each select="item"> <myItem> <xsl:value-of select="index"/> </myItem> </xsl:for-each> </xsl:template> </xsl:stylesheet>
I would like to pass only the items with property='x' to the items matching template. The first try as written above of course doesn't work, if there is an x item then the whole tree is passed, if there is none, nothing is passed. I do further processing in the items template, so I don't want to change it to match="item" or to apply the filter in the items template.
Any help is much appreciated!
thanks, kind regards
Stefan
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] passing filtered tree to temp, Stefan Hunziker | Thread | Re: [xsl] passing filtered tree to , Stefan Hunziker |
| [xsl] passing filtered tree to temp, Stefan Hunziker | Date | [xsl] Why is an empty xmlns="" adde, Alex Muir |
| Month |