| <?xml version="1.0"?> |
| |
| <!-- Header --> |
| <xs:schema |
| targetNamespace="http://www.yworks.com/xml/graphml" |
| |
| xmlns="http://www.yworks.com/xml/graphml" |
| xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml" |
| xmlns:xs="http://www.w3.org/2001/XMLSchema" |
| xmlns:xlink="http://www.w3.org/1999/xlink" |
| |
| elementFormDefault="qualified" |
| attributeFormDefault="unqualified" |
| > |
| |
| <!-- --> |
| <!-- Enumeration Types --> |
| <!-- --> |
| |
| |
| <!-- LineType --> |
| <xs:simpleType name="lineType.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="line"/> |
| <xs:enumeration value="dashed"/> |
| <xs:enumeration value="dotted"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Font styles --> |
| <xs:simpleType name="fontStyle.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="plain"/> |
| <xs:enumeration value="bold"/> |
| <xs:enumeration value="italic"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Shape of Shape Nodes --> |
| <xs:simpleType name="ShapeType.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="rectangle"/> |
| <xs:enumeration value="roundrectangle"/> |
| <xs:enumeration value="ellipse"/> |
| <xs:enumeration value="parallelogram"/> |
| <xs:enumeration value="hexagon"/> |
| <xs:enumeration value="octagon"/> |
| <xs:enumeration value="diamond"/> |
| <xs:enumeration value="triangle"/> |
| <xs:enumeration value="trapezoid"/> |
| <xs:enumeration value="trapezoid2"/> |
| <xs:enumeration value="rectangle3d"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Arrow types --> |
| <xs:simpleType name="arrowType.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="standard"/> |
| <xs:enumeration value="delta"/> |
| <xs:enumeration value="diamond"/> |
| <xs:enumeration value="white_diamond"/> |
| <xs:enumeration value="white_delta"/> |
| <xs:enumeration value="none"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| |
| <!-- Alignment of Labels --> |
| <xs:simpleType name="alignment.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="center"/> |
| <xs:enumeration value="left"/> |
| <xs:enumeration value="right"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Node Label Models --> |
| |
| <xs:simpleType name="nodeLabelModel.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="free"/> |
| <xs:enumeration value="sides"/> |
| <xs:enumeration value="corners"/> |
| <xs:enumeration value="eight_pos"/> |
| <xs:enumeration value="sandwich"/> |
| <xs:enumeration value="internal"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Node Label Positions --> |
| |
| <xs:simpleType name="nodeLabelPosition.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="n"/> |
| <xs:enumeration value="nw"/> |
| <xs:enumeration value="ne"/> |
| <xs:enumeration value="w"/> |
| <xs:enumeration value="e"/> |
| <xs:enumeration value="sw"/> |
| <xs:enumeration value="s"/> |
| <xs:enumeration value="se"/> |
| <xs:enumeration value="c"/> |
| <xs:enumeration value="tl"/> |
| <xs:enumeration value="t"/> |
| <xs:enumeration value="tr"/> |
| <xs:enumeration value="r"/> |
| <xs:enumeration value="l"/> |
| <xs:enumeration value="bl"/> |
| <xs:enumeration value="b"/> |
| <xs:enumeration value="br"/> |
| <xs:enumeration value="anywhere"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- AutoSizePolicy --> |
| |
| <xs:simpleType name="autoSizePolicy.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="node_width"/> |
| <xs:enumeration value="node_height"/> |
| <xs:enumeration value="content"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Edge Label Models --> |
| |
| <xs:simpleType name="edgeLabelModel.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="centered"/> |
| <xs:enumeration value="center_slider"/> |
| <xs:enumeration value="side_slider"/> |
| <xs:enumeration value="free"/> |
| <xs:enumeration value="two_pos"/> |
| <xs:enumeration value="three_center"/> |
| <xs:enumeration value="six_pos"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Edge Label Positions --> |
| |
| <xs:simpleType name="edgeLabelPosition.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="center"/> |
| <xs:enumeration value="tcentr"/> |
| <xs:enumeration value="scentr"/> |
| <xs:enumeration value="anywhere"/> |
| <xs:enumeration value="stail"/> |
| <xs:enumeration value="ttail"/> |
| <xs:enumeration value="tail"/> |
| <xs:enumeration value="shead"/> |
| <xs:enumeration value="thead"/> |
| <xs:enumeration value="head"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Preferred Edge Label Positions --> |
| |
| <xs:simpleType name="preferredPlacement.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="target_right"/> |
| <xs:enumeration value="target"/> |
| <xs:enumeration value="target_left"/> |
| <xs:enumeration value="source_right"/> |
| <xs:enumeration value="source"/> |
| <xs:enumeration value="source_left"/> |
| <xs:enumeration value="center_right"/> |
| <xs:enumeration value="center"/> |
| <xs:enumeration value="center_left"/> |
| <xs:enumeration value="anywhere"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- horizontalTextPosition value type for labels --> |
| <xs:simpleType name="horizontalTextPosition.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="left"/> |
| <xs:enumeration value="right"/> |
| <xs:enumeration value="center"/> |
| <xs:enumeration value="left_aligned"/> |
| <xs:enumeration value="right_aligned"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- verticalTextPosition value type for labels --> |
| <xs:simpleType name="verticalTextPosition.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="top"/> |
| <xs:enumeration value="bottom"/> |
| <xs:enumeration value="center"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- --> |
| <!-- Geometric types --> |
| <!-- --> |
| |
| <!-- Location defined by x,y coordinates --> |
| <xs:attributeGroup name="Location.group"> |
| <xs:attribute name="x" type="xs:double" use="required"/> |
| <xs:attribute name="y" type="xs:double" use="required"/> |
| </xs:attributeGroup> |
| |
| <!-- Location defined by x,y coordinates and width,height --> |
| <xs:attributeGroup name="Rectangle.group"> |
| <xs:attribute name="x" type="xs:double" use="required"/> |
| <xs:attribute name="y" type="xs:double" use="required"/> |
| <xs:attribute name="width" type="xs:double" use="required"/> |
| <xs:attribute name="height" type="xs:double" use="required"/> |
| </xs:attributeGroup> |
| |
| <!-- type for required rectangles --> |
| <xs:complexType name="Rectangle.type"> |
| <xs:attributeGroup ref="Rectangle.group"/> |
| </xs:complexType> |
| |
| <!-- type for optional rectangles --> |
| <xs:attributeGroup name="OpRectangle.group"> |
| <xs:attribute name="x" type="xs:double" use="optional"/> |
| <xs:attribute name="y" type="xs:double" use="optional"/> |
| <xs:attribute name="width" type="xs:double" use="optional"/> |
| <xs:attribute name="height" type="xs:double" use="optional"/> |
| </xs:attributeGroup> |
| |
| <!-- type for a path --> |
| <xs:complexType name="Path.type"> |
| <xs:sequence> |
| <xs:element name="Point" minOccurs="0" maxOccurs="unbounded"> |
| <xs:complexType> |
| <xs:attributeGroup ref="Location.group"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute name="reversedPathRendering" type="xs:boolean" use="optional"/> |
| <xs:attribute name="sx" type="xs:double" use="optional"/> |
| <xs:attribute name="sy" type="xs:double" use="optional"/> |
| <xs:attribute name="tx" type="xs:double" use="optional"/> |
| <xs:attribute name="ty" type="xs:double" use="optional"/> |
| </xs:complexType> |
| |
| |
| <!-- --> |
| <!-- Misc Types --> |
| <!-- --> |
| |
| <!-- color --> |
| |
| <xs:simpleType name="color.type"> |
| <xs:restriction base="xs:string"> |
| <xs:pattern value="#(([A-F]|[0-9]){2}){3,4}"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Style for a line --> |
| |
| <xs:complexType name="LineStyle.type"> |
| <xs:attribute name="color" type="color.type" use="optional"/> |
| <xs:attribute name="hasColor" type="xs:boolean" use="optional"/> |
| <xs:attribute name="type" type="lineType.type" use="optional"/> |
| <xs:attribute name="width" type="xs:double" use="optional"/> |
| </xs:complexType> |
| |
| <!-- drop shadow style --> |
| <xs:complexType name="DropShadow.type"> |
| <xs:attribute name="color" type="color.type" use="optional"/> |
| <xs:attribute name="offsetX" type="xs:byte" use="optional"/> |
| <xs:attribute name="offsetY" type="xs:byte" use="optional"/> |
| </xs:complexType> |
| |
| <!-- --> |
| <!-- Labels --> |
| <!-- --> |
| |
| <!-- Basic properties of all kind of labels --> |
| <xs:complexType name="Label.type"> |
| <xs:simpleContent> |
| <xs:extension base="xs:string"> |
| <xs:attributeGroup ref="OpRectangle.group"/> |
| <xs:attribute name="visible" type="xs:boolean" use="optional"/> |
| <xs:attribute name="alignment" type="alignment.type" use="optional"/> |
| <xs:attribute name="textColor" type="color.type" use="optional"/> |
| <xs:attribute name="lineColor" type="color.type" use="optional"/> |
| <xs:attribute name="hasLineColor" type="xs:boolean" use="optional"/> |
| <xs:attribute name="backgroundColor" type="color.type" use="optional"/> |
| <xs:attribute name="hasBackgroundColor" type="xs:boolean" use="optional"/> |
| <xs:attribute name="fontFamily" type="xs:string" use="optional"/> |
| <xs:attribute name="fontSize" type="xs:unsignedByte" use="optional"/> |
| <xs:attribute name="fontStyle" type="fontStyle.type" use="optional"/> |
| <xs:attribute name="rotationAngle" type="xs:double" use="optional"/> |
| <xs:attribute name="icon" type="xs:anyURI" use="optional"/> |
| <xs:attribute name="underlinedText" type="xs:boolean" use="optional"/> |
| <xs:attribute name="horizontalTextPosition" type="horizontalTextPosition.type" use="optional"/> |
| <xs:attribute name="verticalTextPosition" type="verticalTextPosition.type" use="optional"/> |
| <xs:attribute name="iconTextGap" type="xs:byte" use="optional"/> |
| </xs:extension> |
| </xs:simpleContent> |
| </xs:complexType> |
| |
| <!-- Node Labels --> |
| <xs:complexType name="NodeLabel.type"> |
| <xs:simpleContent> |
| <xs:extension base="Label.type"> |
| <xs:attribute name="modelName" type="nodeLabelModel.type" use="optional"/> |
| <xs:attribute name="modelPosition" type="nodeLabelPosition.type" use="optional"/> |
| <xs:attribute name="autoSizePolicy" type="autoSizePolicy.type" use="optional"/> |
| </xs:extension> |
| </xs:simpleContent> |
| </xs:complexType> |
| |
| <!-- Edge Labels --> |
| <xs:complexType name="EdgeLabel.type"> |
| <xs:simpleContent> |
| <xs:extension base="Label.type"> |
| <xs:attribute name="modelName" type="edgeLabelModel.type" use="optional"/> |
| <xs:attribute name="modelPosition" type="edgeLabelPosition.type" use="optional"/> |
| <xs:attribute name="preferredPlacement" type="preferredPlacement.type" use="optional"/> |
| <xs:attribute name="distance" type="xs:double" use="optional"/> |
| <xs:attribute name="ratio" type="xs:double" use="optional"/> |
| </xs:extension> |
| </xs:simpleContent> |
| </xs:complexType> |
| |
| <xs:complexType name="Geometry.type"> |
| <xs:attributeGroup ref="Rectangle.group"/> |
| </xs:complexType> |
| <!-- --> |
| <!-- Nodes --> |
| <!-- --> |
| |
| <!-- Generic attributes for all nodes --> |
| <xs:complexType name="Node.type"> |
| <xs:sequence> |
| <xs:element name="Geometry" minOccurs="0" maxOccurs="1" type="Geometry.type"/> |
| <xs:element name="Fill" minOccurs="0" maxOccurs="1"> |
| <xs:complexType> |
| <xs:attribute name="hasColor" type="xs:boolean" use="optional"/> |
| <xs:attribute name="color" type="xs:string" use="optional"/> |
| <xs:attribute name="color2" type="xs:string" use="optional"/> |
| <xs:attribute name="transparent" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="BorderStyle" type="LineStyle.type" minOccurs="0" maxOccurs="1"/> |
| <xs:element name="NodeLabel" type="NodeLabel.type" minOccurs="0" maxOccurs="1"/> |
| </xs:sequence> |
| <xs:attribute name="selected" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| |
| <!-- Shape Node --> |
| <xs:complexType name="ShapeNode.type"> |
| <xs:complexContent> |
| <xs:extension base="Node.type"> |
| <xs:sequence> |
| <xs:element name="Shape" minOccurs="0" maxOccurs="1"> |
| <xs:complexType> |
| <xs:attribute name="type" type="ShapeType.type" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="DropShadow" type="DropShadow.type" minOccurs="0" maxOccurs="1"/> |
| </xs:sequence> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| <!-- Image Node --> |
| <xs:complexType name="ImageNode.type"> |
| <xs:complexContent> |
| <xs:extension base="Node.type"> |
| <xs:sequence> |
| <xs:element name="Image"> |
| <xs:complexType> |
| <xs:attribute name="href" type="xs:anyURI" use="required"/> |
| <xs:attribute name="alphaImage" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| <!-- Group Node --> |
| <xs:complexType name="GroupNode.type"> |
| <xs:complexContent> |
| <xs:extension base="Node.type"> |
| <xs:sequence> |
| <xs:element name="State" minOccurs="0" maxOccurs="1"> |
| <xs:complexType> |
| <xs:attribute name="closed" type="xs:boolean" use="optional"/> |
| <xs:attribute name="innerGraphDisplayEnabled" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="Insets" minOccurs="0" maxOccurs="1"> |
| <xs:complexType> |
| <xs:attribute name="top" type="xs:nonNegativeInteger" use="required"/> |
| <xs:attribute name="bottom" type="xs:nonNegativeInteger" use="required"/> |
| <xs:attribute name="left" type="xs:nonNegativeInteger" use="required"/> |
| <xs:attribute name="right" type="xs:nonNegativeInteger" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="BorderInsets" minOccurs="0" maxOccurs="1"> |
| <xs:complexType> |
| <xs:attribute name="top" type="xs:nonNegativeInteger" use="required"/> |
| <xs:attribute name="bottom" type="xs:nonNegativeInteger" use="required"/> |
| <xs:attribute name="left" type="xs:nonNegativeInteger" use="required"/> |
| <xs:attribute name="right" type="xs:nonNegativeInteger" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| <!-- Proxy Shape Node --> |
| <xs:complexType name="ProxyShapeNode.type"> |
| <xs:sequence> |
| <xs:element name="Realizers"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:choice minOccurs="0" maxOccurs="unbounded"> |
| <xs:element ref="ShapeNode"/> |
| <xs:element ref="ImageNode"/> |
| <xs:element ref="GroupNode"/> |
| </xs:choice> |
| </xs:sequence> |
| <xs:attribute name="active" type="xs:nonNegativeInteger" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| </xs:complexType> |
| |
| <!-- Generic Node --> |
| <xs:complexType name="GenericNode.type"> |
| <xs:complexContent> |
| <xs:extension base="Node.type"> |
| <xs:sequence> |
| <xs:element name="UserData"> |
| <xs:complexType> |
| <xs:attribute name="class" type="xs:string" use="required"/> |
| <xs:attribute name="value" type="xs:string" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute name="configuration" type="xs:string" use="required"/> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| <!-- Element Definitions for Nodes --> |
| <xs:element name="ShapeNode" type="ShapeNode.type"/> |
| <xs:element name="ImageNode" type="ImageNode.type"/> |
| <xs:element name="GroupNode" type="GroupNode.type"/> |
| <xs:element name="GenericNode" type="GenericNode.type"/> |
| <xs:element name="ProxyShapeNode" type="ProxyShapeNode.type"/> |
| <xs:element name="ProxyAutoBoundsNode" type="ProxyShapeNode.type"/> |
| |
| <!-- --> |
| <!-- Edges --> |
| <!-- --> |
| |
| <!-- Generic attributes for all edges --> |
| <xs:complexType name="Edge.type"> |
| <xs:sequence> |
| <xs:element name="Path" type="Path.type" minOccurs="0" maxOccurs="1"/> |
| <xs:element name="LineStyle" type="LineStyle.type" minOccurs="0" maxOccurs="1"/> |
| <xs:element name="Arrows" minOccurs="0" maxOccurs="1"> |
| <xs:complexType> |
| <xs:attribute name="source" type="arrowType.type"/> |
| <xs:attribute name="target" type="arrowType.type"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="EdgeLabel" type="EdgeLabel.type" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| <xs:attribute name="selected" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| |
| <!-- Polyline edges --> |
| <xs:complexType name="PolyLineEdge.type"> |
| <xs:complexContent> |
| <xs:extension base="Edge.type"> |
| <xs:sequence> |
| <xs:element name="BendStyle"> |
| <xs:complexType> |
| <xs:attribute name="smoothed" type="xs:boolean" use="optional"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| |
| <!-- Type of Arc edges --> |
| <xs:simpleType name="arc.type"> |
| <xs:restriction base="xs:NMTOKEN"> |
| <xs:enumeration value="fixedHeight"/> |
| <xs:enumeration value="fixedRatio"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| <!-- Arc edges --> |
| <xs:complexType name="ArcEdge.type"> |
| <xs:complexContent> |
| <xs:extension base="Edge.type"> |
| <xs:sequence> |
| <xs:element name="Arc"> |
| <xs:complexType> |
| <xs:attribute name="type" type="arc.type" use="optional"/> |
| <xs:attribute name="height" type="xs:double" use="optional"/> |
| <xs:attribute name="ratio" type="xs:double" use="optional"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| <!-- QuadCurve edges --> |
| <xs:complexType name="QuadCurveEdge.type"> |
| <xs:complexContent> |
| <xs:extension base="Edge.type"> |
| <xs:attribute name="straightness" type="xs:double" use="optional"/> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| <!-- Generic edges --> |
| <xs:complexType name="GenericEdge.type"> |
| <xs:complexContent> |
| <xs:extension base="Edge.type"> |
| <xs:sequence> |
| <xs:element name="UserData"> |
| <xs:complexType> |
| <xs:attribute name="class" type="xs:string" use="required"/> |
| <xs:attribute name="value" type="xs:string" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute name="configuration" type="xs:string" use="required"/> |
| </xs:extension> |
| </xs:complexContent> |
| </xs:complexType> |
| |
| <!-- Element definitions for edges --> |
| <xs:element name="PolyLineEdge" type="PolyLineEdge.type"/> |
| <xs:element name="ArcEdge" type="ArcEdge.type"/> |
| <xs:element name="BezierEdge" type="Edge.type"/> |
| <xs:element name="SplineEdge" type="Edge.type"/> |
| <xs:element name="QuadCurveEdge" type="QuadCurveEdge.type"/> |
| <xs:element name="GenericEdge" type="GenericEdge.type"/> |
| |
| </xs:schema> |