Получить имя файла с помощью xsl - PullRequest
14 голосов
/ 24 февраля 2009

Как я могу получить имя файла, используя xsl 1.0?

Я пытался

<xsl:value-of select="base-uri()" />

но получил "Неустранимая ошибка! Не удалось найти функцию: base-uri"

Ответы [ 2 ]

33 голосов
/ 24 февраля 2009

base-uri() - это стандартная функция XPath 2.0 , поэтому при запуске XSLT 1.0 эта функция будет недоступна.

В XSLT 1.0 имя файла (чего?) Может быть передано в качестве параметра для преобразования.

Обратите внимание , что не всегда возможно создать имя файла для таблицы стилей или для документа XML - оба или оба могут находиться в памяти без связанного файла.

Из проблемы не ясно, какое имя файла нужно создать.

Вот как найти имена файлов в XPath 2.0 / XSLT 2.0 :

Имя файла текущего документа:

 base-uri()

Имя файла текущего модуля стилей:

  base-uri(document(''))
15 голосов
/ 24 февраля 2009

Нет такой функции XPath или расширения XSLT для функции XPath, чтобы сделать это в XSLT v1 / XPath v1.

Вполне возможно, что файла не будет, и даже если у механизма XSLT нет причин иметь это имя (рассмотрите возможность загрузки содержимого файла в буфер, анализа буфера в DOM и затем передачи ДОМ к процессору XSLT).

Вам нужно будет передать имя файла в процессор, чтобы оно было доступно в качестве параметра в преобразовании.

...