如何可视化一组相互关联的XML对象?

如何可视化一组相互关联的XML对象?,xml,graph,visualization,Xml,Graph,Visualization,我有一些XML文档,它们被大大简化,可以描述为: <someobject id="mykey"> <relatedobject id="hiskey"/> <relatedobject id="herkey"/> </someobject> <someobject ... 我建议使用:使用XSLT创建一个文本文件,该文件描述您想要的图形。有关快速概述,请参阅 我已经不太熟悉了,但我想 graph G { mykey -- h

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

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

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

我已经不太熟悉了,但我想

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

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


这里有一个快速解决方案,可以使用GraphViz直接粘贴到外壳上。这利用了避免从头开始编写XSLT样式表

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



编辑后添加:对于额外的积分,只使用在线工具的交互式SVG图。这利用了和。这需要创建一个(直接改编自Dracula图形库的在线示例)。可以找到用于转换的输入文档。

我想您忘了包含您承诺的描述。。。除非您想让我们解释如何生成空白图表,否则您必须缩进代码4个空格(或使用编辑器中的101010按钮),尤其是XML。我帮你修好了。还有,古奇,我们有没有一起去上学?你写了一个叫做“gutch chat”的网络聊天程序。这里没有PM系统,所以我只想说你会有一个缩写为LK的女编程老师。如果你不提供所需的输出,这不是XSLT问题,而是在线服务问题。您还需要澄清这是否需要模式推理。同样感谢您的UML图,我已经完成了这项工作,尽管到目前为止结果非常糟糕-出于某种原因,neato将所有对象压缩得太近,导致大量无法读取的重叠文本和箭头。尝试使用点而不是neato,对我来说,它的布局算法通常更成功。不要因为它是用于有向图的,而感到不快——你可以告诉它不要在直线上放箭头。e、 g.`digraph g{main->init[arrowhead=“none”];}`dot更糟糕,因为它建立了一个层次结构,而我的数据根本不是这样。到目前为止,fdp做得最好,尽管它仍然很难控制。@Steve-尝试添加
overlap=false
,因为
neato
这似乎默认为
true
。哇,非常聪明-希望我真的能给你加分:)我很快就可以为我自己的问题实现这个解决方案了。不确定为什么不起作用:它在本地运行良好。查看来源:@Steve,您的示例进行了以下更改:(1)使用pastebin的“下载”链接而不是“原始”链接,(2)修复XHTML命名空间URI。你完全赢了:完全在线,实时可视化澳大利亚研究数据(或其子集)中的数据集:非常酷。数据从注册表中检索,发送到W3CXSLT服务,并输入到第三方javascript图形库中,所有这些都由浏览器通过URL进行协调。