我尝试使用document函数来处理多个.xml文档
sum(document(/folder/folders/*)//element)
文件夹有不同的名称,所以这条路径必须是动态的(我在实际的.xsl中使用*),但文档功能不适用于具有不同名称的多个文件夹,是吗?
由于这不起作用,我一直在寻找另一种解决方案,偶然发现了可以与撒克逊人一起使用的收集功能。
<value-of select="sum((collection('/folder/folders?select=*.xml;recurse=yes')//element)"
(recursive =“yes”设置为集合以通过子文件夹)
但这似乎无法正常工作。我也找不到这个函数的好文档。
是否有关于该功能的良好文档,或者您可以向我提供任何帮助吗?
非常感谢您提前。
答案 0 :(得分:0)
Saxon的9.5 collection
函数的文档是http://www.saxonica.com/documentation/html/sourcedocs/collections.html和http://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.xml
和file2.xml
需要包含您想要求和的数值的element
元素。
答案 1 :(得分:0)
是的,文档函数将接受多个URI,您可以利用它来汇总多个文档 - 即使在XSLT 1.0中也是如此。虽然在XSLT 1.0中,问题是多个URI必须作为节点集中节点的值存在,但它们不能动态计算。您需要更清楚地计算文档的URI以及是否能够利用XSLT 2.0。