用于XSLT的XPath开头的通配符(超过多篇文章)

时间:2016-02-19 11:58:12

标签: xslt xpath

我有一个工作场景,但不知道为什么特定的XPath正在运行。我从数据库中迭代了三篇文章,它们是TEI XML。对于所有这些,我需要在特定文章的末尾添加尾注(在本例中为第三篇)。

<xsl:for-each select="//tei:text">
    <xsl:apply-templates select="tei:body"/>
    <xsl:apply-templates select="*//tei:note"/>
</xsl:for-each>

如果我只使用//tei:note,则第三篇文章中的注释将出现在所有文章中。如果我使用*//tei:note,它会按预期工作。我是否将笔记固定在一些上下文中?

1 个答案:

答案 0 :(得分:1)

//tei:note返回当前XML文档中的所有note元素,忽略context元素。通常,您在开头放置一个点(.)以使其相对于上下文元素。

关于您的工作XPath,基本上*从当前上下文元素获取任何名称的直接子元素。所以,是的,你可以说你正在'锚定'后续的XPath,//tei:note,通过说*//tei:note来指导当前contex元素的子节点。