有没有办法在XSLT中设置基本URI,因此它适用于XQuery中的整个文档?
即
declare base-uri = "someuri";
答案 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/以确认这样做符合您的要求。