首页 > 解决方案 > XSLT 2.0 / XPATH 测试特定位置的父元素

问题描述

在 XSLT 2.0 和 XPATH 中<xsl:template match="lb">,我正在测试各种不同的case情况,其中每种情况都会产生不同的 HTML 输出(使用xsl:choose/xsl:when)。

我想测试以下情况,元素lb内任何排序的第一个节点在哪里:seg

<seg><lb break="n"/>text</seg>

相比之下,这些测试会失败:

<seg>text<lb break="n"/>text</seg>

<seg><foo/><lb break="n"/>text</seg>

我尝试过组合parentposition()但测试不正确。

非常感谢。

标签: xsltxpathxslt-2.0

解决方案


有一个模板匹配lb然后xsl:choose/when在我看来可以通过精确的匹配模式更优雅和紧凑地解决,例如xsl:template match="seg/node()[1][self::lb]"将匹配seg父节点的任何第一个子节点,其中子节点是一个lb元素。对于其他条件,您将设置具有不同匹配模式的不同模板。

但是如果需要,您可以使用. is parent::seg/node()[1]insidexsl:template match="lb"以相反的方式编写它。


推荐阅读