[Home] [By Thread] [By Date] [Recent Entries]
XML: <root> <element> <subelement>booga</subelement> <subelement>foobar</subelement> </element> <element> <subelement>more text</subelement> <subelement>even more text</subelement> </element> </root> desired output: A document with all the <elements> that have a particular substring in a <subelement>. What works:
<xsl:template match="/root">
<xsl:copy>
<xsl:for-each select="element[contains(subelement,'boo')]">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>Also works: <xsl:for-each select="element[subelement = 'foobar']"> What doesn't: <xsl:for-each select="element[contains(subelement,'foo')]"> Problem:
My XPath with contains() is only checking the first
<subelement> it encounters. I am getting around this
at the moment by doing a <xsl:for-each select="subelement">
and building a string variable with all of them and then
checking that with contains(). This is a pain though because
in my actual application the stylesheet is dynamically generated
and needs to be able to check a fairly complex document for
multiple different strings in different elements. It would
be great if I could do this with a single XPath expression.Thanks for any suggestions, Charles XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|

Cart



