1

我有一个与普通 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>

并希望解决“父”里程碑结构(即milestone@xml:id='m1')不<node>使用 XPath 的问题。

每个都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 来做到这一点。

有什么建议么?

4

1 回答 1

0

$me用替换变量current()

于 2013-06-18T09:34:02.483 回答