diff --git a/SDT/schema4.0/etc/domain.rnc b/SDT/schema4.0/etc/domain.rnc index ca1ff61fae8225b7fec32288ca171ea03ce7fd92..ef0aa0e32f164938cec86ba864cb51e66e296b15 100644 --- a/SDT/schema4.0/etc/domain.rnc +++ b/SDT/schema4.0/etc/domain.rnc @@ -18,7 +18,7 @@ Domain = element DataTypes { DataTypeDef+ }?, ModuleClassesDef?, DeviceClassesDef?, - ProductsDef? + ProductClassesDef? } PropertiesDef = element Properties { @@ -128,19 +128,16 @@ ModuleClassesDef = Events? }+ } -ProductsDef = - element Products { - element Product { +ProductClassesDef = + element ProductClasses { + element ProductClass { attribute id { xsd:Name }, attribute semanticURI { xsd:anyURI }?, DocDef, PropertiesDef?, ModuleClassesDef?, SubDevicesRef?, - element DeviceClass { - # TODO: Make optional? - ExtendDef - }, + element DeviceClass { ExtendDef }?, ExtendDef? }+ } diff --git a/SDT/schema4.0/src/domain.rng b/SDT/schema4.0/src/domain.rng index b614d10ac4d4a980ebf6ca18da572fdf96c24ef8..678c45d5311e27a3ee20519ca3b9687587b6a972 100644 --- a/SDT/schema4.0/src/domain.rng +++ b/SDT/schema4.0/src/domain.rng @@ -55,7 +55,7 @@ <ref name="DeviceClassesDef" /> </optional> <optional> - <ref name="ProductsDef" /> + <ref name="ProductClassesDef" /> </optional> </element> </define> @@ -366,10 +366,10 @@ </define> - <define name="ProductsDef"> - <element name="Products"> + <define name="ProductClassesDef"> + <element name="ProductClasses"> <oneOrMore> - <element name="Product"> + <element name="ProductClass"> <attribute name="id"> <data type="Name"/> </attribute> @@ -388,9 +388,11 @@ <optional> <ref name="SubDevicesRef" /> </optional> - <element name="DeviceClass"> <!-- TODO: Make optional? --> - <ref name="ExtendDef" /> - </element> + <optional> + <element name="DeviceClass"> + <ref name="ExtendDef" /> + </element> + </optional> <optional> <ref name="ExtendDef" /> </optional> diff --git a/SDT/schema4.0/src/domain.xsd b/SDT/schema4.0/src/domain.xsd index 28b66b207f76bfd9ab1f4d98c268bceda4bb9735..2033f2617f72c0cf5a44d59b0629bbc0a7e1a1c1 100644 --- a/SDT/schema4.0/src/domain.xsd +++ b/SDT/schema4.0/src/domain.xsd @@ -24,7 +24,7 @@ <xs:element minOccurs="0" ref="DataTypes"/> <xs:element minOccurs="0" ref="ModuleClasses"/> <xs:element minOccurs="0" ref="DeviceClasses"/> - <xs:element minOccurs="0" ref="Products"/> + <xs:element minOccurs="0" ref="ProductClasses"/> </xs:sequence> <xs:attribute ref="xml:base"/> <xs:attribute name="id" use="required" type="xs:Name"/> @@ -275,14 +275,14 @@ </xs:complexContent> </xs:complexType> </xs:element> - <xs:element name="Products"> + <xs:element name="ProductClasses"> <xs:complexType> <xs:sequence> - <xs:element maxOccurs="unbounded" ref="Product"/> + <xs:element maxOccurs="unbounded" ref="ProductClass"/> </xs:sequence> </xs:complexType> </xs:element> - <xs:element name="Product"> + <xs:element name="ProductClass"> <xs:complexType> <xs:complexContent> <xs:extension base="DocDef"> @@ -290,7 +290,7 @@ <xs:element minOccurs="0" ref="Properties"/> <xs:element minOccurs="0" ref="ModuleClasses"/> <xs:element minOccurs="0" ref="SubDevices"/> - <xs:element name="DeviceClass"> + <xs:element minOccurs="0" name="DeviceClass"> <xs:complexType> <xs:sequence> <xs:element ref="Extend"/> diff --git a/SDT/schema4.0/test/product-test.xml b/SDT/schema4.0/test/product-test.xml index 1ac16dda94ebf575df00e3cfe8eacd6c840fdd06..719eee334d4d5234b8944d06f0eb35836f7fff6d 100644 --- a/SDT/schema4.0/test/product-test.xml +++ b/SDT/schema4.0/test/product-test.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<Domain xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude" id="deviceClass-test" > - <Products> - <Product id="TestProduct" semanticURI="http://example.com/TestProduct.rdf"> +<Domain xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude" id="productClass-test" > + <ProductClasses> + <ProductClass id="TestProduct" semanticURI="http://example.com/TestProduct.rdf"> <Doc>This is a test product</Doc> <Properties> <Property name="aProperty"> @@ -25,10 +25,21 @@ <DeviceClass> <Extend domain="deviceClass.test" entity="Test" /> </DeviceClass> - </Product> + </ProductClass> <!-- TODO: test <extends> element, but only when DeviceClas is optional <Product id="AnotherTestProduct"> </Product> --> - </Products> + + <!-- Derived ProductClass --> + + <ProductClass id="DerivedProduct" semanticURI="http://example.com/DerivedProduct.rdf"> + <ModuleClasses> + <ModuleClass name="anotherModuleClass"> + <Extend domain="hgi.dal.core" entity="BooleanState" /> + </ModuleClass> + </ModuleClasses> + <Extend domain="productClass.test" entity="TestProduct" /> + </ProductClass> + </ProductClasses> </Domain> \ No newline at end of file