<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:include schemaLocation="types/base.xsd" />
<xsd:element name="nodes" type="nodesType">
<xsd:key name="nodeKey">
<xsd:selector xpath="node"/>
<xsd:field xpath="@id"/>
</xsd:key>
</xsd:element>
<xsd:complexType name="nodesType">
<xsd:sequence>
<xsd:element name="location" type="locationType" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="node" type="nodeType"/>
<xsd:element name="delete" type="deleteType"/>
<xsd:element name="join" type="joinType"/>
<xsd:element name="joinExclude" type="joinExcludeType"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="version" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d+.\d+"></xsd:pattern>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="nodeTypeWithoutID">
<xsd:sequence>
<xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="x" type="floatType" use="optional"/>
<xsd:attribute name="y" type="floatType" use="optional"/>
<xsd:attribute name="z" type="floatType" use="optional"/>
<xsd:attribute name="type" type="nodeTypeType" use="optional"/>
<xsd:attribute name="tl" type="xsd:string" use="optional"/>
<xsd:attribute name="tlType" type="tlTypeType" use="optional"/>
<xsd:attribute name="tlLayout" type="tlLayoutType" use="optional"/>
<xsd:attribute name="controlledInner" type="xsd:string" use="optional"/>
<xsd:attribute name="shape" type="shapeType" use="optional"/>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="radius" type="nonNegativeFloatTypeWithErrorValue" use="optional"/>
<xsd:attribute name="keepClear" type="boolType" use="optional"/>
<xsd:attribute name="rightOfWay" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="default"/>
<xsd:enumeration value="mixedPriority"/>
<xsd:enumeration value="allwayStop"/>
<xsd:enumeration value="edgePriority"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="fringe" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="default"/>
<xsd:enumeration value="outer"/>
<xsd:enumeration value="inner"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="roundabout" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="1"/>
<xsd:enumeration value="0"/>
<xsd:enumeration value="default"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="nodeType">
<xsd:complexContent>
<xsd:extension base="nodeTypeWithoutID">
<xsd:attribute name="id" type="idType" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="deleteType">
<xsd:attribute name="id" type="idType" use="required"/>
</xsd:complexType>
<xsd:complexType name="joinType">
<xsd:complexContent>
<xsd:extension base="nodeTypeWithoutID">
<xsd:attribute name="nodes" type="xsd:string" use="required"/>
<xsd:attribute name="id" type="idType" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="joinExcludeType">
<xsd:attribute name="nodes" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:simpleType name="tlLayoutType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="opposites"/>
<xsd:enumeration value="incoming"/>
<xsd:enumeration value="alternateOneWay"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>