在this post中,用户希望匹配在其中一个属性中具有某个子字符串的节点
我想匹配包含某个子字符串(不是节点)的属性,但是却无法提供可以做到这一点的语法。
我的最终目标是在属性中找到特定的子字符串,然后用不同的字符串替换这些子字符串。
我已尝试使用@[contains(.,"substring")]
,但这不起作用。
我正在使用XSLT 3.0
答案 0 :(得分:2)
您需要使用@*
:
@*[contains(.,"substring")]
@
是attribute::
轴的缩写。没有nodetest,您不能拥有轴说明符。 *
提供nodetest。
答案 1 :(得分:1)
你快到了。对于此输入XML:
<?xml version="1.0" encoding="utf-8"?>
<root>
<node attribute="ABC">XYZ</node>
</root>
XSLT代码如下所示:
<xsl:for-each select="//node">
<xsl:if test="contains(./@attribute, 'ABC')">
Yes - <xsl:value-of select="./@attribute"/>
</xsl:if>
</xsl:for-each>
输出是:
Yes - ABC