如何设置XSLT脚本的基URI?

时间:2010-08-25 23:39:56

标签: xslt xslt-2.0

有没有办法在XSLT中设置基本URI,因此它适用于XQuery中的整个文档?

declare base-uri = "someuri";

3 个答案:

答案 0 :(得分:1)

无法更改文档的基本URI 。来自 XML Base W3C Spec

  

“文档实体的基本URI或   外部实体由...确定   RFC 3986规则,即基数   URI是用于检索的URI   文件实体或外部实体。“

文档中任何节点的基本URI(document-node()除外可以使用xml:base设置<再次<强> there

  

“属性xml:base可能是   插入XML文档中指定一个   除了基URI之外的基URI   文件或外部实体“

答案 1 :(得分:1)

来自http://www.w3.org/TR/xslt#document

  

URI引用可能是相对的。该   基本URI(参见[3.2基本URI])   第二个参数node-set中的节点   文档顺序中的第一个是   用作解析的基URI   相对URI到绝对URI。如果   然后省略第二个参数   它默认为中的节点   包含的样式表   包含调用的表达式   文件功能。

来自http://www.w3.org/TR/xslt#base-uri

  

每个节点也都有一个关联的URI   称为基础URI,用于   解析属性值   表示相对URI为绝对值   的URI。如果是元素或处理   指令发生在外部   entity,该元素的基URI   或处理指令是URI   外部实体;否则,   base URI是的基URI   文献。文档的基URI   node是文档的URI   实体。文本节点的基URI,   注释节点,属性节点或   namespace node是的基本URI   节点的父节点。

所以这个:

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

应该解决为

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

答案 2 :(得分:0)

我认为你想要的是文档根节点上的xml:base属性。

请参阅http://www.w3.org/TR/xmlbase/以确认这样做符合您的要求。