XSL, получите текущий рабочий каталог - PullRequest
4 голосов
/ 12 октября 2010

Я ищу конкретный пример таблицы стилей XSL, в которой текущий рабочий каталог хранится в переменной.

Мне это нужно, потому что в моей ситуации мне нужно импортировать определенные таблицы стилей библиотеки, используя относительный путь.Зная путь, который выберет мой процессор в качестве текущего каталога, будет достаточно.

РЕДАКТИРОВАТЬ

Ничего конкретного поставщика, пожалуйста.

Ответы [ 2 ]

6 голосов
/ 12 октября 2010

В 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
2 голосов
/ 12 октября 2010

В мире XSL нет гарантии, что существует абсолютный текущий рабочий каталог или даже что концепция имеет смысл. Любой ответ на этот вопрос обязательно будет зависеть от поставщика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...