XPath - 如何分别为每个结果运行CONCAT?

时间:2014-06-03 10:40:30

标签: xpath

我正在使用XPATH 1.0并且有一些看起来像这样的XML:

<item>
    <images>
        <image value="/img/someimage1.png">some title1</image>
        <image value="/img/someimage2.png">some title2</image>
        <image value="/img/someimage3.png">some title3</image>
        <image value="/img/someimage4.png">some title4</image>
    </images>
</item>

问题是,我需要连接这些图像的基本URL和@value以获得完整的可下载URL。例如,在// item:

的上下文中
concat("http://someurl.com", /images/image/@value)

然而,这种作品只会返回第一张图像。不是全部四个(阵列)。有没有办法按照这个方法做点什么?

/images/image/concat("http://someurl.com", @value)

在其他xpath版本中,我认为string-join会起作用吗?虽然不确定,因为我们使用concat。无论哪种方式,这可能在xpath 1?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

您的表达式/images/image/concat("http://someurl.com", @value)是XPath 2.0。使用纯XPath 1.0无法构造相同的内容,您需要在images/image元素上使用宿主语言进行迭代,然后在每个图像上使用XPath 1.0来计算concat("http://someurl.com", @value),然后使用宿主语言你需要构建一个字符串数组或根据需要连接它们。