图形描述语言GraphML(5):扩展 GraphML

<meta content="StarSuite 8 (Linux)" name="GENERATOR"> <meta content="*" name="AUTHOR"> <meta content="20071029;11490000" name="CREATED"> <meta content="Seaman Wang" name="CHANGEDBY"> <meta content="20080123;17212300" name="CHANGED"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style>

GraphML的扩展是基于xml的扩展方式,通过增加namespace的引用就可以容易地扩展GraphML,包括xml属性的扩展和Complex Type的扩展。

属性扩展
<meta content="text/html; charset=utf-8" http-equiv="CONTENT-TYPE"> <meta content="StarSuite 8 (Linux)" name="GENERATOR"> <meta content="*" name="AUTHOR"> <meta content="20071029;11490000" name="CREATED"> <meta content="Seaman Wang" name="CHANGEDBY"> <meta content="20080123;17212300" name="CHANGED">xsd定义:<style type="text/css"><!-- @page { size: 21cm 29.7cm; margin: 2cm } PRE.western { font-family: "Cumberland", "Courier New", monospace } PRE.cjk { font-family: "方正宋体", monospace } PRE.ctl { font-family: "方正宋体", monospace } P { margin-bottom: 0.21cm } --></style> graphml+xlink.xsd
<? xmlversion="1.0"encoding="UTF-8" ?>
< xs:schema
targetNamespace ="http://graphml.graphdrawing.org/xmlns"
xmlns
="http://graphml.graphdrawing.org/xmlns"
xmlns:xlink
="http://www.w3.org/1999/xlink"
xmlns:xs
="http://www.w3.org/2001/XMLSchema"
elementFormDefault
="qualified"
attributeFormDefault
="unqualified"
>

< xs:import namespace ="http://www.w3.org/1999/xlink"
schemaLocation
="xlink.xsd" />

< xs:redefine
schemaLocation ="http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd" >
< xs:attributeGroup name ="node.extra.attrib" >
< xs:attributeGroup ref ="node.extra.attrib" />
< xs:attribute ref ="xlink:href" use ="optional" />
</ xs:attributeGroup >
</ xs:redefine >

</ xs:schema >

例子
<? xmlversion="1.0"encoding="UTF-8" ?>
< graphml xmlns ="http://graphml.graphdrawing.org/xmlns"
xmlns:xlink
="http://www.w3.org/1999/xlink"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://graphml.graphdrawing.org/xmlns
graphml+xlink.xsd"
>
< graph edgedefault ="directed" >
< node id ="n0" xlink:href ="http://graphml.graphdrawing.org" />
< node id ="n1" />
< edge source ="n0" target ="n1" />
</ graph >
</ graphml >

Complex Type扩展
<meta content="text/html; charset=utf-8" http-equiv="CONTENT-TYPE"> <meta content="StarSuite 8 (Linux)" name="GENERATOR"> <meta content="*" name="AUTHOR"> <meta content="20071029;11490000" name="CREATED"> <meta content="Seaman Wang" name="CHANGEDBY"> <meta content="20080123;17363500" name="CHANGED">xsd定义: <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } PRE.western { font-family: "Cumberland", "Courier New", monospace } PRE.cjk { font-family: "方正宋体", monospace } PRE.ctl { font-family: "方正宋体", monospace } P { margin-bottom: 0.21cm } --> </style>
 
<? xmlversion="1.0"encoding="UTF-8" ?>
< xs:schema
targetNamespace ="http://graphml.graphdrawing.org/xmlns"
xmlns
="http://graphml.graphdrawing.org/xmlns"
xmlns:svg
="http://www.w3.org/2000/svg"
xmlns:xs
="http://www.w3.org/2001/XMLSchema"
elementFormDefault
="qualified"
attributeFormDefault
="unqualified"
>

< xs:import namespace ="http://www.w3.org/2000/svg"
schemaLocation
="svg.xsd" />

< xs:redefine
schemaLocation ="http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd" >
< xs:complexType name ="data-extension.type" >
< xs:complexContent >
< xs:extension base ="data-extension.type" >
< xs:sequence >
< xs:element ref ="svg:svg" />
</ xs:sequence >
</ xs:extension >
</ xs:complexContent >
</ xs:complexType >
</ xs:redefine >

</ xs:schema >

例子:
<? xmlversion="1.0"encoding="UTF-8" ?>
< graphml xmlns ="http://graphml.graphdrawing.org/xmlns"
xmlns:svg
="http://www.w3.org/2000/svg"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://graphml.graphdrawing.org/xmlns
graphml+svg.xsd"
>
< key id ="k0" for ="node" >
< default >
< svg:svg width ="5cm" height ="4cm" version ="1.1" >
< svg:desc > Defaultgraphicalrepresentationfornodes
</ svg:desc >
< svg:rect x ="0.5cm" y ="0.5cm" width ="2cm" height ="1cm" />
</ svg:svg >
</ default >
</ key >
< key id ="k1" for ="edge" >
< desc > Graphicalrepresentationforedges
</ desc >
</ key >
< graph edgedefault ="directed" >
< node id ="n0" >
< data key ="k0" >
< svg:svg width ="4cm" height ="8cm" version ="1.1" >
< svg:ellipse cx ="2cm" cy ="4cm" rx ="2cm" ry ="1cm" />
</ svg:svg >
</ data >
</ node >
< node id ="n1" />
< edge source ="n0" target ="n1" >
< data key ="k1" >
< svg:svg width ="12cm" height ="4cm" viewBox ="001200400" >
< svg:line x1 ="100" y1 ="300" x2 ="300" y2 ="100"
stroke-width
="5" />
</ svg:svg >
</ data >
</ edge >
</ graph >
</ graphml >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值