blob: e7adc14864604eeab0d8d4a6868041b0a61613a2 [file] [log] [blame]
<?xml version="1.0"?>
<!-- Header -->
<xs:schema
targetNamespace="http://www.yworks.com/xml/graphml"
xmlns="http://www.yworks.com/xml/graphml"
xmlns:y="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:annotation>
<xs:documentation>
The valid line types for an edge or node realizer.
<p>
Valid values are:
<ul>
<li><b>line</b>: for a continous line</li>
<li><b>dashed</b>: for a dashed line</li>
<li><b>dotted</b>: for a dotted line</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The valid font types for a label.
<p>
Valid values are:
<ul>
<li><b>plain</b>: for a plain font</li>
<li><b>bold</b>: for a bold font</li>
<li><b>italic</b>: for an italic font</li>
<li><b>bolditalic</b>: for a bold and italic font</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="plain"/>
<xs:enumeration value="bold"/>
<xs:enumeration value="italic"/>
<xs:enumeration value="bolditalic"/>
</xs:restriction>
</xs:simpleType>
<!-- Shape of Shape Nodes -->
<xs:simpleType name="shapeType.type">
<xs:restriction base="xs:NMTOKEN">
<xs:annotation>
<xs:documentation>
The shape types for a ShapeNodeRealizer.
<p>
Valid values are:
<ul>
<li><b>rectangle</b>: for a rectangular shape</li>
<li><b>roundrectangle</b>: for a rectangular shape with rounded corners</li>
<li><b>ellipse</b>: for an elliptical shape</li>
<li><b>parallelogram</b>: for a parallelogram shape</li>
<li><b>hexagon</b>: for a hexagonal shape</li>
<li><b>octagon</b>: for a octagonal shape</li>
<li><b>diamond</b>: for a diamond shape</li>
<li><b>triangle</b>: for a triangular shape</li>
<li><b>trapezoid</b>: for a trapezoidal shape, whose upper line is half as long as its lower line</li>
<li><b>trapezoid2</b>: for a trapezoidal shape, whose lower line is half as long as its upper line</li>
<li><b>rectangle3d</b>: for a rectangular shape with 3D-ish looks</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The arrow types for EdgeRealizers.
<p>
Valid values are:
<ul>
<li><b>standard</b>: for the default arrow</li>
<li><b>delta</b>: for a triangular arrow shape</li>
<li><b>white_delta</b>: like delta, but filled white</li>
<li><b>diamond</b>: for a diamond arrow shape</li>
<li><b>white_diamond</b>: like diamond, but filled white</li>
<li><b>none</b>: for no arrow</li>
<li><b>plain</b>: for the plain arrow</li>
<li><b>concave</b>: for a concave arrow</li>
<li><b>convex</b>: for a convex arrow</li>
<li><b>circle</b>: for a circle arrow</li>
<li><b>dash</b>: for a dash arrow</li>
<li><b>transparent_circle</b>: for a transparent circle arrow</li>
<li><b>skewed_dash</b>: for a skewed dash arrow</li>
<li><b>t_shape</b>: for a T-shaped arrow</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:enumeration value="plain"/>
<xs:enumeration value="concave"/>
<xs:enumeration value="convex"/>
<xs:enumeration value="circle"/>
<xs:enumeration value="dash"/>
<xs:enumeration value="transparent_circle"/>
<xs:enumeration value="skewed_dash"/>
<xs:enumeration value="t_shape"/>
</xs:restriction>
</xs:simpleType>
<!-- Alignment of Labels -->
<xs:simpleType name="alignment.type">
<xs:annotation>
<xs:documentation>
The valid alignemts for labels.
<p>
Valid values are:
<ul>
<li><b>center</b>: center alignment</li>
<li><b>left</b>: left alignment</li>
<li><b>right</b>: right alignment</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The valid label models for node labels.
<p>
Valid values are:
<ul>
<li><b>free</b>: free model</li>
<li><b>sides</b>: sides model</li>
<li><b>corners</b>: corners model</li>
<li><b>eight_pos</b>: sides+corners model</li>
<li><b>sandwich</b>: sandwich model</li>
<li><b>internal</b>: internal model</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The valid label positions for node labels.
<p>
<b>Note:</b>
For a given node label model, the set of valid
label positions is a subset of this enumeration that depends on the
actual node label model.
</p>
<p>
Valid values are:
<ul>
<li><b>n</b>: north (outside)</li>
<li><b>nw</b>: north west (outside)</li>
<li><b>ne</b>: north east(outside)</li>
<li><b>w</b>: west (outside)</li>
<li><b>e</b>: east (outside)</li>
<li><b>sw</b>: south west (outside)</li>
<li><b>s</b>: south (outside)</li>
<li><b>se</b>: south east (outside)</li>
<li><b>c</b>: center (inside)</li>
<li><b>tl</b>: top left (inside)</li>
<li><b>t</b>: top (inside)</li>
<li><b>tr</b>: top right (inside)</li>
<li><b>r</b>: right (inside)</li>
<li><b>l</b>: left (inside)</li>
<li><b>bl</b>: bottom left (inside)</li>
<li><b>b</b>: bottom (inside)</li>
<li><b>br</b>: bottom right (inside)</li>
<li><b>anywhere</b>: anywhere</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The auto size policies for node labels.
<p>
Valid values are:
<ul>
<li><b>node_width</b>: resize to node width</li>
<li><b>node_height</b>:resize to node height</li>
<li><b>content</b>: resize to content size</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The valid label models for node labels.
<p>
Valid values are:
<ul>
<li><b>centered</b>: edge center</li>
<li><b>center_slider</b>: edge center, freeley movable</li>
<li><b>side_slider</b>: edge side, freely movable</li>
<li><b>free</b>: free model</li>
<li><b>two_pos</b>: source or target only</li>
<li><b>three_center</b>: three positions at edge center</li>
<li><b>six_pos</b>: three positions at either source or target</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The valid label positions for edge labels.
<p>
<b>Note:</b>
For a given edge label model, the set of valid
label positions is a subset of this enumeration that depends on the
actual edge label model.
</p>
<p>
Valid values are:
<ul>
<li><b>center</b>: at source on the edge segment</li>
<li><b>tcentr</b>: at target on the edge segment</li>
<li><b>scentr</b>: at center on the edge segment</li>
<li><b>stail</b>: at source below the edge segment</li>
<li><b>ttail</b>: at target below the edge segment</li>
<li><b>tail</b>: at center below the edge segment</li>
<li><b>shead</b>: at source above the edge segment</li>
<li><b>thead</b>: at target above the edge segment</li>
<li><b>head</b>: at center above the edge segment</li>
<li><b>anywhere</b>: anywhere</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The valid preferred label positions for edge labels.
<p>
<b>Note:</b>
For a given edge label model, the set of valid
preferred label positions is a subset of this enumeration that depends on the
actual edge label model. This value is evaluated by automatic label layout algorithms and may differ
from the actual label position.
</p>
<p>
Valid values are:
<ul>
<li><b>target_right</b>: at target right from the edge segment</li>
<li><b>target</b>: anywhere at the target</li>
<li><b>target_left</b>: at target left from the edge segment</li>
<li><b>target_on_edge</b>: at target on the edge segment</li>
<li><b>source_right</b>: at source right from the edge segment</li>
<li><b>source</b>: anywhere at the source</li>
<li><b>source_left</b>: at source left from the edge segment</li>
<li><b>source_on_edge</b>: at source on the edge segment</li>
<li><b>center_right</b>: at center right from the edge segment</li>
<li><b>center</b>: anywhere at the center</li>
<li><b>center_left</b>: at center left from the edge segment</li>
<li><b>center_on_edge</b>: at center on the edge segment</li>
<li><b>anywhere</b>: anywhere</li>
<li><b>on_edge</b>: anywhere on the edge</li>
<li><b>left</b>: anywhere left from the edge</li>
<li><b>right</b>: anywhere right from the edge</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="target_right"/>
<xs:enumeration value="target"/>
<xs:enumeration value="target_left"/>
<xs:enumeration value="target_on_edge"/>
<xs:enumeration value="source_right"/>
<xs:enumeration value="source"/>
<xs:enumeration value="source_left"/>
<xs:enumeration value="source_on_edge"/>
<xs:enumeration value="center_right"/>
<xs:enumeration value="center"/>
<xs:enumeration value="center_left"/>
<xs:enumeration value="center_on_edge"/>
<xs:enumeration value="anywhere"/>
<xs:enumeration value="on_edge"/>
<xs:enumeration value="left"/>
<xs:enumeration value="right"/>
</xs:restriction>
</xs:simpleType>
<!-- horizontalTextPosition value type for labels -->
<xs:simpleType name="horizontalTextPosition.type">
<xs:annotation>
<xs:documentation>
The valid horizontal text vs. icon alignements for labels.
<p>
Valid values are:
<ul>
<li><b>left</b>: place text to the left of the icon</li>
<li><b>right</b>: place text to the right of the icon</li>
<li><b>center</b>: place text on center of the icon</li>
<li><b>left_aligned</b>: align text to the left of the icon</li>
<li><b>right_aligned</b>: align text to the right of the icon</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
The valid vertical text vs. icon alignements for labels.
<p>
Valid values are:
<ul>
<li><b>top</b>: place text above the icon</li>
<li><b>bottom</b>: place text below the icon</li>
<li><b>center</b>: place text on center of the icon</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
Attribute group that describes a two-dimensional location, specified by the x and y attribute.
</xs:documentation>
</xs:annotation>
<xs:attribute name="x" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>
The x coordinate of the point.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="y" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>
The y coordinate of the point.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<!-- Location defined by x,y coordinates and width,height -->
<xs:attributeGroup name="Rectangle.group">
<xs:annotation>
<xs:documentation>
Attribute group that describes a two-dimensional rectangle.
<p>
The location is specified by the x and y attribute, the dimension by the width and height attributes.
</p>
</xs:documentation>
</xs:annotation>
<xs:attribute name="x" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>
The x coordinate of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="y" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>
The y coordinate of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="width" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>
The width of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="height" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>
The height of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<!-- type for required rectangles -->
<xs:complexType name="Rectangle.type">
<xs:annotation>
<xs:documentation>
Type definition for rectangles.
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="Rectangle.group"/>
</xs:complexType>
<!-- type for optional rectangles -->
<xs:attributeGroup name="OpRectangle.group">
<xs:annotation>
<xs:documentation>
Attribute group that describes a two-dimensional rectangle, where attribtue values are optional.
<p>
The location is specified by the x and y attribute, the dimension by the width and height attributes.
</p>
</xs:documentation>
</xs:annotation>
<xs:attribute name="x" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The x coordinate of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="y" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The y coordinate of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="width" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The width of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="height" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The height of the rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<!-- type for a path -->
<xs:complexType name="Path.type">
<xs:annotation>
<xs:documentation>
Attribute group that describes a two-dimensional path, consisting of a point list together with optional source
and target locations.
<p>
The source resp. target location is specified by the sx and sy resp. tx and ty attributes.
</p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Point" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Single control point for two dimensional paths.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attributeGroup ref="Location.group"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="reversedPathRendering" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
true iff the path should be rendered in reverse order.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sx" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The x coordinate of the source point.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sy" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The y coordinate of the source point.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="tx" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The x coordinate of the target point.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ty" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The y coordinate of the target point.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- -->
<!-- Misc Types -->
<!-- -->
<!-- color -->
<xs:simpleType name="color.type">
<xs:annotation>
<xs:documentation>
Simple type that encodes a color value.
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
Complex type that describes the attributes of a line style.
</xs:documentation>
</xs:annotation>
<xs:attribute name="color" type="color.type" use="optional">
<xs:annotation>
<xs:documentation>
The color of the line.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="hasColor" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the line has a color set. If false, the line is invisible.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="lineType.type" use="optional">
<xs:annotation>
<xs:documentation>
The type of the line.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="width" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The width of the line.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- drop shadow style -->
<xs:complexType name="DropShadow.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a drop shadow.
</xs:documentation>
</xs:annotation>
<xs:attribute name="color" type="color.type" use="optional">
<xs:annotation>
<xs:documentation>
The color of the drop shadow.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="offsetX" type="xs:byte" use="optional">
<xs:annotation>
<xs:documentation>
The offset in x direction.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="offsetY" type="xs:byte" use="optional">
<xs:annotation>
<xs:documentation>
The offset in y direction.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- -->
<!-- Labels -->
<!-- -->
<!-- Basic properties of all kind of labels -->
<xs:complexType name="Label.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the common attributes of node and edge labels.
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="OpRectangle.group"/>
<xs:attribute name="visible" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the label is visible or not.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="alignment" type="alignment.type" use="optional">
<xs:annotation>
<xs:documentation>
The alignment of the label.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="textColor" type="color.type" use="optional">
<xs:annotation>
<xs:documentation>
The text color of the label.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="lineColor" type="color.type" use="optional">
<xs:annotation>
<xs:documentation>
The border color of the label's content rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="hasLineColor" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the label border should be painted.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="backgroundColor" type="color.type" use="optional">
<xs:annotation>
<xs:documentation>
The background color of the label's content rectangle.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="hasBackgroundColor" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the label background should be painted.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fontFamily" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>
The font family for the label text.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fontSize" type="xs:unsignedByte" use="optional">
<xs:annotation>
<xs:documentation>
The font size for the label text.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fontStyle" type="fontStyle.type" use="optional">
<xs:annotation>
<xs:documentation>
The font style for the label text.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="rotationAngle" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The rotation angle style for the label.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="icon" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>
The URL of an icon for the label.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="image" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>
Reference to an embedded image resource.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="iconData" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>
Reference to an embedded arbitrary serializable resource.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="underlinedText" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether to underline the label text.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="horizontalTextPosition" type="horizontalTextPosition.type" use="optional">
<xs:annotation>
<xs:documentation>
The horizontal text position wrt to an optional icon.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="verticalTextPosition" type="verticalTextPosition.type" use="optional">
<xs:annotation>
<xs:documentation>
The vertical text position wrt to an optional icon.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="iconTextGap" type="xs:byte" use="optional">
<xs:annotation>
<xs:documentation>
The distance between the label text and an optional icon.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Node Labels -->
<xs:complexType name="NodeLabel.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the additional attributes of node labels.
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="Label.type">
<xs:attribute name="modelName" type="nodeLabelModel.type" use="optional">
<xs:annotation>
<xs:documentation>
The label model.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="modelPosition" type="nodeLabelPosition.type" use="optional">
<xs:annotation>
<xs:documentation>
The actual label position in the current label model.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="autoSizePolicy" type="autoSizePolicy.type" use="optional">
<xs:annotation>
<xs:documentation>
The auto size policy of the label.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Edge Labels -->
<xs:complexType name="EdgeLabel.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the additional attributes of edge labels.
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="Label.type">
<xs:attribute name="modelName" type="edgeLabelModel.type" use="optional">
<xs:annotation>
<xs:documentation>
The label model.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="modelPosition" type="edgeLabelPosition.type" use="optional">
<xs:annotation>
<xs:documentation>
The actual label position in the current label model.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="preferredPlacement" type="preferredPlacement.type" use="optional">
<xs:annotation>
<xs:documentation>
The preferred label position in the current label model.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="distance" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The current label distance from the edge.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ratio" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The current label position along the edge, expressed as ratio from source to target.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="Geometry.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the geometry of simple graph elements.
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="Rectangle.group"/>
</xs:complexType>
<!-- -->
<!-- Nodes -->
<!-- -->
<!-- Generic attributes for all nodes -->
<xs:complexType name="Node.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the common attributes of a node realizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Geometry" minOccurs="0" maxOccurs="1" type="Geometry.type">
<xs:annotation>
<xs:documentation>
The location and size of the node.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Fill" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The fill attributes of the node.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="hasColor" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the node has a visible fill color.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="color" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>
The first fill color.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="color2" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>
The second fill color (for gradient fills).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="transparent" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the node is transparent.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="BorderStyle" type="LineStyle.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The LineStyle of the border.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="NodeLabel" type="NodeLabel.type" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
The (optional) node label.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="selected" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the node is currently selected.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Shape Node -->
<xs:complexType name="ShapeNode.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a ShapeNodeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Node.type">
<xs:sequence>
<xs:element name="Shape" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The actual shape of a ShapeNodeRealizer.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="type" type="shapeType.type" use="required">
<xs:annotation>
<xs:documentation>
The shape type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="DropShadow" type="DropShadow.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The drop shadow.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Image Node -->
<xs:complexType name="ImageNode.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of an ImageNodeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Node.type">
<xs:sequence>
<xs:element name="Image">
<xs:annotation>
<xs:documentation>
Encodes an image for an ImageNodeRealizer.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="href" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>
The URL of an image for external image sources.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="alphaImage" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether to use alpha channel information from the image.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="refid" use="optional">
<xs:annotation>
<xs:documentation>
Reference to an inlined image resource.
<p>The refid must point to an existing inlined image resource in a toplevel graphml y:Resource
block.
</p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Insets.type">
<xs:annotation>
<xs:documentation>
Type that can be used to describe insets in both integer and double precision.
</xs:documentation>
</xs:annotation>
<xs:attribute name="top" type="xs:nonNegativeInteger" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the top in integer precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="bottom" type="xs:nonNegativeInteger" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the bottom in integer precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="left" type="xs:nonNegativeInteger" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the left in integer precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="right" type="xs:nonNegativeInteger" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the right in integer precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="topF" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the top in double precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="bottomF" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the bottom in double precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="leftF" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the left in double precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="rightF" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The minimal inset at the right in double precision.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Group Node -->
<xs:complexType name="GroupNode.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a GroupNodeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Node.type">
<xs:sequence>
<xs:element name="Shape" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The actual shape of a GroupNodeRealizer.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="type" type="shapeType.type" use="required">
<xs:annotation>
<xs:documentation>
The shape type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="DropShadow" type="DropShadow.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The drop shadow.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="State" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The state of a GroupNodeRealizer (open/closed etc.).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="closed" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the group is currently closed.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="innerGraphDisplayEnabled" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether to display the inner graph even in closed state.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Insets" type="Insets.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The minimal insets of a GroupNodeRealizer.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BorderInsets" type="Insets.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The extra insets of a GroupNodeRealizer.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Proxy Shape Node -->
<xs:complexType name="ProxyShapeNode.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a ProxyShapeNodeRealizer in yFiles.
<p>This Realizer can multiplex between several different realizers for a node.</p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Realizers">
<xs:annotation>
<xs:documentation>
List of subordinate realizers for this node realizer.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
<xs:attribute name="active" type="xs:nonNegativeInteger" use="required">
<xs:annotation>
<xs:documentation>
The list index of the currently active realizer (zero based).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="UserData.type">
<xs:annotation>
<xs:documentation>
Type for the UserData that holds the actual state of a generic Node or Edge Realizer.
</xs:documentation>
</xs:annotation>
<xs:attribute name="class" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Class name of the data holder instance.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
String representation of the user data value.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Generic Node -->
<xs:complexType name="GenericNode.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a GenericNodeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Node.type">
<xs:sequence>
<xs:element name="UserData" type="UserData.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Represents the UserData that holds the actual state of this realizer instance.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="configuration" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the configuration. This configuration must have been registered previously.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Generic Group Node -->
<xs:complexType name="GenericGroupNode.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a GenericGroupNodeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="GenericNode.type">
<xs:sequence>
<xs:element name="State" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The state of a GenericGroupNodeRealizer (open/closed etc.).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="closed" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the group is currently closed.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="autoResize" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the group node should automatically resize itself.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="closedHeight" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The height of the group node in closed state.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="closedWidth" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The width of the group node in closed state.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Insets" type="Insets.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The minimal insets of a GroupNodeRealizer.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BorderInsets" type="Insets.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The extra insets of a GroupNodeRealizer.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Element Definitions for Nodes -->
<xs:element name="ShapeNode" type="ShapeNode.type">
<xs:annotation>
<xs:documentation>
ShapeNodeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageNode" type="ImageNode.type">
<xs:annotation>
<xs:documentation>
ImageNodeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GroupNode" type="GroupNode.type">
<xs:annotation>
<xs:documentation>
GroupNodeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GenericNode" type="GenericNode.type">
<xs:annotation>
<xs:documentation>
GenericNodeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GenericGroupNode" type="GenericGroupNode.type">
<xs:annotation>
<xs:documentation>
GenericGroupNodeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ProxyShapeNode" type="ProxyShapeNode.type">
<xs:annotation>
<xs:documentation>
ProxyShapeNodeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ProxyAutoBoundsNode" type="ProxyShapeNode.type">
<xs:annotation>
<xs:documentation>
ProxyAutoBoundsNodeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- -->
<!-- Edges -->
<!-- -->
<!-- Generic attributes for all edges -->
<xs:complexType name="Edge.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the common attributes of an edge realizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Path" type="Path.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The edge path.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="LineStyle" type="LineStyle.type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The line style used to draw the edge.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Arrows" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
The source and target arrows.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="source" type="arrowType.type">
<xs:annotation>
<xs:documentation>
The source arrow type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="target" type="arrowType.type">
<xs:annotation>
<xs:documentation>
The target arrow type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="EdgeLabel" type="EdgeLabel.type" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
The edge label(s).
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="selected" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether the edge currently is selected.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Polyline edges -->
<xs:complexType name="PolyLineEdge.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a PolylineEdgeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Edge.type">
<xs:sequence>
<xs:element name="BendStyle">
<xs:annotation>
<xs:documentation>
The style used to draw the bends.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="smoothed" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>
Whether to draw smooth instead of angular bends.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Type of Arc edges -->
<xs:simpleType name="arc.type">
<xs:annotation>
<xs:documentation>
The arc types for ArcEdgeRealizers.
<p>
Valid values are:
<ul>
<li><b>fixedHeight</b>: fixed height, but variable ratio</li>
<li><b>fixedRatio</b>: fixed ration, but variable height</li>
</ul>
</p>
</xs:documentation>
</xs:annotation>
<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:annotation>
<xs:documentation>
Complex type that describes the attributes of an ArcEdgeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Edge.type">
<xs:sequence>
<xs:element name="Arc">
<xs:annotation>
<xs:documentation>
The Arc.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="type" type="arc.type" use="optional">
<xs:annotation>
<xs:documentation>
The arc type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="height" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The current height of the arc.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ratio" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The current ratio of the arc.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- QuadCurve edges -->
<xs:complexType name="QuadCurveEdge.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of a QuadCurveEdgeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Edge.type">
<xs:attribute name="straightness" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>
The straightness of the curve.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Generic edges -->
<xs:complexType name="GenericEdge.type">
<xs:annotation>
<xs:documentation>
Complex type that describes the attributes of an GenericEdgeRealizer in yFiles.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Edge.type">
<xs:sequence>
<xs:element name="UserData">
<xs:annotation>
<xs:documentation>
Represents the UserData that holds the actual state of this realizer instance.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="class" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Class name of the data holder instance.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
String representation of the user data value.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="configuration" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The name of the configuration. This configuration must have been registered previously.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Element definitions for edges -->
<xs:element name="PolyLineEdge" type="PolyLineEdge.type">
<xs:annotation>
<xs:documentation>
PolyLineEdgeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ArcEdge" type="ArcEdge.type">
<xs:annotation>
<xs:documentation>
ArcEdgeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BezierEdge" type="Edge.type">
<xs:annotation>
<xs:documentation>
BezierEdgeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SplineEdge" type="Edge.type">
<xs:annotation>
<xs:documentation>
SplineEdgeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="QuadCurveEdge" type="QuadCurveEdge.type">
<xs:annotation>
<xs:documentation>
QuadCurveEdgeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GenericEdge" type="GenericEdge.type">
<xs:annotation>
<xs:documentation>
GenericEdgeRealizer element definition.
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- Shared resource block definitions -->
<xs:complexType name="Resource.type" mixed="true">
<xs:annotation>
<xs:documentation>
Complex type for a shared resource element inside a resource block container.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:annotation>
<xs:documentation>
The actual content. Note that arbitrary (wellformed) content is allowed here.
</xs:documentation>
</xs:annotation>
<xs:any minOccurs="0" maxOccurs="1" processContents="skip"/>
</xs:sequence>
<xs:attribute name="id" use="required">
<xs:annotation>
<xs:documentation>
The id of the shared resource. Needed to reference this resource.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" use="optional">
<xs:annotation>
<xs:documentation>
The type of the shared resource.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="format" use="optional">
<xs:annotation>
<xs:documentation>
The format of the shared resource.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ResourceBlock.type">
<xs:annotation>
<xs:documentation>
Complex type for a shared resource block container.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Resource" type="Resource.type" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
A shared resource element.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="Resources" type="ResourceBlock.type">
<xs:annotation>
<xs:documentation>
Resource block element definition.
</xs:documentation>
</xs:annotation>
<xs:key name="resource_id_key">
<xs:annotation>
<xs:documentation>
Ensures: existence and uniqueness of the id attributes of
each &lt;Resource> element in this resource block.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//y:Resource"/>
<xs:field xpath="@id"/>
</xs:key>
</xs:element>
</xs:schema>