XSL - создание списка файлов из каталога в сети - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь вывести список файлов каталога с помощью xsl, используя функцию collection. Кажется, что он работает для обычного варианта использования (поиск в локальном каталоге), но не работает при поиске по пути в сети: например. \\ name_of_machine \ the \ path \ to \ folder

Ошибка журнала:

FODC0002: The file or directory
  file:/D:/the/current/location/of/the/executing/xsl/%5C%5Cname_of_machine2%5Cthe%5Cpath%5Cto%5Cfolder does not exist

И фрагмент из моего кода:

<xsl:variable name="docList" select="for $f in collection($dir) return lower-case($f)"/>

Итак, в основном , функция collection добавляет текущее местоположение файла XSL, который выполняет код, а затем экранирует все символы \ (backsla sh).

Как можно использовать функцию сбора для получение файлов по сети?

РЕДАКТИРОВАТЬ: я использую Saxon-HE 9.8.0-15

1 Ответ

1 голос
/ 09 июля 2020

Я думаю, вы можете использовать, например, <xsl:variable name="doc-list" select="uri-collection('file:////name_of_machine/the/path/to/folder?select=*.xml')"/>, чтобы получить список URI файлов в каталоге с помощью Saxon 9. Я думаю, что синтаксис URI для представления такого пути - file:////name_of_machine/the/path/to/folder.

Тест здесь на машине Windows 10 с использованием Saxon 9.8 получается

java -cp 'C:\Program Files\Saxonica\Saxon9.8HE\saxon9he.jar' net.sf.saxon.Query -t -qs:"uri-collection('file:////machine-name/Users/marti/SomeFolder/xml?select=*.xml')"
Saxon-HE 9.8.0.15J from Saxonica
Java version 1.8.0_252
Analyzing query from {uri-collection('file:////machine-name/Users/marti/SomeFolder/xml?select=*.xml')}
Analysis time: 194.6869 milliseconds
<?xml version="1.0" encoding="UTF-8"?>file:////machine-name/Users/marti/SomeFolder/xml/sample1.xml file:////machine-name/Us
ers/marti/SomeFolder/xml/sample2.xml
...