GXL 1.0 - XML Schema Definition

plain-text version: [gxl-1.0.xsd]
Detailed description of all non-abstract elements can be found in the documented dtd - just use the links

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.gupro.de/GXL/gxl-1.0.dtd" xmlns="http://www.gupro.de/GXL/gxl-1.0.dtd" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" elementFormDefault="qualified" xmlns:xlink="http://www.w3.org/1999/xlink">
        <!--graph structure -->
        <xsd:element name="attributedElement" type="AttributedElementType" abstract="true"/>
        <xsd:complexType name="AttributedElementType">
                <xsd:attribute name="id" type="xsd:ID"/>
        </xsd:complexType>
        <xsd:element name="typedElement" type="TypedElementType" abstract="true"/>
        <xsd:complexType name="TypedElementType">
                <xsd:complexContent>
                        <xsd:extension base="AttributedElementType">
                                <xsd:sequence>
                                        <xsd:element ref="type" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element ref="attr" minOccurs="0" maxOccurs="unbounded"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <!-- gxl -->
        <xsd:element name="gxl" type="GxlType"/>
        <xsd:complexType name="GxlType">
                <xsd:sequence>
                        <xsd:element ref="graph" minOccurs="0" maxOccurs="unbounded"/>
                </xsd:sequence>
        </xsd:complexType>
        <!-- type -->
        <xsd:element name="type" type="TypeType"/>
        <xsd:complexType name="TypeType">
             <xsd:anyAttribute namespace="http://www.w3.org/1999/xlink"/>
        </xsd:complexType>
        <!-- graph -->
        <xsd:element name="graph" type="graphType"/>
        <xsd:complexType name="graphType">
                <xsd:complexContent>
                        <xsd:extension base="TypedElementType">
                                <xsd:choice minOccurs="0" maxOccurs="unbounded">
                                        <xsd:element ref="node"/>
                                        <xsd:element ref="edge"/>
                                        <xsd:element ref="rel"/>
                                </xsd:choice>
                                <xsd:attribute name="role" type="xsd:nmtoken" use="optional"/>
                                <xsd:attribute name="edgeids" type="xsd:boolean" use="default" value="false"/>
                                <xsd:attribute name="hypergraph" type="xsd:boolean" use="default" value="false"/>
                                <xsd:attribute name="edgemode" type="edgemodeType" use="default" value="directed"/>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:simpleType name="edgemodeType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="directed"/>
                        <xsd:enumeration value="undirected"/>
                        <xsd:enumeration value="defaultdirected"/>
                        <xsd:enumeration value="defaultundirected"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- graph elements -->
        <xsd:element name="graphElement" type="GraphElementType" abstract="true"/>
        <xsd:complexType name="GraphElementType">
                <xsd:complexContent>
                        <xsd:extension base="TypedElementType">
                                <xsd:sequence>
                                        <xsd:element ref="graph" minOccurs="0" maxOccurs="unbounded"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <!-- node -->
        <xsd:element name="node" type="NodeType"/>
        <xsd:complexType name="NodeType">
                <xsd:complexContent>
                        <xsd:extension base="GraphElementType"/>
                </xsd:complexContent>
        </xsd:complexType>
        <!-- local connections -->
        <xsd:element name="localConnection" type="LocalConnectionType" abstract="true"/>
        <xsd:complexType name="LocalConnectionType">
                <xsd:complexContent>
                        <xsd:extension base="GraphElementType">
                                <xsd:attribute name="isDirected" type="xsd:boolean" use="optional"/>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="edge" type="EdgeType"/>
        <xsd:complexType name="EdgeType">
                <xsd:complexContent>
                        <xsd:extension base="LocalConnectionType">
                                <xsd:attribute name="from" type="xsd:IDREF" use="required"/>
                                <xsd:attribute name="to" type="xsd:IDREF" use="required"/>
                                <xsd:attribute name="fromorder" type="xsd:integer" use="optional"/>
                                <xsd:attribute name="toorder" type="xsd:integer" use="optional"/>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="rel" type="RelType"/>
        <xsd:complexType name="RelType">
                <xsd:complexContent>
                        <xsd:extension base="LocalConnectionType">
                                <xsd:sequence>
                                        <xsd:element ref="relend" minOccurs="0" maxOccurs="unbounded"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <!-- relend -->
        <xsd:element name="relend" type="RelendType"/>
        <xsd:complexType name="RelendType">
                <xsd:complexContent>
                        <xsd:extension base="AttributedElementType">
                                <xsd:attribute name="target" type="xsd:IDREF" use="required"/>
                                <xsd:attribute name="role" type="xsd:nmtoken" use="optional"/>
                                <xsd:attribute name="direction" type="directionType" use="optional"/>
                                <xsd:attribute name="startorder" type="xsd:integer" use="optional"/>
                                <xsd:attribute name="endorder" type="xsd:integer" use="optional"/>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:simpleType name="directionType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="in"/>
                        <xsd:enumeration value="out"/>
                        <xsd:enumeration value="none"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- attribute -->
        <xsd:element name="attr" type="AttrType"/>
        <xsd:complexType name="AttrType">
                <xsd:complexContent>
                        <xsd:extension base="AttributedElementType">
                                <xsd:group ref="value"/>
                                          <xsd:attribute name="name" type="xsd:string" use="required"/>
                                     <xsd:attribute name="kind" type="xsd:string" use="optional"/>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <!-- value -->
        <xsd:group name="value">
                <xsd:choice>
                        <xsd:element ref="bag"/>
                        <xsd:element ref="set"/>
                        <xsd:element ref="seq"/>
                        <xsd:element ref="tup"/>
                        <xsd:element ref="bool"/>
                        <xsd:element ref="int"/>
                        <xsd:element ref="float"/>
                        <xsd:element ref="string"/>
                        <xsd:element ref="locator"/>
                        <xsd:element ref="enum"/>
                </xsd:choice>
        </xsd:group>
        <!-- locator -->
        <xsd:element name="locator" type="LocatorType"/>
        <xsd:complexType name="LocatorType">
                <xsd:anyAttribute namespace="http://www.w3.org/1999/xlink"/>
        </xsd:complexType>
        <!-- atomic values -->
        <xsd:element name="bool" type="xsd:boolean"/>
        <xsd:element name="int" type="xsd:integer"/>
        <xsd:element name="float" type="xsd:float"/>
        <xsd:element name="string" type="xsd:string"/>
        <xsd:element name="freeType" type="xsd:string"/>
        <!-- enumeration -->
        <xsd:element name="enum" type="xsd:string"/>
        <!-- composite values -->
        <xsd:element name="compositeValue" type="CompositeValueType" abstract="true"/>
        <xsd:complexType name="CompositeValueType">
                <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                        <xsd:group ref="value"/>
                </xsd:sequence>
        </xsd:complexType>
        <xsd:element name="bag" type="BagType"/>
        <xsd:complexType name="BagType">
                <xsd:complexContent>
                        <xsd:extension base="CompositeValueType"/>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="set" type="SetType"/>
        <xsd:complexType name="SetType">
                <xsd:complexContent>
                        <xsd:extension base="CompositeValueType"/>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="seq" type="SeqType"/>
        <xsd:complexType name="SeqType">
                <xsd:complexContent>
                        <xsd:extension base="CompositeValueType"/>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="tup" type="TupType"/>
        <xsd:complexType name="TupType">
                <xsd:complexContent>
                        <xsd:extension base="CompositeValueType"/>
                </xsd:complexContent>
        </xsd:complexType>
</xsd:schema>