有没有办法在XPath中分配变量?

时间:2013-05-13 14:43:26

标签: xpath xpath-2.0

是否可以通过使用XPath来执行以下操作?我想在1.0中找到一种方法来实现这一点。我认为它不可能在1.0中。

实施例

<test>
  <title>title1</title>
  <title>title2</title>
  <title>title3</title>
  <creator>creator1</creator>
  <creator>creator2</creator>
</test>

我想要以下输出:

title1 creator1
title2 creator2
title3

我在想这可能更适合xquery,但我不确定,因为我从未使用过它。将xquery添加到我当前的应用程序以及为什么我要避免这样做会有很多工作。我提出的最接近工作的是使用

/test/title/fn:string-join( (text(), /test/creator/text()[position()]), ' ')

问题是我在这个例子中为所有人获得了两个创作者。我想知道是否有某种方法可以获得当前位置并为创建者设定位置?我知道如何在xslt中轻松完成此操作,但这对我来说不是一个选项。

1 个答案:

答案 0 :(得分:0)

这在XPath 1.0中是不可能的。在XQuery(1.0很好)和XPath 2.0中,你都可以这样做:

for $i in 1 to max((count(//title), count(//creator)))
return string-join((//title[$i], //creator[$i]), ' ')