我有一个“里程碑”-markup与普通的XML交织:
<root>
<milestone type="opener" xml:id="m1" />
text
<milestone type="opener" xml:id="m2"/>
text
<milestone type="closer" ref="#m2"/>
text
<node>
text
</node>
...
<milestone type="closer" ref="#m1"/>
</root>
并希望使用XPath来解决“父” - 里程碑结构(即milestone@xml:id='m1'
)到<node>
。
每个milestone@xml:id
对应一个milestone@ref
作为开场白,更接近里程碑结构。
节点的“父” - 里程碑结构将通过与
类似的东西来识别node/preceding::milestone/concat('#',@xml:id) = node/following:milestone/@ref
此测试依赖于<node>
的上下文。它可以在XSLT中实现,类似于
<xsl:template match="node">
<xsl:variable name="me" select="."/>
<xsl:value-of select="./preceding::milestone[
./concat('#',@xml:id) =
$me/following::milestone/@ref
][1]/@xml:id" />
</xsl:template>
但我无法弄清楚如何使用纯XPath来做到这一点。
有什么建议吗?
答案 0 :(得分:0)
将变量$me
替换为current()
。