XSLT选择第一场比赛

时间:2014-11-18 12:24:32

标签: xml xslt saxon

我有一个结构为的xml:

<a>
  <b>
    <c>abc</c>
  </b>
  <b>
    <c>efg</c>
  </b>
  <b>
    <c>efg</c>
    <d>1-123456789</d>
    <d>2-123456789</d>
  </b>
  <b>
    <d>1-123400000</d>
    <d>2-123400000</d>
    <d>3-123400000</d>
  </b>
</a>

如何选择第一次出现的d? a/b/d[1]

2 个答案:

答案 0 :(得分:2)

您可以按如下方式选择d的第一个匹配项:

如果您想覆盖d以上的不同祖先结构:

(//d)[1]

如果您知道d上方的祖先结构已修复:

/a/b[3]/d[1]

答案 1 :(得分:2)

你的问题并不完全清楚。在以下示例中:

<a>
  <b>
    <c>c1</c>
  </b>
  <b>
    <c>c2</c>
  </b>
  <b>
    <c>c3</c>
    <d>d1</d>
    <d>d2</d>
  </b>
  <b>
    <d>d3</d>
    <d>d4</d>
    <d>d5</d>
  </b>
</a>

指令(从根节点/的上下文给出):

<xsl:copy-of select="a/b/d[1]"/>

返回:

<d>d1</d>
<d>d3</d>

,同时:

<xsl:copy-of select="(a/b/d)[1]"/>

将返回:

<d>d1</d>