知道current()是元素还是属性

时间:2017-12-13 13:07:56

标签: xml xslt xpath

在XSLT表上工作,我最终得到一个带有current() xpath的模板。我想知道它是指一个属性还是一个元素。

实际上,我无法使用模板过滤器select="./@*"select="./*"来做我想做的事情,因为我希望一次性获取所有元素或属性,并根据需要应用不同的处理方式在类型上,在同一个模板中。

1 个答案:

答案 0 :(得分:4)

听起来好像你想为不同的节点设置不同的模板,例如: match="*match="@*"

如果你真的想在模板内部进行检查,那么你可以使用<xsl:if test="self::*">来测试它是否是一个元素节点,在XSLT 2中以及稍后也用<xsl:if test="self::attribute()">来测试它是否是一个属性。在XSLT / XPath 2及更高版本中,还有. instance of element() . instance of attribute()测试。