blob: 266ea9c02f771692c5c877f7a13a25c4f605b5f4 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Header -->
<xs:schema
targetNamespace="http://graphml.graphdrawing.org/xmlns/graphml"
xmlns="http://graphml.graphdrawing.org/xmlns/graphml"
xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:y="http://www.yworks.com/xml/graphml"
attributeFormDefault="unqualified"
elementFormDefault="qualified" >
<xs:annotation>
<xs:documentation>
GraphML core language definitions including GraphML attributes and GraphML parseinfo.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.yworks.com/xml/graphml" schemaLocation="yfeatures.xsd"/>
<!--<xs:include schemaLocation="graphml-parseinfo.xsd"/>-->
<!--<xs:include schemaLocation="graphml-parseinfo.xsd"/>-->
<!-- Redefinition of the elements in the graphml-structure schema -->
<xs:redefine schemaLocation="graphml-structure.xsd">
<xs:attributeGroup name="key.extra.attrib">
<xs:annotation>
<xs:documentation>
Redefinition of file graphml-structure.xsd.
<p>Extends the attribute group key.extra.attrib (which takes
part in the attribute list of &lt;key&gt;) by adding the
attribute yfiles.type which is defined below.
</p>
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="key.extra.attrib"/>
<xs:attributeGroup ref="key.attributes.attrib"/>
<xs:attribute name="yfiles.type" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>
Custom yfiles specific attribute that allows to specify an additional data type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="graph.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Redefinition of file graphml-structure.xsd.
Extends the attribute group node.extra.attrib (which takes
part in the attribute list of &lt;node>) by adding the
attribute group node.parseinfo.attrib which is defined below.
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="graph.extra.attrib"/>
<xs:attributeGroup ref="graph.parseinfo.attrib"/>
</xs:attributeGroup>
<!-- Definition of the different grouping types -->
<!-- The grouping type is stored as attribute at the node element -->
<xs:attributeGroup name="node.extra.attrib">
<xs:annotation>
<xs:documentation>
Redefinition of file graphml-structure.xsd.
<p>Extends the attribute group node.extra.attrib (which takes
part in the attribute list of &lt;node&gt;) by adding a
yfiles specific attribute for the folder type.
</p>
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="node.extra.attrib"/>
<xs:attributeGroup ref="node.parseinfo.attrib"/>
<xs:attribute name="yfiles.foldertype" type="yfiles.foldertype.type" use="optional">
<xs:annotation>
<xs:documentation>
The foldertype for group/folder nodes.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<!-- Definition of the different node and edge types -->
<xs:complexType name="data-extension.type">
<xs:annotation>
<xs:documentation>
Redefinition of file graphml-structure.xsd.
<p>Extends the type data-extension.type to allow specifically the content below (i.e. text only or
all defined edge and node relaizers, resource blocks or postprocessors)
</p>
</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="true">
<xs:extension base="data-extension.type">
<xs:choice maxOccurs="1" minOccurs="0">
<xs:element ref="y:ShapeNode"/>
<xs:element ref="y:ImageNode"/>
<xs:element ref="y:GroupNode"/>
<xs:element ref="y:GenericNode"/>
<xs:element ref="y:GenericGroupNode"/>
<xs:element ref="y:ProxyShapeNode"/>
<xs:element ref="y:ProxyAutoBoundsNode"/>
<xs:element ref="y:PolyLineEdge"/>
<xs:element ref="y:ArcEdge"/>
<xs:element ref="y:BezierEdge"/>
<xs:element ref="y:SplineEdge"/>
<xs:element ref="y:QuadCurveEdge"/>
<xs:element ref="y:GenericEdge"/>
<xs:element ref="y:Postprocessors"/>
<xs:element ref="y:Resources"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
<!-- Type of Grouping -->
<xs:simpleType name="yfiles.foldertype.type">
<xs:annotation>
<xs:documentation>
The valid folder types for a folder/group node.
<p>Valid values are
<ul>
<li>
<b>folder</b>: for folder nodes</li>
<li>
<b>group</b>: for group nodes</li>
<li>
<b>leaf</b>: for leaf nodes (this is the implied value)</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="folder"/>
<xs:enumeration value="group"/>
<xs:enumeration value="leaf"/>
</xs:restriction>
</xs:simpleType>
<!-- Copied from graphml.xsd -->
<!--types as in graphml-attributes.xsd -->
<xs:simpleType name="key.name.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/(Dokumentation der Attributes Erweiterung; entsprechende Stelle.html)"
xml:lang="en">
Simple type for the attr.name attribute of &lt;key>.
key.name.type is final, that is, it may not be extended
or restricted.
key.name.type is a restriction of xs:NMTOKEN
Allowed values: (no restriction)
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN"/>
</xs:simpleType>
<xs:simpleType name="key.type.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/(Dokumentation der Attributes Erweiterung; entsprechende Stelle.html)"
xml:lang="en">
Simple type for the attr.type attribute of &lt;key>.
key.type.type is final, that is, it may not be extended
or restricted.
key.type.type is a restriction of xs:NMTOKEN
Allowed values: boolean, int, long, float, double, string, complex.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="boolean"/>
<xs:enumeration value="int"/>
<xs:enumeration value="long"/>
<xs:enumeration value="float"/>
<xs:enumeration value="double"/>
<xs:enumeration value="string"/>
<xs:enumeration value="complex"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="key.attributes.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Definition of the attribute group key.attributes.attrib.
This group consists of the two optional attributes
- attr.name (gives the name for the data function)
- attr.type (declares the range of values for the data function)
</xs:documentation>
</xs:annotation>
<xs:attribute name="attr.name" type="key.name.type" use="optional"/>
<xs:attribute name="attr.type" type="key.type.type" use="optional"/>
</xs:attributeGroup>
<!--types as in graphml-parseinfo.xsd -->
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type definitions for the new graph attributes.
</xs:documentation>
</xs:annotation>
<xs:simpleType name="graph.order.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.order attribute of &lt;graph>.
graph.order.type is final, that is, it may not be extended
or restricted.
graph.order.type is a restriction of xs:NMTOKEN
Allowed values: free, nodesfirst, adjacencylist.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="free"/>
<xs:enumeration value="nodesfirst"/>
<xs:enumeration value="adjacencylist"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="graph.nodes.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.nodes attribute of &lt;graph>.
graph.nodes.type is final, that is, it may not be extended
or restricted.
graph.nodes.type is a restriction of xs:nonNegativeInteger
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="graph.edges.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.edges attribute of &lt;graph>.
graph.edges.type is final, that is, it may not be extended
or restricted.
graph.edges.type is a restriction of xs:nonNegativeInteger
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="graph.maxindegree.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.maxindegree attribute of &lt;graph>.
graph.maxindegree.type is final, that is, it may not be extended
or restricted.
graph.maxindegree.type is a restriction of xs:nonNegativeInteger
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="graph.maxoutdegree.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.maxoutdegree attribute of &lt;graph>.
graph.maxoutdegree.type is final, that is, it may not be extended
or restricted.
graph.maxoutdegree.type is a restriction of xs:nonNegativeInteger
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="graph.nodeids.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.nodeids attribute of &lt;graph>.
graph.nodeids.type is final, that is, it may not be extended
or restricted.
graph.nodeids.type is a restriction of xs:string
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="canonical"/>
<xs:enumeration value="free"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="graph.edgeids.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.edgeids attribute of &lt;graph>.
graph.edgeids.type is final, that is, it may not be extended
or restricted.
graph.edgeids.type is a restriction of xs:string
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="canonical"/>
<xs:enumeration value="free"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="graph.parseinfo.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Definition of the attribute group graph.parseinfo.attrib.
This group consists of the seven attributes:
<ul>
<li><code>parse.nodeids</code></li> (fixed to 'canonical' meaning that the id attribute
of &lt;node> follows the pattern 'n[number]),
<li><code>parse.edgeids</code></li> (fixed to 'canonical' meaning that the id attribute
of &lt;edge> follows the pattern 'e[number]),
<li><code>parse.order</code></li> (required; one of the values 'nodesfirst',
'adjacencylist' or 'free'),
<li><code>parse.nodes</code></li> (required; number of nodes in this graph),
<li><code>parse.edges</code></li> (required; number of edges in this graph),
<li><code>parse.maxindegree</code></li> (optional; maximal indegree of a node in this graph),
<li><code>parse.maxoutdegree</code></li> (optional; maximal outdegree of a node in this graph)
</ul>
</xs:documentation>
</xs:annotation>
<xs:attribute name="parse.nodeids" type="graph.nodeids.type"/>
<xs:attribute name="parse.edgeids" type="graph.edgeids.type"/>
<xs:attribute name="parse.order" type="graph.order.type"/>
<xs:attribute name="parse.nodes" type="graph.nodes.type"/>
<xs:attribute name="parse.edges" type="graph.edges.type"/>
<xs:attribute name="parse.maxindegree" type="graph.maxindegree.type" use="optional"/>
<xs:attribute name="parse.maxoutdegree" type="graph.maxoutdegree.type" use="optional"/>
</xs:attributeGroup>
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type definitions for the new node attributes.
</xs:documentation>
</xs:annotation>
<xs:simpleType name="node.indegree.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.indegree attribute of &lt;node>.
node.indegree.type is final, that is, it may not be extended
or restricted.
node.indegree.type is a restriction of xs:nonNegativeInteger
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="node.outdegree.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the parse.outdegree attribute of &lt;node>.
node.outdegree.type is final, that is, it may not be extended
or restricted.
node.outdegree.type is a restriction of xs:nonNegativeInteger
Allowed values: (no restriction).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:attributeGroup name="node.parseinfo.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Definition of the attribute group node.parseinfo.attrib.
This group consists of two attributes
- parse.indegree (optional; indegree of this node),
- parse.outdegree (optional; outdegree of this node).
</xs:documentation>
</xs:annotation>
<xs:attribute name="parse.indegree" type="node.indegree.type" use="optional"/>
<xs:attribute name="parse.outdegree" type="node.outdegree.type" use="optional"/>
</xs:attributeGroup>
</xs:schema>