<rng:element name="node">
<rng:ref name="att.global.attributes"/>
<rng:optional>
 <rng:attribute name="value">
  <rng:ref name="data.pointer"/>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="type">
  <rng:choice>
   <rng:value>initial</rng:value>
   <rng:value>final</rng:value>
   <rng:data type="Name"/>
  </rng:choice>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="adjTo">
  <rng:list>
   <rng:oneOrMore>
    <rng:ref name="data.pointer"/>
   </rng:oneOrMore>
  </rng:list>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="adjFrom">
  <rng:list>
   <rng:oneOrMore>
    <rng:ref name="data.pointer"/>
   </rng:oneOrMore>
  </rng:list>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="adj">
  <rng:list>
   <rng:oneOrMore>
    <rng:ref name="data.pointer"/>
   </rng:oneOrMore>
  </rng:list>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="inDegree">
  <rng:ref name="data.count"/>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="outDegree">
  <rng:ref name="data.count"/>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="degree">
  <rng:ref name="data.count"/>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:ref name="label"/>
 <rng:optional>
  <rng:ref name="label"/>
 </rng:optional>
</rng:optional>
</rng:element>
element node
{
   att.global.attributes,
   attribute value { data.pointer }?,
   attribute type { "initial" | "final" | xsd:Name }?,
   attribute adjTo { list { data.pointer+ } }?,
   attribute adjFrom { list { data.pointer+ } }?,
   attribute adj { list { data.pointer+ } }?,
   attribute inDegree { data.count }?,
   attribute outDegree { data.count }?,
   attribute degree { data.count }?,
   ( label, label? )?
}