我有一些XML文档,大致简化,可以描述为:
<someobject id="mykey">
<relatedobject id="hiskey"/>
<relatedobject id="herkey"/>
</someobject>
<someobject ...
生成这个图表的简单方法是什么,将对象显示在2D空间中,并在它们之间插入线条?
我对XSLT和Xpath很满意,但更喜欢不需要从头编写程序的解决方案。对Saxon进行一些命令行调用然后生成prog的图表就可以了。任何可以使用在线托管工具完成的任何事情的奖励积分。实时(例如javascript)互动图表的额外奖励积分。
答案 0 :(得分:3)
这是一个可以直接粘贴到shell的快速解决方案,使用GraphViz作为suggested by Philipp。这样可以使用xmlstarlet来避免从头开始编写XSLT样式表。
( echo "graph G {"
xmlstarlet sel -t -m "//someobject/relatedobject" \
-v "concat(../@id, ' -- ', @id, '
')" input.xml
echo "}" ) | dotty -
示例输出:
编辑添加:对于额外的奖励积分,只使用在线工具here的交互式SVG图表。这可以使用Dracula Graph Library和W3C XSLT Service。这需要创建XSLT stylesheet(直接改编自Dracula Graph Library的在线示例)。可以找到用于转换的输入文档here。
答案 1 :(得分:2)
我建议使用GraphViz:您使用XSLT创建一个文本文件,描述您想要的图形。有关快速概述,请参阅this example。
我不再熟悉它,但我想
graph G {
mykey -- hiskey
mykey -- herkey
}
应该做的。
答案 2 :(得分:0)
这不是一个简单的问题。很久以前我写了一个程序来集群XML文档,但是显示是网格而不是图形。不过,如果您要实现某些功能,您可能会对代码感兴趣。此外,您可以将关键字归因于您的文档,并且将使用关键字以及用于对文档进行聚类的链接,它们还将用于命名生成的聚类。当有大量文档时,网格显示可能比图表好。