如何打印x:include层次结构



我有大约500个xml文档,每个文档大约20000行。它们相互包含,全部或部分(由xpointer指定)

我必须弄清楚它们是如何联系在一起的。是否有可能在调用xinclude后解析(并打印)给定文件的包含层次结构?调用历史是否存储在结果dom中的某个位置,是否可以从样式表访问?

对于sample1.xml,我需要以下信息:

sample1.xml
|- sample2.xml#xpointer(/root/elem/*)
|- sample3.xml#xpointer(/root/elem/*)

请注意,我对sampleX不感兴趣,因为它不包括在sample1.xml

sample1.xml
<root>
<xi:include href="sample2.xml#xpointer(/root/elem/*)" parse="xml"/>
</root>
sample2.xml
<root>
<elem>
<xi:include href="sample3.xml#xpointer(/root/elem/*)" parse="xml"/>
</elem>
<otherElem>
<xi:include href="sampleX.xml#xpointer(/root/elem/*)" parse="xml"/>
</otherElem>
</root>
sample3.xml
<root>
<elem>
<hi/>
<ho/>
</elem>
</root>
sampleX.xml
<root>
<elem />
</root>

https://www.w3.org/TR/xinclude/创建结果:

记录每个顶级包含元素的包含历史在包含历史扩展属性中。包含历史属性是表示属性的元素信息列表

我的问题:

  1. libxml2是否遵循规范并存储包含历史?
  2. 通过哪个API调用(最好使用xslt)我可以访问包含历史?
  3. 还是我误解了规范?

感谢任何提示:-)

oerkelchen

如果您熟悉XSLT,那么这是一种完全可以接受的方法。我想我会这样做:

  • 使用您的技术在单个XML文档
  • 中打印所有<xi:include>标记的值
  • 使用命令行FOR递归地处理所有目录中的所有XML文档。在Windows上,FOR可以很容易地做到这一点。Linux上是find

如果依赖关系图很复杂,输出GraphViz规范并将结果呈现为可浏览的图将是相当简单的。

相关内容

  • 没有找到相关文章

最新更新