diff --git a/xmlschema/doocs_variable_tree.xsd b/xmlschema/doocs_variable_tree.xsd index 10d6e31cd05982bd0efb8063e11aa9c81aac1775..ea0d6b4ab211996308df9ee3e685c58057115c8d 100644 --- a/xmlschema/doocs_variable_tree.xsd +++ b/xmlschema/doocs_variable_tree.xsd @@ -12,34 +12,50 @@ </xs:documentation> </xs:annotation> - <xs:element name="device_server" type="DeviceType"/> + <xs:element name="device_server" type="Device"/> - <xs:complexType name="DeviceType"> + <xs:complexType name="Device"> <xs:sequence> - <xs:element name="location" type="LocationType" minOccurs="0" maxOccurs="unbounded"/> + <xs:group ref="PropertyDetails"/> + <xs:element name="location" type="Location" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="import" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> - <xs:complexType name="LocationType"> + <xs:complexType name="Location"> <xs:sequence> - <xs:element name="property" type="PropertyType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="import" type="LocationImportType" minOccurs="0" maxOccurs="unbounded"/> + <xs:group ref="PropertyDetails"/> + <xs:element name="property" type="Property" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="import" type="LocationImport" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> </xs:complexType> - <xs:complexType name="PropertyType"> + <xs:complexType name="Property"> <xs:sequence> - <xs:element name="has_history" type="xs:boolean" default="true" minOccurs="0"/> - <xs:element name="is_writeable" type="xs:boolean" default="true" minOccurs="0"/> - <xs:element name="spectrum" type="SpectrumType" minOccurs="0"/> + <xs:group ref="PropertyDetails"/> </xs:sequence> <xs:attribute name="source" type="xs:string" use="required"/> <xs:attribute name="name" type="xs:string"/> </xs:complexType> + + <!-- This group describes if a "DOOCS property" has history, which type it is etc. + Unfortunately the name property is already taken (otherwise I would call it property of a + process variable), and attribute is taken by xml (it cannot be an xml attribute because + those are only simple types, and to call the group PropertyAttributes but they are not + xml attributes would be completely confusing). + Also the Device and the Location will have PropertyDetails, which will serve as default + values. + --> + <xs:group name="PropertyDetails"> + <xs:sequence> + <xs:element name="has_history" type="xs:boolean" default="true" minOccurs="0"/> + <xs:element name="is_writeable" type="xs:boolean" default="true" minOccurs="0"/> + <xs:element name="spectrum" type="Spectrum" minOccurs="0"/> + </xs:sequence> + </xs:group> - <xs:complexType name="LocationImportType"> + <xs:complexType name="LocationImport"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="directory" type="xs:string" /> @@ -47,7 +63,7 @@ </xs:simpleContent> </xs:complexType> - <xs:complexType name="SpectrumType"> + <xs:complexType name="Spectrum"> <xs:attribute name="start" type="xs:float" default="0.0"/> <xs:attribute name="increment" type="xs:float" default="1.0"/> </xs:complexType>