【发布时间】:2021-05-26 14:40:07
【问题描述】:
我想测试一下属性的名字是否包含'description'(不管是description1、2还是3,只要名字里有description)然后在for-each循环中使用这个.如果没有,我不想显示该元素。所以我有一个如下的 XML 结构:
<item>
<name>Test xslt</name>
<code>XSLT</code>
<description>
<description1>1x stay</description1>
<description2>1x breakfast</description2>
<description3>1x diner</description3>
<description4>1x free late check-out</description1>
<address>New York 1234AZ</address>
</description>
</item>
然后我的 XSLT 将是:
<xsl:for-each select="description">
<xsl:if test=""> (test here if name cointains description)
<p><xsl:value-of select="." /></p>
</xsl:if>
</xsl:for-each>
现在它还显示了数组中的元素。有谁知道如何测试元素名称是否包含特定文本然后只显示这些?提前致谢!
编辑:
已经修复了编辑。
【问题讨论】:
-
在您的示例中,最好使用
starts-with(name(), 'description')而不是在contains()上浪费CPU 周期。 -
重新编辑:请发布minimal reproducible example,而不是断章取义的代码sn-ps。