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

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

 

属性扩展
xsd定义:

graphml+xlink.xsd

<? xml version="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 >


例子

<? xml version="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扩展
xsd定义:

graphml+svg.xsd

<? xml version="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 >


例子:

<? xml version="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 > Default graphical representation for nodes
        
</ svg:desc >
        
< svg:rect  x ="0.5cm"  y ="0.5cm"  width ="2cm"  height ="1cm" />
      
</ svg:svg >
    
</ default >
  
</ key >   
  
< key  id ="k1"  for ="edge" >
    
< desc > Graphical representation for edges
    
</ 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 ="0 0 1200 400" >
          
< svg:line  x1 ="100"  y1 ="300"  x2 ="300"  y2 ="100"
           stroke-width
="5"    />
        
</ svg:svg >
      
</ data >
    
</ edge >
  
</ graph >
</ graphml >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值