XSLT:当测试具有特定名称的子节点的条件时

Sur*_*ran 2 xml xslt

如何在 XSLT 中编写一个测试条件,表示“如果当前节点的子节点的任何子节点具有 local-name() = 'abc'”?

例如,如果当前节点test内部有一个名为 的节点,并且test 可能包含一个名为abc

我尝试写作,test="local-name(test/child::*) = 'abc'"但显然没有成功。

提前谢谢!

Ian*_*rts 5

local-name(test/*)将仅检查(first) 的第一个子元素的名称test,如果您想检查全部,则需要使用谓词:

<xsl:when test="test/*[local-name() = 'abc']">
Run Code Online (Sandbox Code Playgroud)

但更简单

<xsl:when test="test/abc">
Run Code Online (Sandbox Code Playgroud)

如果您不需要考虑未知名称空间的可能性,那么这可能就足够了。