如何可视化一组互连的XML对象?

时间:2010-12-09 04:16:24

标签: xml graph visualization

我有一些XML文档,大致简化,可以描述为:

<someobject id="mykey">
  <relatedobject id="hiskey"/>
  <relatedobject id="herkey"/>
</someobject>
<someobject ...

生成这个图表的简单方法是什么,将对象显示在2D空间中,并在它们之间插入线条?

我对XSLT和Xpath很满意,但更喜欢不需要从头编写程序的解决方案。对Saxon进行一些命令行调用然后生成prog的图表就可以了。任何可以使用在线托管工具完成的任何事情的奖励积分。实时(例如javascript)互动图表的额外奖励积分。

3 个答案:

答案 0 :(得分:3)

这是一个可以直接粘贴到shell的快速​​解决方案,使用GraphViz作为suggested by Philipp。这样可以使用xmlstarlet来避免从头开始编写XSLT样式表。

( echo "graph G {" 
  xmlstarlet sel -t -m "//someobject/relatedobject" \
    -v "concat(../@id, ' -- ', @id, '&#xa;')" input.xml 
   echo "}" ) | dotty -

示例输出:

alt text


编辑添加:对于额外的奖励积分,只使用在线工具here的交互式SVG图表。这可以使用Dracula Graph LibraryW3C XSLT Service。这需要创建XSLT stylesheet(直接改编自Dracula Graph Library的在线示例)。可以找到用于转换的输入文档here

答案 1 :(得分:2)

我建议使用GraphViz:您使用XSLT创建一个文本文件,描述您想要的图形。有关快速概述,请参阅this example

我不再熟悉它,但我想

graph G { 
  mykey -- hiskey
  mykey -- herkey
}

应该做的。

答案 2 :(得分:0)

这不是一个简单的问题。很久以前我写了一个程序来集群XML文档,但是显示是网格而不是图形。不过,如果您要实现某些功能,您可能会对代码感兴趣。此外,您可以将关键字归因于您的文档,并且将使用关键字以及用于对文档进行聚类的链接,它们还将用于命名生成的聚类。当有大量文档时,网格显示可能比图表好。

http://media4.obspm.fr/outils/clustering/doc_en.html