Есть ли способ установить базовый URI в XSLT, чтобы он применялся для всего документа, как в XQuery?Как установить базовый URI для скрипта XSLT?
I.e.
declare base-uri = "someuri";
Есть ли способ установить базовый URI в XSLT, чтобы он применялся для всего документа, как в XQuery?Как установить базовый URI для скрипта XSLT?
I.e.
declare base-uri = "someuri";
Невозможно изменить базовый URI документа. Из XML Base W3C Spec:.
«Базовый URI из объекта документа или внешний объект определяется RFC 3986 правил, а именно, что в базе URI является URI, используемый для получения документа сущности или внешнего объекта ».
Базовый URI любого узла в документе (за исключением document-node()
) может быть установлен с помощью xml:base
(опять-таки there)
«Атрибут XML: база может быть , вставленный в документы XML, чтобы указать базовый URI , отличный от базового URI документа или внешнего объекта «
Я думаю, что вы хотите это атрибут на корневой узел документа xml:base
.
См. http://www.w3.org/TR/xmlbase/, чтобы подтвердить это сделает то, что вы хотите.
От http://www.w3.org/TR/xslt#document
Ссылка URI может быть относительным. Базовый URI (см. [3.2 Base 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')">