<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
            xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
            targetNamespace="http://www.omg.org/spec/DMN/20180521/DI/"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified">
	<xsd:import namespace="http://www.omg.org/spec/DMN/20180521/DC/"
	            schemaLocation="DC.xsd"/>

	<xsd:annotation>
		<xsd:documentation>The Diagram Interchange (DI) package enables interchange of graphical information that language users have control over, such as position of nodes and line routing points. Language specifications specialize elements of DI to define diagram interchange elements for a language.</xsd:documentation>
	</xsd:annotation>

	<xsd:element name="Style" type="di:Style">
		<xsd:annotation>
			<xsd:documentation>This element should never be instantiated directly, but rather concrete implementation should. It is placed there only to be referred in the sequence</xsd:documentation>
		</xsd:annotation>
	</xsd:element>

	<xsd:complexType name="DiagramElement" abstract="true">
		<xsd:annotation>
			<xsd:documentation>DiagramElement is the abstract super type of all elements in diagrams, including diagrams themselves. When contained in a diagram, diagram elements are laid out relative to the diagram's origin.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="extension" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element ref="di:Style" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>an optional locally-owned style for this diagram element.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="sharedStyle" type="xsd:IDREF">
			<xsd:annotation>
				<xsd:documentation>a reference to an optional shared style element for this diagram element.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="id" type="xsd:ID"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>

	<xsd:complexType name="Diagram" abstract="true">
		<xsd:complexContent>
			<xsd:extension base="di:DiagramElement">			
				<xsd:attribute name="name" type="xsd:string">
					<xsd:annotation>
						<xsd:documentation>the name of the diagram.</xsd:documentation>
					</xsd:annotation>
				</xsd:attribute>
				<xsd:attribute name="documentation" type="xsd:string">
					<xsd:annotation>
						<xsd:documentation>the documentation of the diagram.</xsd:documentation>
					</xsd:annotation>
				</xsd:attribute>
				<xsd:attribute name="resolution" type="xsd:double">
					<xsd:annotation>
						<xsd:documentation>the resolution of the diagram expressed in user units per inch.</xsd:documentation>
					</xsd:annotation>
				</xsd:attribute>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="Shape" abstract="true">
		<xsd:complexContent>
			<xsd:extension base="di:DiagramElement">
				<xsd:sequence>
					<xsd:element ref="dc:Bounds" minOccurs="0" maxOccurs="1">
						<xsd:annotation>
							<xsd:documentation>the optional bounds of the shape relative to the origin of its nesting plane.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="Edge" abstract="true">
		<xsd:complexContent>
			<xsd:extension base="di:DiagramElement">
				<xsd:sequence>
					<xsd:element name="waypoint" type="dc:Point" minOccurs="0" maxOccurs="unbounded">
						<xsd:annotation>
							<xsd:documentation>an optional list of points relative to the origin of the nesting diagram that specifies the connected line segments of the edge</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="Style" abstract="true">
		<xsd:annotation>
			<xsd:documentation>Style contains formatting properties that affect the appearance or style of diagram elements, including diagram themselves.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="extension" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>

</xsd:schema>
