【发布时间】:2010-01-12 09:17:27
【问题描述】:
我正在编写一个 XSL 模板,该模板从许多二级来源中提取数据。辅助文档示例如下所示:
<toplevel xmlns:foo1="http://foo1">
<path xmlns="http://foo1">
<mytag>bar</mytag>
</path>
</toplevel>
在 XSL 中,我这样做:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foo1="http://foo1"
exclude-result-prefixes="foo1">
<xsl:variable name="secondary1" select="document('secondary1.xml')/toplevel"/>
<foo>
<xsl:value-of select="$secondary1//foo1:path/foo1:mytag"/>
</foo>
</xsl:stylesheet>
由于有很多次要资源,每个资源都使用不同的命名空间,给每个标签添加前缀很乏味,而且这么多重复也不是正确的做法。有没有办法使用 document() 使得导入的节点集的命名空间被剥离(或以另一种方式达到相同的效果)?
【问题讨论】:
-
我假设您打算在第一个文档中包含默认命名空间声明: xmlns="http:// foo1" 现在的方式是,元素不在命名空间中。 (对不起,命名空间 URI 中的多余空间;我不知道如何防止 SO 将其呈现为“foo1”链接。)
-
抱歉,是的,我就是这个意思。我已经相应地编辑了问题。
标签: xslt namespaces document strip