如何在saxon中使用directorycollection

628mspwn  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(240)

尝试在saxon中创建目录集合。如何将xml文件添加到此集合并对其运行xquery。

DirectoryCollection dirColl = 
                new DirectoryCollection(saxonConfig, "file:///C:/Users/sasolkar/Desktop/collectTest/", new File("file:///D:/table%20linkbase%20conformance%20suite%20original/table-linkbase-conf-2015-08-12/conf/tests/1000-rule-node/1070-rule-node-occ-rule/"), null);

        Resource r  = dirColl.makeResource(saxonConfig, "file:///D:/table%20linkbase%20conformance%20suite%20original/table-linkbase-conf-2015-08-12/conf/tests/1000-rule-node/1070-rule-node-occ-rule/occ-fragment-overridden-table.xml");

有谁能告诉我创建内存中xml文件集合以对其执行executexquery的过程吗。

6tdlim6h

6tdlim6h1#

这个 DirectoryCollection 类并不是这样使用的。当你使用 collection() 函数,saxon调用 CollectionFinder (默认为自己的) StandardCollectionFinder .
这个 StandardCollectionFinder 将查看传递给collection()函数的uri,看它是否与文件存储中的目录名对应;如果是这样,那么它将创建一个 DirectoryCollection 并将其传递回collection()函数。然后,集合的内容与目录中找到的文件相对应。如果你自己写 CollectionFinder ,然后你可以做同样的事情,如果你想,或者你可以创建一个不同的类型 ResourceCollection 如果你愿意的话。
在我看来,似乎您正在尝试创建一个不在同一目录中的文件集合,因此您希望使用某种类型的 ResourceCollection 而不是 DirectoryCollection . 我不认为 ResourceCollection 完全满足您的要求,因此您可以直接或通过扩展来实现自己的 AbstractResourceCollection .
但我想知道是否最好退一步,更清楚地了解你在做什么。完全不使用集合可能更容易。例如,您可以编写一个查询,该查询接受一个参数(外部变量),该参数是一系列uri,然后使用doc()函数获取;或者可以从外部解析文档,并提供一系列文档节点作为查询的参数。

相关问题