Как использовать DirectoryCollection в саксонской - PullRequest
0 голосов
/ 07 декабря 2018

Попытка создания коллекции каталогов в саксонии.Как мне добавить 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-файлов в памяти для выполнения над ними запросов.

1 Ответ

0 голосов
/ 07 декабря 2018

Класс DirectoryCollection на самом деле не предназначен для такого использования.Когда вы используете функцию collection(), Saxon вызывает зарегистрированный CollectionFinder (по умолчанию - свой собственный StandardCollectionFinder.

. StandardCollectionFinder будет проверять URI, переданный в функцию collection (), чтобы увидеть,оно соответствует имени каталога в вашем хранилище файлов, если это так, тогда он создаст DirectoryCollection и передаст его обратно функции collection (). Затем содержимое коллекции соответствует файлам, найденным в каталоге.Если вы напишите свой собственный CollectionFinder, тогда вы можете сделать то же самое, если хотите, или вы можете создать другой тип ResourceCollection, если хотите.

Мне кажется, что вы пытаетесьсоздать коллекцию файлов, которые НЕ находятся в одном каталоге, поэтому вы хотите использовать какой-то ResourceCollection, отличный от DirectoryCollection. Я не думаю, что какая-либо из стандартных реализаций ResourceCollection вполне делает то, чтовы просите, чтобы вы могли реализовать свои собственные, напрямую или с помощью расширения AbstractResourceCollection.

Но мне интересно, лучше ли сделать шаг назад и получить более четкую картину, котораяна тебя пытаются сделать.Может быть проще вообще не использовать коллекции.Например, вы можете написать запрос, который принимает параметр (внешнюю переменную), который представляет собой последовательность URI, которую вы затем выбираете с помощью функции doc ();или вы можете выполнить внешний анализ документов и предоставить последовательность узлов документов в качестве параметра для вашего запроса.

...