В XSLT 2.0 можно использовать стандартную функцию XPath 2.0 resol-uri () .
Обратите внимание, что относительные URI включенных / импортированных модулей таблицы стилей относятся к базовому URI включающего / импортирующего модуля таблицы стилей, а не из «рабочего каталога»! 1010 *
Вот часть описания этой функции из спецификации W3 F & O:
8,1 fn: resol-uri
fn: resol-uri ($ относительный как
xs: string?) как xs: anyURI?
fn: resol-uri ($ относительный как
xs: string ?, $ base как xs: string) как
хз: anyURI
Резюме: назначение этой функции
должен позволить относительный URI быть
разрешается по абсолютному URI.
Первая форма этой функции
разрешает $ относительное значение
собственности base-uri от
статический контекст. Если база-ури
свойство не инициализируется в
статический контекст возникает ошибка
[ERR: FONS0005].
Вот очень простой пример :
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:sequence select=
"resolve-uri('resolve-uri-example2.xsl')"/>
</xsl:template>
</xsl:stylesheet>
когда это преобразование применяется к любому XML-документу (не используется), результат будет :
file:///c:/tests/resolve-uri-example2.xsl
Это правильный результат, потому что наш основной модуль таблицы стилей сохраняется как:
c:/tests/resolve-uri-example2.xsl