This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
trouble with contains()
- To: xsl-list at lists dot mulberrytech dot com
- Subject: [xsl] trouble with contains()
- From: Charles Yates <cyates at lanelib dot stanford dot edu>
- Date: Tue, 04 Sep 2001 11:30:32 -0700
- Reply-To: xsl-list at lists dot mulberrytech dot com
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