xslt多个文档中的和值

时间:2013-07-07 11:07:22

标签: xml xslt collections

我尝试使用document函数来处理多个.xml文档

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

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

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

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

(recursive =“yes”设置为集合以通过子文件夹)

但这似乎无法正常工作。我也找不到这个函数的好文档。

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

非常感谢您提前。

2 个答案:

答案 0 :(得分:0)

Saxon的9.5 collection函数的文档是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.xmlfile2.xml需要包含您想要求和的数值的element元素。

答案 1 :(得分:0)

是的,文档函数将接受多个URI,您可以利用它来汇总多个文档 - 即使在XSLT 1.0中也是如此。虽然在XSLT 1.0中,问题是多个URI必须作为节点集中节点的值存在,但它们不能动态计算。您需要更清楚地计算文档的URI以及是否能够利用XSLT 2.0。