使用 xsl 将单个 XML 文档转换为多个文档
给定以下 xml 文档:
<XML>
<doc1>
</doc1>
<doc2>
</doc2>
<XML>
我希望使用 xsl 转换来生成 2 个 XML 文档:
<XML>
<doc1>
</doc1>
<XML>
这可能吗
<XML>
</doc2>
<doc2>
<XML>
?
Given the following xml document:
<XML>
<doc1>
</doc1>
<doc2>
</doc2>
<XML>
I was hoping to use an xsl transform to generate 2 XML documents:
<XML>
<doc1>
</doc1>
<XML>
And
<XML>
</doc2>
<doc2>
<XML>
Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 XSLT 1.0 中,不可能创建多于一棵树作为任何转换的输出,但在 XSLT 2.0 中,这可以非常容易地完成。
在 XSLT 1.0 中,可以使用< /code>
EXSLT 的扩展元素。
或者,可以进行一种转换,即提供一个全局(且外部指定的)参数,其中包含必须提取到单个文档中的元素的元素名称:
当应用于此 XML 文档时(基于提供的一):
产生了想要的结果:
您将为每个元素运行一次此转换,其子树应提取到单独的文档中。
这是一个 XSLT 2.0 解决方案:
当此转换应用于以下 XML 文档时(基于提供的文档):
结果正确输出到三个文档:
In XSLT 1.0 it isn't possible to create more than one tree as the output of any transformation, but in XSLT 2.0 this can be done really easy.
In XSLT 1.0 one could use the
<exsl:document>
extension element of EXSLT.Or, one can have a transformation, that is provided a global (and externally specified) parameter, containing the element name of the element that must be extracted into a single document:
when applied on this XML document (based on the provided one):
the wanted result is produced:
And you will run this transformation once for every element, whose sub-tree should be extracted into a separate document.
Here is an XSLT 2.0 solution:
When this transformation is applied on the following XML document (based on the provided one):
The result is correctly output to three documents:
我们曾经遇到过这个问题,并通过稍微作弊解决了它:
第一步:创建一个大文件,其中包含由程序指令或注释分隔的不同 xml 脚本。
步骤2:使用程序将文件剪切成单独的文件。
请注意,您的中间结果是无效的 xml,但最终结果是有效的。
示例
We had that problem once and solved it by slightly cheating:
step 1: create one big file containing different xml scripts separated by program instructions or comments.
step 2: use a program to cut the file into separate files.
Note that your intermediate result is invalid xml, but the end result is valid.
Example