【发布时间】:2014-12-05 14:34:39
【问题描述】:
我已经搜索过,但可能只是因为我不知道要搜索什么而错过了一些明显的东西。而且我发现很难将我的问题解释为一个简单的问题,所以让我解释一下:我正在使用以下代码(XSLT 1.0 和 XPath)来检查该节点的父节点是否属于最后一个祖父节点:
<xsl:when test="count(parent::*/preceding-sibling::*)+1 = count(parent::*/parent::*/*)">
它完全符合我的要求。不过,我希望以一种或另一种方式使其更通用,以使其与更多父节点一起使用。我可以添加另一个模板匹配并添加另一个测试:
<xsl:when test ="count(parent::*/parent::*/preceding-sibling::*)+1 = count(parent::*/parent::*/*)">
有没有办法在递归模板循环中添加“parent::*/”而不是创建很多特定的模板匹配?还是我应该完全编写出更好的 XPath 代码?
请注意:我想检查每个级别的父节点。父母是父母中的最后一位吗,祖父母是祖父母中的最后一位,等等。
为了清楚起见,我这样使用它:
<xsl:choose>
<xsl:when test="count(parent::*/preceding-sibling::*)+1 = count(parent::*/parent::*/*)">
<!-- show image A -->
</xsl:when>
<xsl:otherwise>
<!-- show image B -->
</xsl:otherwise>
</xsl:choose>
【问题讨论】:
-
使用祖先:: 轴而不是父:: ?
-
@Mike 我去查一下,乍一看好像是我想要的。
-
嗯,不,这不是我真正想要的,因为我想知道每个祖先是否是最后一个,而不是所有祖先。