--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="attributes.xslt" type="text/xsl"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ xmlns:gv="urn:graphviz">
+
+ <!--
+ microformats in xsd:documentation
+ ========================================
+
+ class
+ val: a value of the enclosing attribute
+
+ rel
+ attr: link to an attribute
+ type: link to an attribute type
+
+ -->
+
+ <!-- NOTES -->
+ <xsd:annotation id="introduction">
+ <xsd:documentation>
+ <html:p>
+ All Graphviz attributes are specified by name-value pairs. Thus, to
+ set the fillcolor of a node <html:code>abc</html:code>, one would use
+ </html:p>
+ <html:p>
+ <html:code>abc [fillcolor = red]</html:code>
+ </html:p>
+ <html:p>
+ Similarly, to set the arrowhead style of an edge <html:code>abc -> def</html:code>,
+ one would use
+ </html:p>
+ <html:p>
+ <html:code>abc -> def [arrowhead = diamond]</html:code>
+ </html:p>
+ <html:p>
+ Further details concerning the setting of attributes can be found
+ in the description of the
+ <html:a href="http://www.graphviz.org/doc/info/lang.html">DOT language.</html:a>
+ </html:p>
+ </xsd:documentation> </xsd:annotation>
+
+ <xsd:annotation id="points">
+ <xsd:documentation>
+ <html:p>
+ At present, most device-independent units are either inches or
+ <html:a href="http://en.wikipedia.org/wiki/Point_(typography)">points</html:a>,
+ which we take as 72 points per inch.
+ </html:p>
+ </xsd:documentation>
+
+ </xsd:annotation>
+
+ <xsd:annotation id="undirected">
+ <xsd:documentation>
+ <html:p>
+ Some attributes, such as
+ <html:a rel="attr">dir</html:a> or <html:a rel="attr">arrowtail</html:a>, are
+ ambiguous when used in
+ <html:a href="http://www.graphviz.org/doc/info/lang.html">DOT</html:a>
+ with an undirected graph since the head and tail of an edge are meaningless.
+ As a convention, the first time an undirected edge appears, the
+ <html:a href="http://www.graphviz.org/doc/info/lang.html">DOT</html:a>
+ parser will assign the left node as the tail node and the right node as
+ the head. For example, the edge <html:code>A -- B</html:code> will have tail <html:code>A</html:code>
+ and head <html:code>B</html:code>. It is the user's responsibility to handle such
+ edges consistently. If the edge appears later, in the format
+ </html:p>
+ <html:p>
+ <html:code>B -- A [taillabel = "tail"]</html:code>
+ </html:p>
+ <html:p>
+ the drawing will attach the tail label to node <html:code>A</html:code>.
+ To avoid possible confusion when such attributes are required, the user
+ is encouraged to use a directed graph.
+ If it is important to make the graph appear undirected, this can be
+ done using the <html:a rel="attr">dir</html:a>, <html:a rel="attr">arrowtail</html:a>
+ or <html:a rel="attr">arrowhead</html:a> attributes.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <!-- ATTRIBUTE TYPES -->
+
+ <!--
+ <xsd:simpleType name="arrowType">
+ </xsd:simpleType>
+ -->
+
+ <xsd:simpleType name="clusterMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="local" />
+ <xsd:enumeration value="global" />
+ <xsd:enumeration value="none" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!--
+ <xsd:simpleType name="color">
+ </xsd:simpleType>
+ -->
+
+ <xsd:simpleType name="colorList">
+ <xsd:list itemType="color" />
+ </xsd:simpleType>
+
+ <xsd:simpleType name="dirType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ For undirected edges <html:code>T -- H;</html:code>, one of the nodes, usually
+ the righthand one, is treated as the head for the purpose of
+ interpreting <html:span class="val">forward</html:span> and <html:span class="val">back</html:span>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="forward" />
+ <xsd:enumeration value="back" />
+ <xsd:enumeration value="both" />
+ <xsd:enumeration value="none" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="escString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ String allowing escape sequences which are replaced according
+ to the context.
+ For node attributes, the substring <html:code>\N</html:code> is replaced by the name of the node,
+ and the substring <html:code>\G</html:code> by the name of the graph.
+ For graph or cluster attributes, the substring <html:code>\G</html:code> is replaced by the
+ name of the graph or cluster.
+ For edge attributes, the substring <html:code>\E</html:code> is replaced by the name of the edge,
+ the substring <html:code>\G</html:code> is replaced by the name of the graph or cluster,
+ and the substrings <html:code>\T</html:code> and <html:code>\H</html:code> by the names of
+ the tail and head nodes, respectively.
+ The name of an edge is the string formed from the name of the
+ tail node, the appropriate edge operator (<html:code>--</html:code> or <html:code>-></html:code>) and the name of the
+ head node.
+ </html:p>
+ <html:p>
+ In addition, if the associated attribute is
+ <html:a rel="attr">label</html:a>,
+ <html:a rel="attr">headlabel</html:a> or <html:a rel="attr">taillabel</html:a>,
+ the escape sequences <html:code>\n</html:code>, <html:code>\l</html:code> and <html:code>\r</html:code>
+ divide the label into lines, centered, left-justified, and right-justified,
+ respectively.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string" />
+ </xsd:simpleType>
+ <!--
+ layerList
+ layerRange
+ lblString
+ -->
+
+ <xsd:simpleType name="outputMode">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ These specify the order in which nodes and edges are drawn in concrete
+ output. The default <html:span class="val">breadthfirst</html:span> is the simplest, but when the graph
+ layout does not avoid edge-node overlap, this mode will sometimes have
+ edges drawn over nodes and sometimes on top of nodes. If the mode
+ <html:span class="val">nodesfirst</html:span> is chosen, all nodes are drawn first, followed by the
+ edges. This guarantees an edge-node overlap will not be mistaken for
+ an edge ending at a node. On the other hand, usually for aesthetic
+ reasons, it may be desirable that all edges appear beneath nodes, even
+ if the resulting drawing is ambiguous. This can be achieved by choosing
+ <html:span class="val">edgesfirst</html:span>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="breadthfirst" />
+ <xsd:enumeration value="nodesfirst" />
+ <xsd:enumeration value="edgesfirst" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="packMode">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ These specify the granularity of packing connected components when
+ the <html:a rel="attr">pack</html:a> attribute is true. A value of <html:span class="val">node</html:span> causes
+ packing at the node and edge label, with no overlapping of these objects.
+ This produces a layout with the least area, but it also allows interleaving,
+ where a node of one component may lie between two nodes in another
+ component. A value of <html:span class="val">graph</html:span> does a packing using the bounding box of the
+ component. Thus, there will be a rectangular region around a component
+ free of elements of any other component.
+ A value of <html:span class="val">clust</html:span> guarantees that top-level clusters are kept intact.
+ What effect a value has also depends on the layout algorithm. For
+ example, neato does not support clusters, so a value of <html:span class="val">clust</html:span> will
+ have the same effect as the default <html:span class="val">node</html:span> value.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="node" />
+ <xsd:enumeration value="clust" />
+ <xsd:enumeration value="graph" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="pagedir">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ These specify the 8 row or column major orders for traversing a
+ rectangular array, the first character corresponding to the major
+ order and the second to the minor order. Thus, for "BL", the
+ major order is from bottom to top, and the minor order is from left
+ to right. This means the bottom row is traversed first, from left
+ to right, then the next row up, from left to right, and so on,
+ until the topmost row is traversed.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="BL" />
+ <xsd:enumeration value="BR" />
+ <xsd:enumeration value="TL" />
+ <xsd:enumeration value="TR" />
+ <xsd:enumeration value="RB" />
+ <xsd:enumeration value="RT" />
+ <xsd:enumeration value="LB" />
+ <xsd:enumeration value="LT" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!--
+ point
+ pointf
+ -->
+
+ <xsd:simpleType name="pointfList">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ List of <html:a rel="type">pointf</html:a>, separated by spaces.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:list itemType="pointf" />
+ </xsd:simpleType>
+ <!--
+ portPos
+ -->
+
+ <xsd:simpleType name="rankType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="same" />
+ <xsd:enumeration value="min" />
+ <xsd:enumeration value="source" />
+ <xsd:enumeration value="max" />
+ <xsd:enumeration value="sink" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="rankdir">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Corresponding to directed graphs drawn
+ from top to bottom, from left to right, from bottom to top, and from
+ right to left, respectively.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="TB" />
+ <xsd:enumeration value="LR" />
+ <xsd:enumeration value="BT" />
+ <xsd:enumeration value="RL" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!--
+ rect
+ -->
+
+ <xsd:simpleType name="shape">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="box" />
+ <xsd:enumeration value="polygon" />
+ <xsd:enumeration value="ellipse" />
+ <xsd:enumeration value="circle" />
+ <xsd:enumeration value="point" />
+ <xsd:enumeration value="egg" />
+ <xsd:enumeration value="triangle" />
+ <xsd:enumeration value="plaintext" />
+ <xsd:enumeration value="diamond" />
+ <xsd:enumeration value="trapezium" />
+ <xsd:enumeration value="parallelogram" />
+ <xsd:enumeration value="house" />
+ <xsd:enumeration value="pentagon" />
+ <xsd:enumeration value="hexagon" />
+ <xsd:enumeration value="septagon" />
+ <xsd:enumeration value="octagon" />
+ <xsd:enumeration value="doublecircle" />
+ <xsd:enumeration value="doubleoctagon" />
+ <xsd:enumeration value="tripleoctagon" />
+ <xsd:enumeration value="invtriangle" />
+ <xsd:enumeration value="invtrapezium" />
+ <xsd:enumeration value="invhouse" />
+ <xsd:enumeration value="Mdiamond" />
+ <xsd:enumeration value="Msquare" />
+ <xsd:enumeration value="Mcircle" />
+ <xsd:enumeration value="rect" />
+ <xsd:enumeration value="rectangle" />
+ <xsd:enumeration value="none" />
+ <xsd:enumeration value="note" />
+ <xsd:enumeration value="tab" />
+ <xsd:enumeration value="box3d" />
+ <xsd:enumeration value="component" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!--
+ splineType
+ startType
+ style
+ viewPort
+ -->
+
+ <!-- ATTRIBUTES -->
+
+ <xsd:attribute name="Damping" type="xsd:decimal" default="0.99" gv:layouts="neato">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Factor damping force motions. On each iteration, a nodes movement
+ is limited to this factor of its potential motion. By being less than
+ 1.0, the system tends to "cool", thereby preventing cycling.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="K" type="xsd:decimal" default="0.3" gv:layouts="fdp">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Spring constant used in virtual physical model. It roughly corresponds
+ to an ideal edge length (in inches), in that increasing K tends to
+ increase the distance between nodes.
+ Note that the edge attribute <html:a rel="attr">len</html:a> can be used to
+ override this value for adjacent nodes.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="URL" type="xsd:anyURI" gv:formats="svg ps ps2 map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Hyperlinks incorporated into device-dependent output.
+ At present, used in ps2, cmap, i*map and svg formats.
+ For all these formats, URLs can be attached to nodes, edges and
+ clusters. URL attributes can also be attached to the root graph in ps2,
+ cmap and i*map formats. This serves as the base URL for relative URLs in the
+ former, and as the default image map file in the latter.
+ </html:p>
+ <html:p>
+ For svg, cmapx and imap output, the active area for a node is its
+ visible image.
+ For example, an unfilled node with no drawn boundary will only be active on its label.
+ For other output, the active area is its bounding box.
+ The active area for a cluster is its bounding box.
+ For edges, the active areas are small circles where the edge contacts its head
+ and tail nodes. In addition, for svg, cmapx and imap, the active area
+ includes a thin polygon approximating the edge. The circles may
+ overlap the related node, and the edge URL dominates.
+ If the edge has a label, this will also be active.
+ Finally, if the edge has a head or tail label, this will also be active.
+ </html:p>
+ <html:p>
+ Note that, for edges, the attributes <html:a rel="attr">headURL</html:a>,
+ <html:a rel="attr">tailURL</html:a>, <html:a rel="attr">labelURL</html:a> and
+ <html:a rel="attr">edgeURL</html:a> allow control of various parts of an
+ edge. Also note that, if active areas of two edges overlap, it is unspecified
+ which area dominates.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="arrowhead" type="arrowType" default="normal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Style of arrowhead on the head node of an edge.
+ See also the <html:a rel="attr">dir</html:a> attribute,
+ and the <html:a rel="note">undirected</html:a> note.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="arrowsize" type="xsd:decimal" default="1.0">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Multiplicative scale factor for arrowheads.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="arrowtail" type="arrowType" default="normal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Style of arrowhead on the tail node of an edge.
+ See also the <html:a rel="attr">dir</html:a> attribute,
+ and the <html:a rel="note">undirected</html:a> note.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="bb" type="rect">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Bounding box of drawing in integer points.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="bgcolor" type="color">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ When attached to the root graph, this color is used as the background for
+ entire canvas. When a cluster attribute, it is used as the initial
+ background for the cluster. If a cluster has a filled
+ <html:a rel="attr">style</html:a>, the
+ cluster's <html:a rel="attr">fillcolor</html:a> will overlay the
+ background color.
+ </html:p>
+ <html:p>
+ If no background color is specified for the root graph, no graphics
+ operation are performed on the background. This works fine for
+ PostScript but for bitmap output, all bits are initialized to something.
+ This means that when the bitmap output is included in some other
+ document, all of the bits within the bitmap's bounding box will be
+ set, overwriting whatever color or graphics where already on the page.
+ If this effect is not desired, and you only want to set bits explicitly
+ assigned in drawing the graph, set <html:a rel="attr">bgcolor</html:a>="transparent".
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="center" type="xsd:boolean" default="false">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If true, the drawing is centered in the output canvas.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="charset" type="xsd:string" default="UTF-8">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Specifies the character encoding used when interpreting string input
+ as a text label. The default value is <html:span class="val">UTF-8</html:span>.
+ The other legal value is <html:span class="val">iso-8859-1</html:span> or,
+ equivalently,
+ <html:span class="val">Latin1</html:span>. The <html:a rel="attr">charset</html:a> attribute is case-insensitive.
+ Note that if the character encoding used in the input does not
+ match the <html:a rel="attr">charset</html:a> value, the resulting output may be very strange.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="clusterrank" type="clusterMode" default="local" gv:layouts="dot">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Mode used for handling clusters. If <html:a rel="attr">clusterrank</html:a> is <html:span class="val">local</html:span>, a
+ subgraph whose name begins with "cluster" is given special treatment.
+ The subgraph is laid out separately, and then integrated as a unit into
+ its parent graph, with a bounding rectangle drawn about it.
+ If the cluster has a <html:a rel="attr">label</html:a> parameter, this label
+ is displayed within the rectangle.
+ Note also that there can be clusters within clusters.
+ At present, the modes <html:span class="val">global</html:span> and <html:span class="val">none</html:span>
+ appear to be identical, both turning off the special cluster processing.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="color" type="colorList" default="black">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Basic drawing color for graphics, not text. For the latter, use the
+ <html:a rel="attr">fontcolor</html:a> attribute.
+ </html:p>
+ <html:p>
+ For edges, the value
+ can either be a single <html:a rel="type">color</html:a> or a <html:a rel="type">colorList</html:a>.
+ In the latter case, the edge is drawn using parallel splines or lines,
+ one for each color in the list, in the order given.
+ The head arrow, if any, is drawn using the first color in the list,
+ and the tail arrow, if any, the second color. This supports the common
+ case of drawing opposing edges, but using parallel splines instead of
+ separately routed multiedges.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="colorscheme" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This attribute specifies a color scheme namespace. If defined, it specifies
+ the context for interpreting color names. In particular, if a
+ <html:a rel="type">color</html:a> value has form <html:code>xxx</html:code> or <html:code>//xxx</html:code>,
+ then the color <html:code>xxx</html:code> will be evaluated according to the current color scheme.
+ If no color scheme is set, the standard X11 naming is used.
+ For example, if <html:code>colorscheme=bugn9</html:code>, then <html:code>color=7</html:code>
+ is interpreted as <html:code>/bugn9/7</html:code>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="comment" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Comments are inserted into output. Device-dependent.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="compound" type="xsd:boolean" default="false" gv:layouts="dot">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:span class="val">true</html:span>, allow edges between clusters. (See <html:a rel="attr">lhead</html:a> and <html:a rel="attr">ltail</html:a> below.)
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="concentrate" type="xsd:boolean" default="false" gv:layouts="dot">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:span class="val">true</html:span>, use edge concentrators.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="constraint" type="xsd:boolean" default="true" gv:layouts="dot">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:span class="val">false</html:span>, the edge is not used in ranking the nodes.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="decorate" type="xsd:boolean" default="false">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:span class="val">true</html:span>, attach edge label to edge by a 2-segment
+ polyline, underlining the label, then going to the closest point of spline.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="defaultdist" type="xsd:decimal" gv:layouts="neato">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This specifies the distance between nodes in separate connected
+ components. If set too small, connected components may overlap.
+ Only applicable if <html:a rel="attr">pack</html:a>=false.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="dim" type="xsd:integer" default="2" gv:layouts="fdp neato">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Set the number of dimensions used for the layout. The maximum value
+ allowed is 10.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="dir" type="dirType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Set edge type for drawing arrowheads. This indicates which ends of the
+ edge should be decorated with an arrowhead. The actual style of the
+ arrowhead can be specified using the <html:a rel="attr">arrowhead</html:a>
+ and <html:a rel="attr">arrowtail</html:a> attributes.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="diredgeconstraints" type="xsd:string" default="false" gv:layouts="neato">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Only valid when <html:a rel="attr">mode</html:a>="ipsep".
+ If <html:span class="val">true</html:span>, constraints are generated for each edge in the largest (heuristic)
+ directed acyclic subgraph such that the edge must point downwards.
+ If <html:span class="val">hier</html:span>, generates level constraints similar to those used with
+ <html:a rel="attr">mode</html:a>="hier". The main difference is that, in the latter
+ case, only these constraints are involved, so a faster solver can be used.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="distortion" type="xsd:decimal" default="0.0">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Distortion factor for <html:a rel="attr">shape</html:a>=polygon.
+ Positive values cause top part to
+ be larger than bottom; negative values do the opposite.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="dpi" type="xsd:decimal" default="96.0">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This specifies the expected number of pixels per inch on a display device.
+ For bitmap output, this guarantees that text rendering will be
+ done more accurately, both in size and in placement. For SVG output,
+ it is used to guarantee that the dimensions in the output correspond to
+ the correct number of points or inches.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="edgeURL" type="xsd:anyURI" gv:formats="svg map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:a rel="attr">edgeURL</html:a> is defined, this is the link used for the non-label
+ parts of an edge. This value overrides any <html:a rel="attr">URL</html:a>
+ defined for the edge.
+ Also, this value is used near the head or tail node unless overridden
+ by a <html:a rel="attr">headURL</html:a> or <html:a rel="attr">tailURL</html:a> value,
+ respectively.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="edgehref" type="xsd:anyURI" gv:formats="svg map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Synonym for <html:a rel="attr">edgeURL</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="edgetarget" type="escString" gv:formats="svg map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the edge has a <html:a rel="attr">URL</html:a> or <html:a rel="attr">edgeURL</html:a>
+ attribute, this attribute determines which window of the
+ browser is used
+ for the URL attached to the non-label part of the edge.
+ Setting it to "_graphviz" will open a new window if it
+ doesn't already exist, or reuse it if it does.
+ If undefined, the value of the <html:a rel="attr">target</html:a> is used.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="edgetooltip" type="escString" gv:formats="svg cmap">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Tooltip annotation attached to the non-label part of an edge.
+ This is used only if the edge has a <html:a rel="attr">URL</html:a>
+ or <html:a rel="attr">edgeURL</html:a> attribute.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="epsilon" type="xsd:decimal" gv:layouts="neato">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Terminating condition. If the length squared of all energy gradients are
+ < <html:a rel="attr">epsilon</html:a>, the algorithm stops.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="esep" type="xsd:decimal" gv:layouts="neato circo fdp">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Fraction to increase polygons (multiply
+ coordinates by 1 + esep) for purposes of spline edge routing.
+ This should normally be strictly less than
+ <html:a rel="attr">sep</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="fillcolor" type="color">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Color used to fill the background of a node or cluster
+ assuming <html:a rel="attr">style</html:a>=filled.
+ If <html:a rel="attr">fillcolor</html:a> is not defined, <html:a rel="attr">color</html:a> is
+ used. (For clusters, if <html:a rel="attr">color</html:a> is not defined,
+ <html:a rel="attr">bgcolor</html:a> is used.) If this is not defined,
+ the default is used, except for
+ <html:a rel="attr">shape</html:a>=point or when the output
+ format is MIF,
+ which use black by default.
+ </html:p>
+ <html:p>
+ Note that a cluster inherits the root graph's attributes if defined.
+ Thus, if the root graph has defined a <html:a rel="attr">fillcolor</html:a>, this will override a
+ <html:a rel="attr">color</html:a> or <html:a rel="attr">bgcolor</html:a> attribute set for the cluster.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="fixedsize" type="xsd:boolean" default="false">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If true, the node size is specified by the values of the
+ <html:a rel="attr">width</html:a>
+ and <html:a rel="attr">height</html:a> attributes only
+ and is not expanded to contain the text label.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="fontcolor" type="color" default="black">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Color used for text.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="fontname" type="xsd:string" default="Times-Roman">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Font used for text. This very much depends on the output format and, for
+ non-bitmap output such as PostScript or SVG, the availability of the font
+ when the graph is displayed or printed. As such, it is best to rely on
+ font faces that are generally available, such as Times-Roman, Helvetica or
+ Courier.
+ </html:p>
+ <html:p>
+ If Graphviz was built using the
+ <html:a href="http://pdx.freedesktop.org/~fontconfig/fontconfig-user.html">fontconfig library</html:a>, the latter library
+ will be used to search for the font. However, if the <html:a rel="attr">fontname</html:a> string
+ contains a slash character "/", it is treated as a pathname for the font
+ file, though font lookup will append the usual font suffixes.
+ </html:p>
+ <html:p>
+ If Graphviz does not use fontconfig, <html:a rel="attr">fontname</html:a> will be
+ considered the name of a Type 1 or True Type font file.
+ If you specify <html:code>fontname=schlbk</html:code>, the tool will look for a
+ file named <html:code>schlbk.ttf</html:code> or <html:code>schlbk.pfa</html:code> or <html:code>schlbk.pfb</html:code>
+ in one of the directories specified by
+ the <html:a rel="attr">fontpath</html:a> attribute.
+ The lookup does support various aliases for the common fonts.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="fontnames" type="xsd:string" gv:formats="svg">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Allows user control of how basic fontnames are represented in SVG output.
+ If <html:a rel="attr">fontnames</html:a> is undefined or <html:span class="val">svg</html:span>,
+ the output will try to use known SVG fontnames. For example, the
+ default font <html:code>Times-Roman</html:code> will be mapped to the
+ basic SVG font <html:code>serif</html:code>. This can be overridden by setting
+ <html:a rel="attr">fontnames</html:a> to <html:span class="val">ps</html:span> or <html:span class="val">gd</html:span>.
+ In the former case, known PostScript font names such as
+ <html:code>Times-Roman</html:code> will be used in the output.
+ In the latter case, the fontconfig font conventions
+ are used. Thus, <html:code>Times-Roman</html:code> would be treated as
+ <html:code>Nimbus Roman No9 L</html:code>. These last two options are useful
+ with SVG viewers that support these richer fontname spaces.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="fontpath" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Directory list used by libgd to search for bitmap fonts if Graphviz
+ was not built with the fontconfig library.
+ If <html:a rel="attr">fontpath</html:a> is not set, the environment
+ variable <html:code>DOTFONTPATH</html:code> is checked.
+ If that is not set, <html:code>GDFONTPATH</html:code> is checked.
+ If not set, libgd uses its compiled-in font path.
+ Note that fontpath is an attribute of the root graph.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="fontsize" type="xsd:decimal" default="14.0">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Font size, in <html:a rel="note">points</html:a>, used for text.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="group" type="xsd:string" gv:layouts="dot">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the end points of an edge belong to the same group, i.e., have the
+ same group attribute, parameters are set to avoid crossings and keep
+ the edges straight.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="headURL" type="xsd:anyURI" gv:formats="svg map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:a rel="attr">headURL</html:a> is defined, it is
+ output as part of the head label of the edge.
+ Also, this value is used near the head node, overriding any
+ <html:a rel="attr">URL</html:a> value.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="headclip" type="xsd:boolean" default="true">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:span class="val">true</html:span>, the head of an edge is clipped to the boundary of the head node;
+ otherwise, the end of the edge goes to the center of the node, or the
+ center of a port, if applicable.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="headhref" type="xsd:anyURI" gv:formats="svg map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Synonym for <html:a rel="attr">headURL</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="headlabel" type="lblString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Text label to be placed near head of edge.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="headport" type="portPos" default="center">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Indicates where on the head node to attach the head of the edge.
+ In the default case, the edge is aimed towards the center of the node,
+ and then clipped at the node boundary.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="headtarget" type="escString" gv:formats="svg map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the edge has a <html:a rel="attr">headURL</html:a>,
+ this attribute determines which window of the
+ browser is used
+ for the URL. Setting it to "_graphviz" will open a new window if it
+ doesn't already exist, or reuse it if it does.
+ If undefined, the value of the <html:a rel="attr">target</html:a> is used.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="headtooltip" type="escString" gv:formats="svg cmap">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Tooltip annotation attached to the head of an edge. This is used only
+ if the edge has a <html:a rel="attr">headURL</html:a> attribute.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="height" type="xsd:decimal" default="0.5">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Height of node, in inches. This is taken as the initial, minimum height
+ of the node. If <html:a rel="attr">fixedsize</html:a> is true, this
+ will be the final height of the node. Otherwise, if the node label
+ requires more height to fit, the node's height will be increased to
+ contain the label. Note also that, if the output format is dot, the
+ value given to <html:a rel="attr">height</html:a> will be the final value.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="href" type="xsd:anyURI" gv:formats="svg ps ps2 map">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Synonym for <html:a rel="attr">URL</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="image" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Gives the name of a file containing an image to be displayed inside
+ a node. The image file must be in one of the recognized formats,
+ typically JPEG, PNG, GIF or Postscript, and be able to be converted
+ into the desired output format.
+ </html:p>
+ <html:p>
+ Unlike with the <html:a rel="attr">shapefile</html:a> attribute,
+ the image is treated as node
+ content rather than the entire node. In particular, an image can
+ be contained in a node of any shape, not just a rectangle.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="imagescale" type="xsd:string" default="false">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Attribute controlling how an image fills its
+ containing node. In general, the image is given its natural size,
+ (cf. <html:a rel="attr">dpi</html:a>),
+ and the node size is made large enough to contain its image, its
+ label, its margin, and its peripheries.
+ Its width and height will also be at least as large as its
+ minimum <html:a rel="attr">width</html:a> and <html:a rel="attr">height</html:a>.
+ If, however, <html:code>fixedsize=true</html:code>,
+ the width and height attributes specify the exact size of the node.
+ </html:p>
+ <html:p>
+ During rendering, in the default case (<html:code>imagescale=false</html:code>),
+ the image retains its natural size.
+ If <html:span class="val">true</html:span>,
+ the image is uniformly scaled (i.e., its aspect ration is
+ preserved) to fit inside the node.
+ At least one dimension of the image will be as large as possible
+ given the size of the node.
+ When <html:span class="val">width</html:span>,
+ the width of the image is scaled to fill the node width.
+ The corresponding property holds when <html:tt>imagescale=height</html:tt>.
+ When <html:span class="val">both</html:span>,
+ both the height and the width are scaled separately to fill the node.
+ </html:p>
+ <html:p>
+ In all cases, if a dimension of the image is larger than the
+ corresponding dimension of the node, that dimension of the
+ image is scaled down to fit the node. As with the case of
+ expansion, if <html:code>imagescale=true</html:code>, width and height are
+ scaled uniformly.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="label" type="lblString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Text label attached to objects.
+ If a node's <html:a rel="attr">shape</html:a> is record, then the label can
+ have a <html:a href="http://www.graphviz.org/doc/info/shapes.html#record">special format</html:a>
+ which describes the record layout.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelURL" type="xsd:anyURI">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:a rel="attr">labelURL</html:a> is defined, this is the link used for the label
+ of an edge. This value overrides any <html:a rel="attr">URL</html:a>
+ defined for the edge.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelangle" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This, along with <html:a rel="attr">labeldistance</html:a>, determine
+ where the
+ headlabel (taillabel) are placed with respect to the head (tail)
+ in polar coordinates. The origin in the coordinate system is
+ the point where the edge touches the node. The ray of 0 degrees
+ goes from the origin back along the edge, parallel to the edge
+ at the origin.
+ </html:p>
+ <html:p>
+ The angle, in degrees, specifies the rotation from the 0 degree ray,
+ with positive angles moving counterclockwise and negative angles
+ moving clockwise.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labeldistance" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Multiplicative scaling factor adjusting the distance that
+ the headlabel (taillabel) is from the head (tail) node.
+ The default distance is 10 points. See <html:a rel="attr">labelangle</html:a>
+ for more details.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelfloat" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If true, allows edge labels to be less constrained in position.
+ In particular, it may appear on top of other edges.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelfontcolor" type="color">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Color used for headlabel and taillabel.
+ If not set, defaults to edge's fontcolor.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelfontname" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Font used for headlabel and taillabel.
+ If not set, defaults to edge's fontname.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelfontsize" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Font size, in <html:a rel="note">points</html:a>, used for headlabel and taillabel.
+ If not set, defaults to edge's fontsize.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelhref" type="xsd:anyURI">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Synonym for <html:a rel="attr">labelURL</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labeljust" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Justification for cluster labels. If <html:span class="val">r</html:span>, the label
+ is right-justified within bounding rectangle; if <html:span class="val">l</html:span>, left-justified;
+ else the label is centered.
+ Note that a subgraph inherits attributes from its parent. Thus, if
+ the root graph sets <html:a rel="attr">labeljust</html:a> to <html:span class="val">l</html:span>, the subgraph inherits
+ this value.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labelloc" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Top/bottom placement of graph and cluster labels.
+ If the attribute is <html:span class="val">t</html:span>, place label at the top;
+ if the attribute is <html:span class="val">b</html:span>, place label at the bottom.
+ By default, root
+ graph labels go on the bottom and cluster labels go on the top.
+ Note that a subgraph inherits attributes from its parent. Thus, if
+ the root graph sets <html:a rel="attr">labelloc</html:a> to <html:span class="val">b</html:span>, the subgraph inherits
+ this value.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labeltarget" type="escString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the edge has a <html:a rel="attr">URL</html:a> or <html:a rel="attr">labelURL</html:a>
+ attribute, this attribute determines which window of the
+ browser is used
+ for the URL attached to the label.
+ Setting it to "_graphviz" will open a new window if it
+ doesn't already exist, or reuse it if it does.
+ If undefined, the value of the <html:a rel="attr">target</html:a> is used.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="labeltooltip" type="escString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Tooltip annotation attached to label of an edge.
+ This is used only if the edge has a <html:a rel="attr">URL</html:a>
+ or <html:a rel="attr">labelURL</html:a> attribute.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="landscape" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If true, the graph is rendered in landscape mode. Synonymous with
+ <html:code><html:a rel="attr">rotate</html:a>=90</html:code> or
+ <html:code><html:a rel="attr">orientation</html:a>=landscape</html:code>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="layer" type="layerRange">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Specifies layers in which the node or edge is present.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="layers" type="layerList">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Specifies a linearly ordered list of layer names attached to the graph
+ The graph is then output in separate layers. Only those components
+ belonging to the current output layer appear. For more information,
+ see the page <html:a href="http://www.graphviz.org/Documentation/html/layers/">How to use drawing layers (overlays)</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="layersep" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Specifies the separator characters used to split the
+ <html:a rel="attr">layers </html:a>attribute into a list of layer names.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="len" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Preferred edge length, in inches.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="levelsgap" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Specifies strictness of level constraints in neato
+ when <html:code><html:a rel="attr">mode</html:a>="ipsep" or "hier"</html:code>.
+ Larger positive values mean stricter constraints, which demand more
+ separation between levels. On the other hand, negative values will relax
+ the constraints by allowing some overlap between the levels.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="lhead" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Logical head of an edge. When <html:a rel="attr">compound</html:a> is true,
+ if <html:a rel="attr">lhead</html:a> is defined and is the name of a cluster containing
+ the real head,
+ the edge is clipped to the boundary of the cluster.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="lp" type="point">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Label position, in <html:a rel="note">points</html:a>.
+ The position indicates the center of the label.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="ltail" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Logical tail of an edge. When <html:a rel="attr">compound</html:a> is true,
+ if <html:a rel="attr">ltail</html:a> is defined and is the name of a cluster
+ containing the real tail,
+ the edge is clipped to the boundary of the cluster.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="margin" type="pointf">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ For graphs, this sets x and y margins of canvas, in inches. If the margin
+ is a single double, both margins are set equal to the given value.
+ </html:p>
+ <html:p>
+ Note that the margin is not part of the drawing but just empty space
+ left around the drawing. It basically corresponds to a translation of
+ drawing, as would be necessary to center a drawing on a page. Nothing
+ is actually drawn in the margin. To actually extend the background of
+ a drawing, see the <html:a rel="attr">pad</html:a> attribute.
+ </html:p>
+ <html:p>
+ For nodes, this attribute specifies space left around the node's label.
+ By default, the value is <html:code>0.11,0.055</html:code>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="maxiter" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Sets the number of iterations used.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="mclimit" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Multiplicative scale factor used to alter the MinQuit (default = 8)
+ and MaxIter (default = 24) parameters used during crossing
+ minimization. These correspond to the
+ number of tries without improvement before quitting and the
+ maximum number of iterations in each pass.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="mindist" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Specifies the minimum separation between all nodes.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="minlen" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Minimum edge length (rank difference between head and tail).
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="mode" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Technique for optimizing the layout. If <html:a rel="attr">mode</html:a> is <html:span class="val">major</html:span>,
+ neato uses stress majorization. If <html:a rel="attr">mode</html:a> is <html:span class="val">KK</html:span>,
+ neato uses a version of the gradient descent method. The only advantage
+ to the latter technique is that it is sometimes appreciably faster for
+ small (number of nodes < 100) graphs. A significant disadvantage is that
+ it may cycle.
+ </html:p>
+ <html:p>
+ There are two new, experimental modes in neato, <html:span class="val">hier</html:span>, which adds a top-down
+ directionality similar to the layout used in dot, and <html:span class="val">ipsep</html:span>, which
+ allows the graph to specify minimum vertical and horizontal distances
+ between nodes. (See the <html:a rel="attr">sep</html:a> attribute.)
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="model" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This value specifies how the distance matrix is computed for the input
+ graph. The distance matrix specifies the ideal distance between every
+ pair of nodes. neato attemps to find a layout which best achieves
+ these distances. By default, it uses the length of the shortest path,
+ where the length of each edge is given by its <html:a rel="attr">len</html:a>
+ attribute. If <html:a rel="attr">model</html:a> is <html:span class="val">circuit</html:span>, neato uses the
+ circuit resistance
+ model to compute the distances. This tends to emphasize clusters. If
+ <html:a rel="attr">model</html:a> is <html:span class="val">subset</html:span>, neato uses the subset model. This sets the
+ edge length to be the number of nodes that are neighbors of exactly one
+ of the end points, and then calculates the shortest paths. This helps
+ to separate nodes with high degree.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="mosek" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If Graphviz is built with MOSEK defined, mode=ipsep and mosek=true,
+ the Mosek software (www.mosek.com) is use to solve the ipsep constraints.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="nodesep" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Minimum space between two adjacent nodes in the same rank, in inches.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="nojustify" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ By default, the justification of multi-line labels is done within the
+ largest context that makes sense. Thus, in the label of a polygonal
+ node, a left-justified line will align with the left side of the node
+ (shifted by the prescribed <html:a rel="attr">margin</html:a>).
+ In record nodes, left-justified
+ line will line up with the left side of the enclosing column of fields.
+ If <html:a rel="attr">nojustify</html:a> is <html:span class="val">true</html:span>, multi-line labels will be justified
+ in the context of itself. For example, if the attribute is set,
+ the first label line is long, and the second is shorter and left-justified,
+ the second will align with the left-most character in the first line,
+ regardless of how large the node might be.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="normalize" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If set, normalize coordinates of final
+ layout so that the first point is at the origin, and then rotate the
+ layout so that the first edge is horizontal.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="nslimit" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Used to set number of iterations in
+ network simplex applications, used in
+ computing node x coordinates.
+ If defined, # iterations = <html:a rel="attr">nslimit</html:a> * # nodes;
+ otherwise, # iterations = MAXINT.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="nslimit1" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Used to set number of iterations in
+ network simplex applications, used for ranking nodes.
+ If defined, # iterations = <html:a rel="attr">nslimit1</html:a> * # nodes;
+ otherwise, # iterations = MAXINT.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="ordering" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If "out" for a graph G, and n is a node in G, then edges n->* appear
+ left-to-right in the same order in which they are defined.
+ If "in", the edges *->n appear
+ left-to-right in the same order in which they are defined for all
+ nodes n.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <!--
+ <xsd:attribute name="orientation" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ Angle, in degrees, used to rotate node shapes.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="orientation" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ If "[lL]*", set graph orientation to landscape
+ Used only if <html:a rel="attr">rotate</html:a> is not defined.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ -->
+
+ <xsd:attribute name="outputorder" type="outputMode">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Specify order in which nodes and edges are drawn.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="overlap" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Determines if and how node overlaps should be removed. Nodes are first
+ enlarged using the <html:a rel="attr">sep</html:a> attribute.
+ If <html:span class="val">true</html:span>, overlaps are retained.
+ If the value is <html:span class="val">scale</html:span>, overlaps are removed by uniformly scaling in x and y.
+ If the value converts to <html:span class="val">false</html:span>, node overlaps are removed by a
+ Voronoi-based technique.
+ If the value is <html:span class="val">scalexy</html:span>, x and y are separately
+ scaled to remove overlaps.
+ If the value is <html:span class="val">orthoxy</html:span> or <html:span class="val">orthoyx</html:span>, overlaps
+ are moved by optimizing two constraint problems, one for the x axis and
+ one for the y. The suffix indicates which axis is processed first.
+ If the value is <html:span class="val">ortho</html:span>, the technique is similar to <html:span class="val">orthoxy</html:span> except a
+ heuristic is used to reduce the bias between the two passes.
+ If the value is <html:span class="val">ortho_yx</html:span>, the technique is the same as <html:span class="val">ortho</html:span>, except
+ the roles of x and y are reversed.
+ The values <html:span class="val">portho</html:span>, <html:span class="val">porthoxy</html:span>, <html:span class="val">porthoxy</html:span>, and <html:span class="val">portho_yx</html:span> are similar
+ to the previous four, except only pseudo-orthogonal ordering is
+ enforced.
+ </html:p>
+ <html:p>
+ If the value is <html:span class="val">compress</html:span>, the layout will be scaled down as much as
+ possible without introducing any overlaps, obviously assuming there are
+ none to begin with.
+ </html:p>
+ <html:p>
+ If the value is <html:span class="val">ipsep</html:span>, and the layout is done by neato with
+ <html:a rel="attr">mode</html:a>="ipsep", the overlap removal constraints are
+ incorporated into the layout algorithm itself.
+ N.B. At present, this only supports one level of clustering.
+ </html:p>
+ <html:p>
+ If the value is <html:span class="val">vpsc</html:span>, overlap removal is similarly to <html:span class="val">ortho</html:span>, except
+ quadratic optimization is used to minimize node displacement.
+ N.B. At present, this mode only works when <html:a rel="attr">mode</html:a>="ipsep".
+ </html:p>
+ <html:p>
+ Except for fdp, the layouts assume <html:code>overlap="true"</html:code> as the default.
+ Fdp first uses a number of passes using built-in, force-directed technique
+ to remove overlaps. Thus, fdp accepts <html:a rel="attr">overlap</html:a> with an integer
+ prefix followed by a colon, specifying the number of tries. If there is
+ no prefix, no initial tries will be performed. If there is nothing following
+ a colon, none of the above methods will be attempted. By default, fdp
+ uses <html:code>overlap="9:portho"</html:code>. Note that <html:code>overlap="true"</html:code>,
+ <html:code>overlap="0:true"</html:code> and <html:code>overlap="0:"</html:code> all turn off all overlap
+ removal.
+ </html:p>
+ <html:p>
+ Except for the Voronoi method, all of these transforms preserve the
+ orthogonal ordering of the original layout. That is, if the x coordinates
+ of two nodes are originally the same, they will remain the same, and if
+ the x coordinate of one node is originally less than the x coordinate of
+ another, this relation will still hold in the transformed layout. The
+ similar properties hold for the y coordinates.
+ This is not quite true for the "porth*" cases. For these, orthogonal
+ ordering is only preserved among nodes related by an edge.
+ </html:p>
+ <html:p>
+ <html:b>NOTE</html:b>The methods <html:span class="val">orthoxy</html:span> and <html:span class="val">orthoyx</html:span> are still evolving. The semantics of these may change, or these methods may disappear altogether.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="pack" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This is true if the value of pack is <html:span class="val">true</html:span> (case-insensitive) or a
+ non-negative integer. If true, each connected component of the graph is
+ laid out separately, and then the graphs are packed tightly.
+ If pack has an integral value, this is used as the size,
+ in <html:a href="#points">points</html:a>, of
+ a margin around each part; otherwise, a default margin of 8 is used.
+ If pack is interpreted as false, the entire graph is laid out together.
+ The granularity and method of packing is influenced by the
+ <html:a rel="attr">packmode</html:a> attribute.
+ </html:p>
+ <html:p>
+ For layouts which always do packing, such a twopi, the <html:a rel="attr">pack</html:a>
+ attribute is just used to set the margin.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="packmode" type="packMode">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This indicates the granularity and method used for packing
+ (cf. <html:a rel="type">packMode</html:a>). Note that defining
+ <html:a rel="attr">packmode</html:a> will automatically turn on packing as though one had
+ set <html:code>pack=true</html:code>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="pad" type="pointf">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ The pad attribute specifies how much, in inches, to extend the
+ drawing area around the minimal area needed to draw the graph.
+ If the pad is a single double, both the x and y pad values are set
+ equal to the given value. This area is part of the
+ drawing and will be filled with the background color, if appropriate.
+ </html:p>
+ <html:p>
+ Normally, a small pad is used for aesthetic reasons, especially when
+ a background color is used, to avoid having nodes and edges abutting
+ the boundary of the drawn region.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="page" type="pointf">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Width and height of output pages, in inches. If this is set and is
+ smaller than the size of the layout, a rectangular array of pages of
+ the specified page size is overlaid on the layout, with origins
+ aligned in the lower-left corner, thereby partitioning the layout
+ into pages. The pages are then produced one at a time, in
+ <html:a rel="attr">pagedir</html:a> order.
+ </html:p>
+ <html:p>
+ At present, this only works for PostScript output. For other types of
+ output, one should use another tool to split the output into multiple
+ output files. Or use the <html:a rel="attr">viewport</html:a> to generate
+ multiple files.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="pagedir" type="pagedir">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the <html:a rel="attr">page</html:a> attribute is set and applicable,
+ this attribute specifies the order in which the pages are emitted.
+ This is limited to one of the 8 row or column major orders.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="pencolor" type="color">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Color used to draw the bounding box around a cluster.
+ If <html:a rel="attr">pencolor</html:a> is not defined, <html:a rel="attr">color</html:a> is
+ used. If this is not defined, <html:a rel="attr">bgcolor</html:a> is used.
+ If this is not defined, the default is used.
+ </html:p>
+ <html:p>
+ Note that a cluster inherits the root graph's attributes if defined.
+ Thus, if the root graph has defined a <html:a rel="attr">pencolor</html:a>, this will override a
+ <html:a rel="attr">color</html:a> or <html:a rel="attr">bgcolor</html:a> attribute set for the cluster.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="peripheries" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Set number of peripheries used in polygonal shapes and cluster
+ boundaries. Note that
+ <html:a href="http://www.graphviz.org/doc/info/shapes.html#epsf">user-defined shapes</html:a> are treated as a
+ form of box shape, so the default
+ peripheries value is 1 and the user-defined shape will be drawn in
+ a bounding rectangle. Setting <html:code>peripheries=0</html:code> will turn this off.
+ Also, 1 is the maximum peripheries value for clusters.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="pin" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If true and the node has a pos attribute on input, neato prevents the
+ node from moving from the input position. This property can also be specified
+ in the pos attribute itself (cf. the <html:a rel="attr">point</html:a> type).
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="pos" type="splineType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Position of node, or spline control points.
+ For nodes, the position indicates the center of the node.
+ On output, the coordinates are in <html:a href="#points">points</html:a>.
+ </html:p>
+ <html:p>
+ In neato and fdp, pos can be used to set the initial position of a node.
+ By default, the coordinates are assumed to be in inches. However, the
+ <html:a href="http://www.graphviz.org/doc/info/command.html#d:s">-s</html:a> command line flag can be used to specify
+ different units.
+ </html:p>
+ <html:p>
+ When the <html:a href="http://www.graphviz.org/doc/info/command.html#d:n">-n</html:a> command line flag is used with
+ neato, it is assumed the positions have been set by one of the layout
+ programs, and are therefore in points. Thus, <html:code>neato -n</html:code> can accept
+ input correctly without requiring a <html:code>-s</html:code> flag and, in fact,
+ ignores any such flag.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="quantum" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:a rel="attr">quantum</html:a> > 0.0, node label dimensions
+ will be rounded to integral multiples of the quantum.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="rank" type="rankType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Rank constraints on the nodes in a subgraph.
+ If <html:span class="val">same</html:span>, all nodes are placed on the same rank.
+ If <html:span class="val">min</html:span>, all nodes are placed on the minimum rank.
+ If <html:span class="val">source</html:span>, all nodes are placed on the minimum rank, and
+ the only nodes on the minimum rank belong to some subgraph whose
+ rank attribute is "source" or "min".
+ Analogous criteria hold for <html:a rel="attr">rank</html:a>=<html:span class="val">max</html:span> and <html:a rel="attr">rank</html:a>=<html:span class="val">sink</html:span>.
+ (Note: the
+ minimum rank is topmost or leftmost, and the maximum rank is bottommost
+ or rightmost.)
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="rankdir" type="rankdir">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Sets direction of graph layout. For example, if <html:a rel="attr">rankdir</html:a>="LR",
+ and barring cycles, an edge <html:code>T -> H;</html:code> will go
+ from left to right. By default, graphs are laid out from top to bottom.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="ranksep" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ In dot, this gives the desired rank separation, in inches. This is
+ the minimum vertical distance between the bottom of the nodes in one
+ rank and the tops of nodes in the next. If the value
+ contains "equally", the centers of all ranks are spaced equally apart.
+ Note that both
+ settings are possible, e.g., ranksep = "1.2 equally".
+ In twopi, specifies radial separation of concentric circles.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="ratio" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Sets the aspect ratio (drawing height/drawing width) for the drawing.
+ Note that this is adjusted before
+ the <html:a rel="attr">size</html:a> attribute constraints are enforced.
+ </html:p>
+ <html:p>
+ If <html:a rel="attr">ratio</html:a> is numeric, it is taken as the desired aspect ratio.
+ Then, if the actual aspect ratio is less than the desired ratio,
+ the drawing height is scaled up to achieve the
+ desired ratio; if the actual ratio is greater than that desired ratio,
+ the drawing width is scaled up.
+ </html:p>
+ <html:p>
+ If <html:a rel="attr">ratio</html:a> = <html:span class="val">fill</html:span> and the <html:a rel="attr">size</html:a>
+ attribute is set, node positions are scaled, separately in both x
+ and y, so that the final drawing exactly fills the specified size.
+ </html:p>
+ <html:p>
+ If <html:a rel="attr">ratio</html:a> = <html:span class="val">compress</html:span> and the <html:a rel="attr">size</html:a>
+ attribute is set, dot attempts to compress the initial layout to fit
+ in the given size. This achieves a tighter packing of nodes but
+ reduces the balance and symmetry. This feature only works in dot.
+ </html:p>
+ <html:p>
+ If <html:a rel="attr">ratio</html:a> = <html:span class="val">expand</html:span>, the <html:a rel="attr">size</html:a>
+ attribute is set, and both the width and the height of the graph are
+ less than the value in <html:a rel="attr">size</html:a>, node positions are scaled
+ uniformly until at least
+ one dimension fits <html:a rel="attr">size</html:a> exactly.
+ Note that this is distinct from using <html:a rel="attr">size</html:a> as the
+ desired size, as here the drawing is expanded before edges are generated and
+ all node and text sizes remain unchanged.
+ </html:p>
+ <html:p>
+ If <html:a rel="attr">ratio</html:a> = <html:span class="val">auto</html:span>, the <html:a rel="attr">page</html:a>
+ attribute is set and the graph cannot be drawn on a single page,
+ then <html:a rel="attr">size</html:a> is set to an ``ideal'' value.
+ In particular, the size in a given dimension will be the smallest integral
+ multiple of the page size in that dimension which is at least half the
+ current size. The two dimensions are then scaled independently to the
+ new size. This feature only works in dot.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="rects" type="rect">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Rectangles for fields of records, in <html:a rel="note">points</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="regular" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If true, force polygon to be regular.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="remincross" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If true and there are multiple clusters, run cross
+ minimization a second time.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="resolution" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This is a synonym for the <html:a rel="attr">dpi</html:a> attribute.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="root" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ This specifies nodes to be used as the center of the
+ layout and the root of the generated spanning tree. As a graph attribute,
+ this gives the name of the node. As a node attribute (circo only), it
+ specifies that the node should be used as a central node. In twopi,
+ this will actually be the central node. In circo, the block containing
+ the node will be central in the drawing of its connected component.
+ If not defined,
+ twopi will pick a most central node, and circo will pick a random node.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="rotate" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If 90, set drawing orientation to landscape.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="samehead" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Edges with the same head and the same <html:a rel="attr">samehead</html:a> value are aimed
+ at the same point on the head.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="sametail" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Edges with the same tail and the same <html:a rel="attr">sametail</html:a> value are aimed
+ at the same point on the tail.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="samplepoints" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the input graph defines the <html:a rel="attr"><html:a rel="attr">vertices</html:a></html:a>
+ attribute, and output is dot or xdot, this gives
+ the number of points used for a node whose shape is a circle or ellipse.
+ It plays the same role in neato, when adjusting the layout to avoid
+ overlapping nodes, and in image maps.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="searchsize" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ During network simplex, maximum number of edges with negative cut values
+ to search when looking for one with minimum cut value.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="sep" type="pointf">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Fraction to increase polygons (multiply
+ coordinates by 1 + sep) for purposes of determining overlap. Guarantees
+ a minimal non-zero distance between nodes.
+ If unset but <html:a rel="attr">esep</html:a> is defined, <html:a rel="attr">sep</html:a> will be
+ set to <html:code>esep/0.8</html:code>. If <html:a rel="attr">esep</html:a> is unset, the default value
+ is used.
+ </html:p>
+ <html:p>
+ When <html:a rel="attr">overlap</html:a>="ipsep" or "vpsc",
+ <html:a rel="attr">sep</html:a> gives a minimum distance, in inches, to be left between nodes.
+ In this case, if <html:a rel="attr">sep</html:a> is a pointf, the x and y separations can be
+ specified separately.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="shape" type="shape">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Set the shape of a node.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="shapefile" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ (Deprecated) If defined, shapefile specifies a file containing user-supplied node content.
+ The <html:a rel="attr">shape</html:a> of the node is set to box.
+ The image in the shapefile must be
+ rectangular. The image formats supported as well as the precise semantics of
+ how the file is used depends on the
+ <html:a href="http://www.graphviz.org/doc/info/output.html">output format</html:a>. For further details, see
+ <html:a href="http://www.graphviz.org/Documentation/html/shapehowto.html#ext_image">External PostScript files</html:a>.
+ </html:p>
+ <html:p>
+ There is one exception to this usage.
+ If <html:a rel="attr">shape</html:a> is set to "epsf", shapefile gives
+ a filename containing a definition of the node in PostScript.
+ The graphics defined must be contain all of the
+ node content, including any desired boundaries.
+ For further details, see
+ <html:a href="http://www.graphviz.org/Documentation/html/shapehowto.html#ext_ps">
+ External PostScript files</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="showboxes" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Print guide boxes in PostScript at the beginning of
+ routesplines if 1, or at the end if 2. (Debugging)
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="sides" type="xsd:integer">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Number of sides if <html:a rel="attr">shape</html:a>=polygon.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="size" type="pointf">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Maximum width and height of drawing, in inches.
+ If defined and the drawing is too large, the drawing is uniformly
+ scaled down so that it fits within the given size.
+ </html:p>
+ <html:p>
+ If <html:a rel="attr">size</html:a> ends in an exclamation point (<html:tt>!</html:tt>),
+ then it is taken to be
+ the desired size. In this case, if both dimensions of the drawing are
+ less than <html:a rel="attr">size</html:a>, the drawing is scaled up uniformly until at
+ least one dimension equals its dimension in <html:a rel="attr">size</html:a>.
+ </html:p>
+ <html:p>
+ Note that there is some interaction between the <html:a rel="attr">size</html:a> and
+ <html:a rel="attr">ratio</html:a> attributes.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="skew" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Skew factor for <html:a rel="attr">shape</html:a>=polygon. Positive values
+ skew top of polygon to right; negative to left.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="splines" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Controls how, and if, edges are represented. If true, edges are drawn as
+ splines routed around nodes; if false, edges are drawn as line segments.
+ If set to "", no edges are drawn at all.
+ </html:p>
+ <html:p>
+ (1 March 2007) The values <html:span class="val">line</html:span> and <html:span class="val">spline</html:span> can be
+ used as synonyms for <html:span class="val">false</html:span> and <html:span class="val">true</html:span>, respectively.
+ In addition, the value <html:span class="val">polyline</html:span> specifies that edges should be
+ drawn as polylines.
+ </html:p>
+ <html:p>
+ By default, the attribute is unset. How this is interpreted depends on
+ the layout. For dot, the default is to draw edges as splines. For all
+ other layouts, the default is to draw edges as line segments. Note that
+ for these latter layouts, if <html:code>splines="true"</html:code>, this
+ requires non-overlapping nodes (cf. <html:a rel="attr">overlap</html:a>).
+ If fdp is used for layout and <html:tt>splines="compound"</html:tt>, then the edges are
+ drawn to avoid clusters as well as nodes.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="start" type="startType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Parameter used to determine the initial layout of nodes. If unset, the
+ nodes are randomly placed in a unit square with
+ the same seed is always used for the random number generator, so the
+ initial placement is repeatable.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="style" type="style">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Set style for node or edge. For cluster subgraph, if "filled", the
+ cluster box's background is filled.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="stylesheet" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ A URL or pathname specifying an XML style sheet, used in SVG output.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="tailURL" type="xsd:anyURI">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:a rel="attr">tailURL</html:a> is defined, it is
+ output as part of the tail label of the edge.
+ Also, this value is used near the tail node, overriding any
+ <html:a rel="attr">URL</html:a> value.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="tailclip" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If <html:span class="val">true</html:span>, the tail of an edge is clipped to the boundary of the tail node;
+ otherwise, the end of the edge goes to the center of the node, or the
+ center of a port, if applicable.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="tailhref" type="xsd:anyURI">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Synonym for <html:a rel="attr">tailURL</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="taillabel" type="lblString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Text label to be placed near tail of edge.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="tailport" type="portPos">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Indicates where on the tail node to attach the tail of the edge.
+ See <html:a rel="note">undirected</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="tailtarget" type="escString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the edge has a <html:a rel="attr">tailURL</html:a>,
+ this attribute determines which window of the
+ browser is used
+ for the URL. Setting it to "_graphviz" will open a new window if it
+ doesn't already exist, or reuse it if it does.
+ If undefined, the value of the <html:a rel="attr">target</html:a> is used.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="tailtooltip" type="escString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Tooltip annotation attached to the tail of an edge. This is used only
+ if the edge has a <html:a rel="attr">tailURL</html:a> attribute.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="target" type="escString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the object has a URL, this attribute determines which window
+ of the browser is used for the URL.
+ See <html:a href="http://www.w3.org/TR/html401/present/frames.html#adef-target">W3C documentation</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="tooltip" type="escString">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Tooltip annotation attached to the node or edge. If unset, Graphviz
+ will use the object's <html:a rel="attr">label</html:a> if defined.
+ Note that if the label is a record specification or an HTML-like
+ label, the resulting tooltip may be unhelpful. In this case, if
+ tooltips will be generated, the user should set a <html:tt>tooltip</html:tt>
+ attribute explicitly.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="truecolor" type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If set explicitly to true or false, the value determines whether or not
+ internal bitmap rendering relies on a truecolor color model or uses
+ a color palette.
+ If the attribute is unset, truecolor is not used
+ unless there is a <html:a rel="attr">shapefile</html:a> property
+ for some node in the graph.
+ The output model will use the input model when possible.
+ </html:p>
+ <html:p>
+ Use of color palettes results in less memory usage during creation of the
+ bitmaps and smaller output files.
+ </html:p>
+ <html:p>
+ Usually, the only time it is necessary to specify the truetype model
+ is if the graph uses more than 256 colors.
+ However, if one uses <html:a rel="attr">bgcolor</html:a>=transparent with
+ a color palette, font
+ antialiasing can show up as a fuzzy white area around characters.
+ Using <html:a rel="attr">truecolor</html:a>=true avoids this problem.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="vertices" type="pointfList">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ If the input graph defines this attribute, the node is polygonal,
+ and output is dot or xdot, this attribute provides the
+ coordinates of the vertices of the node's polygon, in inches.
+ If the node is an ellipse or circle, the
+ <html:a rel="attr">samplepoints</html:a> attribute affects
+ the output.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="viewport" type="viewPort">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Clipping window on final drawing.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="voro_margin" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Factor to scale up drawing to allow margin for expansion in
+ Voronoi technique. dim' = (1+2*margin)*dim.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="weight" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Weight of edge. In dot, the heavier the weight, the shorter,
+ straighter and more vertical the edge is. In neato, the heavier the
+ weight, the more neato will try to place the end points so that the
+ length of the edge is <html:a rel="attr">len</html:a>.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="width" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Width of node, in inches. This is taken as the initial, minimum width
+ of the node. If <html:a rel="attr">fixedsize</html:a> is true, this
+ will be the final width of the node. Otherwise, if the node label
+ requires more width to fit, the node's width will be increased to
+ contain the label. Note also that, if the output format is dot, the
+ value given to <html:a rel="attr">width</html:a> will be the final value.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="z" type="xsd:decimal">
+ <xsd:annotation>
+ <xsd:documentation>
+ <html:p>
+ Provides z coordinate value for 3D layouts and displays. If the
+ graph has <html:a rel="attr">dim</html:a> set to 3 (or more),
+ neato will use a node's <html:a rel="attr">z</html:a> value
+ for the z coordinate of its initial position if
+ its <html:a rel="attr">pos</html:a> attribute is also defined.
+ </html:p>
+ <html:p>
+ Even if no <html:a rel="attr">z</html:a> values are specified in the input, it is necessary to
+ declare a <html:a rel="attr">z</html:a> attribute for nodes, e.g, using <html:tt>node[z=""]</html:tt>
+ in order to get z values on output.
+ Thus, setting <html:tt>dim=3</html:tt> but not declaring <html:a rel="attr">z</html:a> will
+ cause <html:tt>neato -Tvrml</html:tt> to
+ layout the graph in 3D but project the layout onto the xy-plane
+ for the rendering. If the <html:a rel="attr">z</html:a> attribute is declared, the final rendering
+ will be in 3D.
+ </html:p>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <!-- COMPONENTS -->
+
+ <xsd:complexType name="edge">
+ <xsd:attribute ref="URL" />
+ <xsd:attribute ref="arrowhead" default="normal" />
+ <xsd:attribute ref="arrowsize" default="1.0" />
+ <xsd:attribute ref="arrowtail" default="normal" />
+ <xsd:attribute ref="color" default="black" />
+ <xsd:attribute ref="colorscheme" />
+ <xsd:attribute ref="comment" />
+ <xsd:attribute ref="constraint" default="true" />
+ <xsd:attribute ref="decorate" default="false" />
+ <xsd:attribute ref="dir" />
+ <xsd:attribute ref="edgeURL" />
+ <xsd:attribute ref="edgehref"/>
+ <xsd:attribute ref="edgetarget" />
+ <xsd:attribute ref="edgetooltip" />
+ <xsd:attribute ref="fontcolor" default="black" />
+ <xsd:attribute ref="fontname" default="Times-Roman" />
+ <xsd:attribute ref="fontsize" default="14.0" />
+ <xsd:attribute ref="headURL" />
+ <xsd:attribute ref="headclip" default="true" />
+ <xsd:attribute ref="headhref"/>
+ <xsd:attribute ref="headlabel" />
+ <xsd:attribute ref="headport" default="center"/>
+ <xsd:attribute ref="headtarget" />
+ <xsd:attribute ref="headtooltip" />
+ <xsd:attribute ref="href" />
+ <xsd:attribute ref="label" />
+ <xsd:attribute ref="labelURL" />
+ <xsd:attribute ref="labelangle" default="-25.0" />
+ <xsd:attribute ref="labeldistance" default="1.0" />
+ <xsd:attribute ref="labelfloat" default="false" />
+ <xsd:attribute ref="labelfontcolor" default="black" />
+ <xsd:attribute ref="labelfontname" default="Times-Roman" />
+ <xsd:attribute ref="labelfontsize" default="14.0" />
+ <xsd:attribute ref="labelhref" />
+ <xsd:attribute ref="labeltarget" />
+ <xsd:attribute ref="labeltooltip" />
+ <xsd:attribute ref="layer" />
+ <xsd:attribute ref="len" />
+ <xsd:attribute ref="lhead" />
+ <xsd:attribute ref="lp" />
+ <xsd:attribute ref="ltail" />
+ <xsd:attribute ref="minlen" default="1" />
+ <xsd:attribute ref="nojustify" default="false" />
+ <xsd:attribute ref="pos" />
+ <xsd:attribute ref="samehead" />
+ <xsd:attribute ref="sametail" />
+ <xsd:attribute ref="showboxes" default="0" />
+ <xsd:attribute ref="style" />
+ <xsd:attribute ref="tailURL" />
+ <xsd:attribute ref="tailclip" default="true" />
+ <xsd:attribute ref="tailhref"/>
+ <xsd:attribute ref="taillabel" />
+ <xsd:attribute ref="tailport" default="center"/>
+ <xsd:attribute ref="tailtarget" />
+ <xsd:attribute ref="tailtooltip" />
+ <xsd:attribute ref="target" />
+ <xsd:attribute ref="tooltip" />
+ <xsd:attribute ref="weight" default="1.0" />
+ </xsd:complexType>
+
+ <xsd:complexType name="node">
+ <xsd:attribute ref="URL" />
+ <xsd:attribute ref="color" default="black" />
+ <xsd:attribute ref="colorscheme" />
+ <xsd:attribute ref="comment" />
+ <xsd:attribute ref="distortion" default="0.0" />
+ <xsd:attribute ref="fillcolor" default="lightgrey" />
+ <xsd:attribute ref="fixedsize" default="false" />
+ <xsd:attribute ref="fontcolor" default="black" />
+ <xsd:attribute ref="fontname" default="Times-Roman" />
+ <xsd:attribute ref="fontsize" default="14.0" />
+ <xsd:attribute ref="group" />
+ <xsd:attribute ref="height" default="0.5" />
+ <xsd:attribute ref="image" />
+ <xsd:attribute ref="imagescale" default="false" />
+ <xsd:attribute ref="label" default="\N" />
+ <xsd:attribute ref="layer" />
+ <xsd:attribute ref="margin" />
+ <xsd:attribute ref="nojustify" default="false" />
+ <!-- <xsd:attribute ref="orientation" default="0.0" /> -->
+ <xsd:attribute ref="peripheries" />
+ <xsd:attribute ref="pin" default="false" />
+ <xsd:attribute ref="pos" />
+ <xsd:attribute ref="rects" />
+ <xsd:attribute ref="regular" default="false" />
+ <xsd:attribute ref="root" default="false" />
+ <xsd:attribute ref="samplepoints" default="false" />
+ <xsd:attribute ref="shape" default="ellipse" />
+ <xsd:attribute ref="shapefile" />
+ <xsd:attribute ref="showboxes" default="0" />
+ <xsd:attribute ref="sides" default="4" />
+ <xsd:attribute ref="skew" default="0.0" />
+ <xsd:attribute ref="style" />
+ <xsd:attribute ref="target" />
+ <xsd:attribute ref="tooltip" />
+ <xsd:attribute ref="vertices" />
+ <xsd:attribute ref="width" default="0.75" />
+ <xsd:attribute ref="z" default="0.0" />
+ </xsd:complexType>
+
+ <xsd:complexType name="graph">
+ <xsd:attribute ref="Damping" default="0.99" />
+ <xsd:attribute ref="K" default="0.3" />
+ <xsd:attribute ref="URL" />
+ <xsd:attribute ref="bb" />
+ <xsd:attribute ref="bgcolor" />
+ <xsd:attribute ref="center" />
+ <xsd:attribute ref="charset" />
+ <xsd:attribute ref="clusterrank" default="local" />
+ <xsd:attribute ref="colorscheme" />
+ <xsd:attribute ref="comment" />
+ <xsd:attribute ref="compound" default="false" />
+ <xsd:attribute ref="concentrate" default="false" />
+ <xsd:attribute ref="defaultdist" />
+ <xsd:attribute ref="dim" default="2" />
+ <xsd:attribute ref="diredgeconstraints" default="false" />
+ <xsd:attribute ref="dpi" default="96.0" />
+ <xsd:attribute ref="epsilon" />
+ <xsd:attribute ref="esep" />
+ <xsd:attribute ref="fontcolor" default="black" />
+ <xsd:attribute ref="fontname" default="Times-Roman" />
+ <xsd:attribute ref="fontnames" />
+ <xsd:attribute ref="fontpath" />
+ <xsd:attribute ref="fontsize" default="14.0" />
+ <xsd:attribute ref="label" />
+ <xsd:attribute ref="labeljust" default="c" />
+ <xsd:attribute ref="labelloc" default="b" />
+ <xsd:attribute ref="landscape" default="false" />
+ <xsd:attribute ref="layers" default="false" />
+ <xsd:attribute ref="layersep" default=" : " />
+ <xsd:attribute ref="levelsgap" default="0.0" />
+ <xsd:attribute ref="lp" />
+ <xsd:attribute ref="margin" />
+ <xsd:attribute ref="maxiter" />
+ <xsd:attribute ref="mclimit" default="1.0" />
+ <xsd:attribute ref="mindist" default="1.0" />
+ <xsd:attribute ref="mode" default="major" />
+ <xsd:attribute ref="model" default="shortpath" />
+ <xsd:attribute ref="mosek" default="false" />
+ <xsd:attribute ref="nodesep" default="0.25" />
+ <xsd:attribute ref="nojustify" default="false" />
+ <xsd:attribute ref="normalize" default="false" />
+ <xsd:attribute ref="nslimit" />
+ <xsd:attribute ref="nslimit1" />
+ <xsd:attribute ref="ordering" />
+ <!-- <xsd:attribute ref="orientation" /> -->
+ <xsd:attribute ref="outputorder" default="breadthfirst" />
+ <xsd:attribute ref="overlap" default="true" />
+ <xsd:attribute ref="pack" default="false" />
+ <xsd:attribute ref="packmode" default="node" />
+ <xsd:attribute ref="pad" />
+ <xsd:attribute ref="page" />
+ <xsd:attribute ref="pagedir" />
+ <xsd:attribute ref="quantum" default="0.0" />
+ <xsd:attribute ref="rankdir" default="TB" />
+ <xsd:attribute ref="ranksep" />
+ <xsd:attribute ref="ratio" />
+ <xsd:attribute ref="remincross" default="false" />
+ <xsd:attribute ref="resolution" default="96.0" />
+ <xsd:attribute ref="root" />
+ <xsd:attribute ref="rotate" default="0" />
+ <xsd:attribute ref="searchsize" default="30" />
+ <xsd:attribute ref="sep" default="0.1" />
+ <xsd:attribute ref="showboxes" default="0" />
+ <xsd:attribute ref="size" />
+ <xsd:attribute ref="splines" />
+ <xsd:attribute ref="start" />
+ <xsd:attribute ref="stylesheet" />
+ <xsd:attribute ref="target" />
+ <xsd:attribute ref="truecolor" />
+ <xsd:attribute ref="viewport" />
+ <xsd:attribute ref="voro_margin" default="0.05" />
+ </xsd:complexType>
+
+ <xsd:complexType name="subgraph">
+ <xsd:attribute ref="rank" />
+ </xsd:complexType>
+
+ <xsd:complexType name="cluster">
+ <xsd:attribute ref="K" />
+ <xsd:attribute ref="URL" />
+ <xsd:attribute ref="bgcolor" />
+ <xsd:attribute ref="color" default="black" />
+ <xsd:attribute ref="colorscheme" />
+ <xsd:attribute ref="fillcolor" default="black" />
+ <xsd:attribute ref="fixedsize" default="false" />
+ <xsd:attribute ref="fontcolor" default="black" />
+ <xsd:attribute ref="fontname" default="Times-Roman" />
+ <xsd:attribute ref="fontsize" default="14.0" />
+ <xsd:attribute ref="label" />
+ <xsd:attribute ref="labeljust" default="c" />
+ <xsd:attribute ref="labelloc" default="t" />
+ <xsd:attribute ref="lp" />
+ <xsd:attribute ref="nojustify" default="false" />
+ <xsd:attribute ref="pencolor" default="black" />
+ <xsd:attribute ref="style" />
+ <xsd:attribute ref="target" />
+ <xsd:attribute ref="tooltip" />
+ </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file