1

有没有办法在 XSLT 中设置基本 URI,使其适用于整个文档,就像在 XQuery 中一样?

IE

declare base-uri = "someuri";
4

3 回答 3

1

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

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

文档中任何节点的基本 URI (除了document-node()可以使用xml:base(再次在那里)设置

“属性 xml:base 可以插入 XML 文档中以指定一个基本 URI,而不是文档或外部实体的基本 URI”

于 2010-08-26T04:13:45.040 回答
1

来自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')">
于 2010-08-26T14:16:17.840 回答
0

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

请参阅http://www.w3.org/TR/xmlbase/以确认这将满足您的需求。

于 2010-08-26T04:02:58.407 回答