2010-08-25 2 views

ответ

1

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

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

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

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

0

Я думаю, что вы хотите это атрибут на корневой узел документа xml:base.

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

1

От 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')">