首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GraphML中调整XML输出

在GraphML中调整XML输出
EN

Stack Overflow用户
提问于 2012-04-25 14:46:55
回答 1查看 211关注 0票数 2

您认为我可以调整GraphML的xml输出吗?

GraphML wiki中,标签似乎是固定的:

代码语言:javascript
复制
<graphml>
  <graph>
    <node>
      <data></data>
    </node>
    <edge>
      <data></data>
    </edge>
  </graph>
</graphml>

我看到您可以更改标记属性。您认为我可以将标记本身定制为类似于<car></car>的形式吗

EN

回答 1

Stack Overflow用户

发布于 2013-04-02 07:20:09

如果需要添加新元素,则必须修改the DTD。在这种情况下,由于DTD customization,您的数据将不再是GraphML,而是您自己的标准。下面是GraphML DTD:

代码语言:javascript
复制
<!-- ====================================================================== -->
<!-- file: graphml.dtd ====================================================== 

  This is the Document Type Definition for the release candidate of 
  GraphML version 1.0 and represents a (necessarily) looser specification 
  than the corresponding XML Schema.  It's use is discouraged, though it
  may be necessary for some systems.

  Usage:

            SYSTEM "http://graphml.graphdrawing.org/dtds/1.0rc/graphml.dtd"

            xmlns="http://graphml.graphdrawing.org/xmlns/1.0rc"

    ====================================================================== -->

<!-- ===============================================================-->
<!--Parameter entity for data content -->
<!--================================================================-->

<!ENTITY % GRAPHML.data.content "(#PCDATA)">

<!-- ===============================================================-->
<!--Parameter entities for attribute list extensions -->
<!--================================================================-->

<!ENTITY % GRAPHML.graphml.attrib "">
<!ENTITY % GRAPHML.locator.attrib "">
<!ENTITY % GRAPHML.graph.attrib "">
<!ENTITY % GRAPHML.node.attrib "">
<!ENTITY % GRAPHML.port.attrib "">
<!ENTITY % GRAPHML.edge.attrib "">
<!ENTITY % GRAPHML.hyperedge.attrib "">
<!ENTITY % GRAPHML.endpoint.attrib "">
<!ENTITY % GRAPHML.key.attrib "">
<!ENTITY % GRAPHML.data.attrib "">
<!ENTITY % GRAPHML.default.attrib "">

<!--============================================================-->
<!--Attributes used by each GRAPHML element-->
<!--============================================================-->

<!ENTITY % GRAPHML.common.attrib
           ""
>

<!--================================================================-->
<!--the graphml elements-->
<!--================================================================-->

<!ELEMENT data  %GRAPHML.data.content;>
<!ATTLIST data 
                key            IDREF   #REQUIRED
                id             ID      #IMPLIED
                %GRAPHML.data.attrib;
                %GRAPHML.common.attrib;
>

<!ELEMENT default  %GRAPHML.data.content;>
<!ATTLIST default 
                %GRAPHML.default.attrib;
                %GRAPHML.common.attrib;
>

<!ELEMENT key (desc?,default?)>
<!ATTLIST key 
              id  ID       #REQUIRED
              for (graph|node|edge|hyperedge|port|endpoint|all) "all"
              %GRAPHML.key.attrib;
              %GRAPHML.common.attrib;
>   

<!ELEMENT graphml  (desc?,key*,(data|graph)*)>
<!ATTLIST graphml  
                   %GRAPHML.graphml.attrib;
                   %GRAPHML.common.attrib;
>

<!ELEMENT graph    (desc?,(((data|node|edge|hyperedge)*)|locator))>
<!ATTLIST graph    
                   id       ID           #IMPLIED
                   edgedefault (directed|undirected) #REQUIRED
                   %GRAPHML.graph.attrib;
                   %GRAPHML.common.attrib;
>   

<!ELEMENT node   (desc?,((((data|port)*,graph?))|locator))>
<!ATTLIST node   
                 id        ID      #REQUIRED
                 %GRAPHML.node.attrib;
                 %GRAPHML.common.attrib;
>

<!ELEMENT port (desc?,(data|port)*)>
<!ATTLIST port
               name    NMTOKEN  #REQUIRED
               %GRAPHML.port.attrib;
               %GRAPHML.common.attrib;
>


<!ELEMENT edge (desc?,data*,graph?)>
<!ATTLIST edge 
               id         ID           #IMPLIED
               source     IDREF        #REQUIRED
               sourceport NMTOKEN      #IMPLIED
               target     IDREF        #REQUIRED
               targetport NMTOKEN      #IMPLIED
               directed   (true|false) #IMPLIED
               %GRAPHML.edge.attrib;
               %GRAPHML.common.attrib;
>

<!ELEMENT hyperedge  (desc?,(data|endpoint)*,graph?)>
<!ATTLIST hyperedge 
                    id     ID      #IMPLIED
                    %GRAPHML.hyperedge.attrib;
                    %GRAPHML.common.attrib;
>

<!ELEMENT endpoint (desc?)>
<!ATTLIST endpoint 
                   id    ID       #IMPLIED
                   node  IDREF    #REQUIRED
                   port  NMTOKEN  #IMPLIED
                   type  (in|out|undir) "undir"
                   %GRAPHML.endpoint.attrib;
                   %GRAPHML.common.attrib;
>

<!ELEMENT locator EMPTY>
<!ATTLIST locator 
                   xmlns:xlink   CDATA   #FIXED  "http://www.w3.org/TR/2000/PR-xlink-20001220/"
                   xlink:href     CDATA    #REQUIRED
                   xlink:type     (simple) #FIXED    "simple"
                   %GRAPHML.locator.attrib;
                   %GRAPHML.common.attrib; 
>

<!ELEMENT desc (#PCDATA)>
<!ATTLIST desc %GRAPHML.common.attrib;>

参考

  • Comparison between XML to SVG Transformation Mechanisms
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10310648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档