我在SO上浏览过很多例子,但我找不到我想要的东西。有许多示例匹配具有特定父级的元素。但是,我不想匹配特定的父母,我只想知道它是否有父母。
所以对于这里的xml:
<foo>
<bar/>
</foo>
<bar/>
使用以下XSLT:
<xsl:template match="bar">
<xsl:choose>
<xsl:when test="[test here]">
..do something..
</xsl:when>
</xsl:choose>
</xsl:template>
如何简单地测试<bar>
元素是否具有父元素或者没有元素?
谢谢!
答案 0 :(得分:2)
只需在父轴上使用通配符名称测试:test="parent::*"
答案 1 :(得分:2)
此输入:
<foo>
<bar>
<baz/>
</bar>
</foo>
到这个脚本:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="*">
<xsl:choose>
<xsl:when test="parent::*">Parent: </xsl:when>
<xsl:otherwise>No Parent: </xsl:otherwise>
</xsl:choose>
<xsl:value-of select="name()"/>
<xsl:text>
</xsl:text>
<xsl:apply-templates select="*"/>
</xsl:template>
</xsl:stylesheet>
产生此输出:
No Parent: foo
Parent: bar
Parent: baz
注意:您的示例输入文件格式不正确,不能作为XSLT转换的输入,因为它有两个根。