【发布时间】:2011-04-13 06:06:05
【问题描述】:
上下文:.NET Framework 3.5
我意识到如何使用 XSLT 执行单个 XML 转换,但没有找到任何关于链接 XML 转换的好示例。
输入: - XML 文档作为 XPathDocument。 - 多个 XSL 文件的文件路径。
预期输出: - 最好是 XPathDocument/IXPathNavigable,一一表示应用了所有转换的 XML。
示例场景:
输入xml:<doc></doc>
xsl-1:将<one /> 添加为 doc 元素的子元素的 .xsl。
xsl-2:将<two /> 添加为 doc 元素的子元素的 .xsl。
预期结果
<doc><one /><two /></doc>
目标
利用 XPathDocument/IXPathNavigable 或更好的向前特性。避免将整个文档加载到内存中。
【问题讨论】:
-
我认为你无法实现你的目标。 XPath 表达式(如
//somenode)将搜索整个文档树,因此需要加载整个文档。 -
如果事先不知道样式表的 URI,这不能用纯 XSLT 完成:您不能动态地包含或导入样式表。您可以使用 Dimitre 的 FXSL 中的模板参考。您也可以静态声明您的样式表导入链。否则,这个问题严格关注.net
-
如果要避免将整个文档加载到内存中,则不能使用 XSLT。 XSLT 转换不是只向前的——如果是,你就不能做像
<xsl:value-of select='count(//*)'/>这样的事情。 -
关于您的“预期输出... IXPathNavigable”,请参阅this question。