1

我尝试使用文档功能来处理多个 .xml 文档

sum(document(/folder/folders/*)//element)

文件夹有不同的名称,所以这个路径必须是动态的(我在实际的 .xsl 中使用 *),但是文档功能不适用于具有不同名称的多个文件夹,是吗?

由于这不起作用,我正在寻找另一种解决方案并偶然发现了可以与撒克逊一起使用的收集功能。

<value-of select="sum((collection('/folder/folders?select=*.xml;recurse=yes')//element)"

(recursive="yes" 设置为收集通过子文件夹)

但这似乎无法正常工作。我也找不到该功能的良好文档。

是否有关于该功能的良好文档,或者您可以为我提供任何帮助吗?

非常感谢您提前。

4

2 回答 2

0

Saxon 的 9.5collection函数的文档是http://www.saxonica.com/documentation/html/sourcedocs/collections.htmlhttp://www.saxonica.com/documentation/index.html#!functions/fn/collection。您可能想尝试一个适合您使用的文件系统的完整文件 URL,例如collection('file:///C:/folder/folders?select=*.xml;recurse=yes'). 如果您仍然有问题,请准确说明您拥有的目录结构。

document功能不对 URL 进行操作,它需要节点,因此sum(document(/folder/folders/*)//element)您需要有一个输入文档才能工作

<folder>
  <folders>
    <foo>file1.xml</foo>
    <bar>file2.xml</bar>
  </folders>
</folder>

其中file1.xmland file2.xmlthen 需要包含element具有要求和的数值的元素。

于 2013-07-07T11:33:47.980 回答
0

是的,文档函数将接受多个 URI,您可以利用这一点对多个文档求和——即使在 XSLT 1.0 中也是如此。尽管在 XSLT 1.0 中的问题是多个 URI 必须作为节点集中的节点值存在,但它们不能动态计算。您需要更清楚地说明如何计算文档的 URI,以及是否能够利用 XSLT 2.0。

于 2013-07-07T17:33:25.483 回答