分享

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

 Foxmouse 2012-07-23

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

分类: 3397人阅读 评论(0) 收藏 举报

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

 

属性扩展
xsd定义:graphml+xlink.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
   
targetNamespace="http://graphml./xmlns"
   xmlns
="http://graphml./xmlns"  
   xmlns:xlink
="http://www./1999/xlink"
   xmlns:xs
="http://www./2001/XMLSchema"
   elementFormDefault
="qualified"
   attributeFormDefault
="unqualified"
>

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

<xs:redefine 
    
schemaLocation="http://graphml./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./xmlns"  
            xmlns:xlink
="http://www./1999/xlink"
            xmlns:xsi
="http://www./2001/XMLSchema-instance"
            xsi:schemaLocation
="http://graphml./xmlns 
                                graphml+xlink.xsd"
>
  
<graph edgedefault="directed">
    
<node id="n0" xlink:href="http://graphml."/>
    
<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./xmlns"
   xmlns
="http://graphml./xmlns"  
   xmlns:svg
="http://www./2000/svg"
   xmlns:xs
="http://www./2001/XMLSchema"
   elementFormDefault
="qualified"
   attributeFormDefault
="unqualified"
>

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

<xs:redefine 
    
schemaLocation="http://graphml./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./xmlns"  
            xmlns:svg
="http://www./2000/svg"
            xmlns:xsi
="http://www./2001/XMLSchema-instance"
            xsi:schemaLocation
="http://graphml./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>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多