Получить имя файла с помощью 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(''))