我有一个工作场景,但不知道为什么特定的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
,它会按预期工作。我是否将笔记固定在一些上下文中?
答案 0 :(得分:1)
//tei:note
返回当前XML文档中的所有note
元素,忽略context元素。通常,您在开头放置一个点(.
)以使其相对于上下文元素。
关于您的工作XPath,基本上*
从当前上下文元素获取任何名称的直接子元素。所以,是的,你可以说你正在'锚定'后续的XPath,//tei:note
,通过说*//tei:note
来指导当前contex元素的子节点。