【发布时间】:2018-07-31 13:43:12
【问题描述】:
我有一个类似的 xml 文件:
<main xmlns:xi="http://www.w3.org/2001/XInclude">
<level1 xml:base="./include1/include1.xml">
<level2 xml:base="./include1/include2/include2.xml">
<level3 xml:base="./include2/include3/include3.xml">
<level4 xml:base="./include3/include4/include4.xml">
<data>0</data>
<data>1</data>
</level4>
</level3>
</level2>
</level1>
</main>
该文件是通过使用 xi:include 组装多个 xml 文件生成的。 具体来说,示例中的文件是由以下文件生成的:
./main.xml
<?xml version="1.0" encoding="UTF-8" ?>
<main xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="./include1/include1.xml" />
</main >
./include1/include1.xml
<?xml version="1.0" encoding="UTF-8" ?>
<level1 xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="./include2/include2.xml" />
</level1 >
./include1/include2/include2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<level2 xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="./include3/include3.xml" />
</level2 >
./include1/include2/include3/include3.xml
<?xml version="1.0" encoding="UTF-8" ?>
<level3 xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="./include4/include4.xml" />
</level3 >
./include1/include2/include3/include4/include4.xml
<?xml version="1.0" encoding="UTF-8" ?>
<level4 xmlns:xi="http://www.w3.org/2001/XInclude">
<data> 0 </data>
<data> 1 </data>
</level4 >
现在,在对输出文件中的数据进行一些处理后,我想保存原始文件,检索原始文件夹树结构。
我尝试编写自己的 XQuery 脚本来实现这一目标,方法是在输出文件中循环,处理存储在 xml:base 属性中的值并保存文件。
然而,现在,在编写了 150 多行初级 XQuery 代码后,我感到迷茫。
因此我想知道是否有人已经开发了一些实现此功能的 XQuery 或 XSLT 代码(我认为总的来说它应该是一个非常常见的功能......)或者我是否可以使用一些现有的库来执行此任务. 谢谢
【问题讨论】: