<xs:element name="graph">
<xs:annotation>
<xs:documentation>The root element of a 'dot' graph.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="dotml:cluster-or-graph">
<xs:attribute name="file-name" type="xs:string" use="required"/>
<xs:attribute name="margin" type="dotml:point"/>
<xs:attribute name="nodesep" type="xs:decimal"/>
<xs:attribute name="rankdir" type="dotml:rankdir"/>
<xs:attribute name="ranksep" type="xs:decimal"/>
<xs:attribute name="ratio" type="dotml:ratio"/>
<xs:attribute name="size" type="dotml:point"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="all-nodes-have-to-have-different-ids">
<xs:selector xpath=".//dotml:node"/>
<xs:field xpath="@id"/>
</xs:key>
<xs:key name="all-clusters-have-to-have-different-ids">
<xs:selector xpath=".//dotml:cluster"/>
<xs:field xpath="@id"/>
</xs:key>
<xs:keyref name="attribute-from-must-be-an-existing-node-id" refer="dotml:all-nodes-have-to-have-different-ids">
<xs:selector xpath=".//dotml:edge"/>
<xs:field xpath="@from"/>
</xs:keyref>
<xs:keyref name="attribute-to-must-be-an-existing-node-id" refer="dotml:all-nodes-have-to-have-different-ids">
<xs:selector xpath=".//dotml:edge"/>
<xs:field xpath="@to"/>
</xs:keyref>
<xs:keyref name="attribute-ltail-must-be-an-existing-cluster-id" refer="dotml:all-clusters-have-to-have-different-ids">
<xs:selector xpath=".//dotml:edge"/>
<xs:field xpath="@ltail"/>
</xs:keyref>
<xs:keyref name="attribute-lhead-must-be-an-existing-cluster-id" refer="dotml:all-clusters-have-to-have-different-ids">
<xs:selector xpath=".//dotml:edge"/>
<xs:field xpath="@lhead"/>
</xs:keyref>
</xs:element> |