Restructuring of si:list
Up to version 1.3.x of the D-SI XML scheme, si:list is a generic element name that can provide a list of si:real, si:complex or si:list elements. The underlying XSD structure was very difficult to develop and it turned out that such lists are
- hard to understand from view on the XML specification and
- difficult to read / write with software
Thus, splitting the si:list in sub elements with clear to understand names is suggested:
- Element si:reaList with clear to access structur of a list comprising real elements
- Element si:complexList with clear to access structur of a list comprising complex elements
- Element si:list only with a selection between type si:realList, si:complexList and si:list
<xs:complexType name="listType">
<xs:sequence>
<!-- optional label of the list -->
<xs:element name="label" type="xs:string" minOccurs="0"/>
<!-- optional list time stamp -->
<xs:element name="dateTime" type="xs:dateTime" minOccurs="0"/>
<!-- selection between list of lists and list of real or complex -->
<xs:choice>
<!-- either list of real -->
<xs:element name="reallist" type="si:realListType" minOccurs="1" maxOccurs="unbounded"/>
<!-- or list of complex -->
<xs:element name="complexlist" type="si:complexListType" minOccurs="1" maxOccurs="unbounded"/>
<!-- or list of lists -->
<xs:element name="list" type="si:listType" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
Taking into account that elements in lists can have global units: In the example of si:reaList, it is possible to globally define the unit of all real elements in the list. If a global unit is given, the real elements in the list must not provide a unit (the unit is for technical reason optional in the definition of the si:real element that is used in the list). The type of this real elements is named si:realinListType to make sufficient seperation from the stand-alone si-real element, where the unit is mandatory.