From f5e6b480bfc854616d628e3ae525a2a2df255e40 Mon Sep 17 00:00:00 2001
From: ankraft <an.kraft@googlemail.com>
Date: Wed, 30 Jan 2019 17:42:50 +0100
Subject: [PATCH] Added support for DataTypes under Domain. Added test case.

---
 SDT/schema4.0/etc/domain.rnc          |  1 +
 SDT/schema4.0/src/domain.rng          |  7 +++++++
 SDT/schema4.0/src/domain.xsd          |  8 ++++++++
 SDT/schema4.0/test/datatypes-test.xml | 17 +++++++++++++++++
 SDT/schema4.0/test/enumtype-test.xml  |  2 +-
 5 files changed, 34 insertions(+), 1 deletion(-)
 create mode 100644 SDT/schema4.0/test/datatypes-test.xml

diff --git a/SDT/schema4.0/etc/domain.rnc b/SDT/schema4.0/etc/domain.rnc
index d30de59..4efe881 100644
--- a/SDT/schema4.0/etc/domain.rnc
+++ b/SDT/schema4.0/etc/domain.rnc
@@ -14,6 +14,7 @@ Domain =
     attribute id { xsd:ID },
     DocDef,
     element Imports { Domain+ }?,
+    element DataTypes { DataTypeDef+ }?,
     ModuleClasses?,
     element DeviceClasses {
       element DeviceClass {
diff --git a/SDT/schema4.0/src/domain.rng b/SDT/schema4.0/src/domain.rng
index 188fa93..fd4813f 100644
--- a/SDT/schema4.0/src/domain.rng
+++ b/SDT/schema4.0/src/domain.rng
@@ -36,6 +36,13 @@
 					</oneOrMore>
 				</element>
 			</optional>
+			<optional>
+				<element name="DataTypes">
+					<oneOrMore>
+						<ref name="DataTypeDef"/>
+					</oneOrMore>
+				</element>
+			</optional>
 			<optional>
 				<ref name="ModuleClasses"/>
 			</optional>
diff --git a/SDT/schema4.0/src/domain.xsd b/SDT/schema4.0/src/domain.xsd
index 72a7717..8222d4b 100644
--- a/SDT/schema4.0/src/domain.xsd
+++ b/SDT/schema4.0/src/domain.xsd
@@ -20,6 +20,7 @@
       <xs:sequence>
         <xs:group ref="DocDef"/>
         <xs:element minOccurs="0" ref="Imports"/>
+        <xs:element minOccurs="0" ref="DataTypes"/>
         <xs:element minOccurs="0" ref="ModuleClasses"/>
         <xs:element minOccurs="0" ref="DeviceClasses"/>
       </xs:sequence>
@@ -34,6 +35,13 @@
       </xs:sequence>
     </xs:complexType>
   </xs:element>
+  <xs:element name="DataTypes">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="DataType"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
   <xs:element name="DeviceClasses">
     <xs:complexType>
       <xs:sequence>
diff --git a/SDT/schema4.0/test/datatypes-test.xml b/SDT/schema4.0/test/datatypes-test.xml
new file mode 100644
index 0000000..782b26f
--- /dev/null
+++ b/SDT/schema4.0/test/datatypes-test.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Test the data types references -->
+
+<Domain id="datatypes-test" xmlns="http://homegatewayinitiative.org/xml/dal/4.0" xmlns:xi="http://www.w3.org/2001/XInclude">
+	<DataTypes>
+		<DataType name="temperatureType" unitOfMeasure="C">
+			<SimpleType type="float"/>
+		</DataType>
+		<DataType name="anEnumType">
+			<EnumType>
+				<EnumValue name="red" type="integer" value="1"/>
+				<EnumValue name="green" value="2"/>
+				<EnumValue name="blue" value="3"/>
+			</EnumType>
+		</DataType>
+	</DataTypes>
+</Domain>
\ No newline at end of file
diff --git a/SDT/schema4.0/test/enumtype-test.xml b/SDT/schema4.0/test/enumtype-test.xml
index 2b7a418..2d92b51 100644
--- a/SDT/schema4.0/test/enumtype-test.xml
+++ b/SDT/schema4.0/test/enumtype-test.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Test the void BasicType -->
+<!-- Test the EnumType -->
 
 <Domain id="enumtype-test" xmlns="http://homegatewayinitiative.org/xml/dal/4.0" xmlns:xi="http://www.w3.org/2001/XInclude">
 	<ModuleClasses>
-- 
GitLab