如何匹配XSL中包含字符串的属性?

时间:2015-05-27 20:36:33

标签: xslt xpath

this post中,用户希望匹配在其中一个属性中具有某个子字符串的节点

我想匹配包含某个子字符串(不是节点)的属性,但是却无法提供可以做到这一点的语法。

我的最终目标是在属性中找到特定的子字符串,然后用不同的字符串替换这些子字符串。

我已尝试使用@[contains(.,"substring")],但这不起作用。

我正在使用XSLT 3.0

2 个答案:

答案 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