Получить имя файла с помощью xsl

Как получить имя файла с помощью xsl 1.0?

Я пробовал

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

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

 base-uri()

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

  base-uri(document(''))