Как установить базовый URI для скрипта XSLT? - PullRequest
1 голос
/ 26 августа 2010

Есть ли способ установить базовый URI в XSLT, чтобы он применялся ко всему документу, как в XQuery?

* 1003 Т.е. *

declare base-uri = "someuri";

Ответы [ 3 ]

1 голос
/ 26 августа 2010

Невозможно изменить базовый URI документа . Из XML Base W3C Spec .:

"Базовый URI объекта документа или внешняя сущность определяется RFC 3986 правил, а именно, что база URI - это URI, используемый для получения сущность документа или внешняя сущность. "

Базовый URI любого узла в документе (за исключением document-node()) можно установить с помощью xml:base (снова там )

"Атрибут xml: base может быть вставлены в документы XML, чтобы указать базовый URI, отличный от базового URI документ или внешнее юридическое лицо "

1 голос
/ 26 августа 2010

С http://www.w3.org/TR/xslt#document

Ссылка на URI может быть относительной.Базовый URI (см. [3.2 Базовый URI]) узла во втором наборе узлов аргумента, который является первым в порядке документа, используется в качестве базового URI для преобразования относительного URI в абсолютный URI.Если второй аргумент пропущен, то по умолчанию используется узел в таблице стилей, содержащий выражение, которое включает вызов функции документа.

И из http://www.w3.org/TR/xslt#base-uri

У каждого узла также есть связанный URI, называемый его базовым URI, который используется для разрешения значений атрибутов, которые представляют относительные URI в абсолютные URI.Если элемент или инструкция обработки встречаются во внешнем объекте, базовый URI этого элемента или инструкции обработки является URI внешнего объекта;в противном случае базовый URI является базовым URI документа.Базовый URI узла документа - это URI объекта документа.Базовый URI для текстового узла, узла комментария, узла атрибута или узла пространства имен является базовым URI родителя узла.

Итак, это:

<xsl:copy-of select="document('external.xml')" xml:base="http://example.org">

Должен быть решен как

<xsl:copy-of select="document('http://example.org/external.xml')">
0 голосов
/ 26 августа 2010

Я думаю, вам нужен атрибут xml:base в корневом узле документа.

См. http://www.w3.org/TR/xmlbase/, чтобы подтвердить, что это будет делать то, что вы хотите.

...