point to the XML Schema from each XML file - helpful in an XML-aware editor such as eclipse

git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@13178 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
This commit is contained in:
jemian
2011-07-17 03:03:13 +00:00
parent 8f15a46066
commit 048bd40673
2 changed files with 150 additions and 174 deletions

View File

@@ -24,228 +24,158 @@
<xs:element name="NXroot" >
<xs:complexType>
<xs:sequence>
<xs:element ref="Facility"/>
<xs:element ref="NXentry"/>
<xs:element ref="Facility" minOccurs="0"/> <!-- not recommended for new projects -->
<xs:element ref="NXentry" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="Facility">
<!-- legacy group from CCDImageServer, not a NeXus group and ignored -->
<xs:complexType>
<xs:sequence>
<xs:element ref="facility_name"/>
<xs:element ref="facility_sector"/>
<xs:element ref="facility_beamline"/>
<xs:element ref="facility_station"/>
<xs:element ref="facility_float"/>
<xs:element ref="facility_int"/>
<xs:element name="facility_name" type="commonElement"/>
<xs:element name="facility_sector" type="commonElement"/>
<xs:element name="facility_beamline" type="commonElement"/>
<xs:element name="facility_station" type="commonElement"/>
<xs:element name="facility_float" type="commonElement"/>
<xs:element name="facility_int" type="commonElement"/>
</xs:sequence>
<xs:attribute name="type" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="facility_name">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:NCName">
<xs:attribute name="outtype" use="required" type="xs:NCName"/>
<xs:attribute name="type" use="required" type="xs:NCName"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="facility_sector">
<xs:complexType mixed="true">
<xs:attribute name="outtype" use="required" type="xs:NCName"/>
<xs:attribute name="type" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="facility_beamline">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:NMTOKEN">
<xs:attribute name="outtype" use="required" type="xs:NCName"/>
<xs:attribute name="type" use="required" type="xs:NCName"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="facility_station">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:NCName">
<xs:attribute name="outtype" use="required" type="xs:NCName"/>
<xs:attribute name="type" use="required" type="xs:NCName"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="facility_float">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="outtype" use="required" type="xs:NCName"/>
<xs:attribute name="type" use="required" type="xs:NCName"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="facility_int">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="outtype" use="required" type="xs:NCName"/>
<xs:attribute name="type" use="required" type="xs:NCName"/>
</xs:extension>
</xs:simpleContent>
<xs:attribute name="type" use="required" fixed="UserGroup"/>
</xs:complexType>
</xs:element>
<xs:element name="NXentry">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="experiment_identifier"/>
<xs:element ref="experiment_description"/>
<xs:element ref="experiment_documentation"/>
<xs:element ref="collection_identifier"/>
<xs:element ref="collection_description"/>
<xs:element ref="entry_identifier"/>
<xs:element ref="definition"/>
<xs:element ref="start_time"/>
<xs:element ref="end_time"/>
<xs:element ref="duration"/>
<xs:element ref="collection_time"/>
<xs:element ref="run_cycle"/>
<xs:element ref="program_name"/>
<xs:element ref="revision"/>
<xs:element ref="notes"/>
<xs:element ref="NXuser"/>
<xs:element ref="NXdata"/>
<xs:element ref="NXinstrument"/>
<xs:element minOccurs="0" ref="NXcollection"/>
<xs:element name="title" type="commonElement"/>
<xs:element name="experiment_identifier" type="commonElement"/>
<xs:element name="experiment_description" type="commonElement"/>
<xs:element name="experiment_documentation" type="commonElement"/>
<xs:element name="collection_identifier" type="commonElement"/>
<xs:element name="collection_description" type="commonElement"/>
<xs:element name="entry_identifier" type="commonElement"/>
<xs:element name="definition" type="commonElement"/>
<xs:element name="start_time" type="commonElement"/>
<xs:element name="end_time" type="commonElement"/>
<xs:element name="duration" type="commonElement"/>
<xs:element name="collection_time" type="commonElement"/>
<xs:element name="run_cycle" type="commonElement"/>
<xs:element name="program_name" type="commonElement"/>
<xs:element name="revision" type="commonElement"/>
<xs:element name="notes" type="commonElement"/>
<xs:element ref="NXuser" minOccurs="0"/>
<xs:element ref="NXdata" minOccurs="1" maxOccurs="unbounded"/>
<xs:element ref="NXinstrument" minOccurs="0"/>
<xs:element ref="NXcollection" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="title" type="commonElement"/>
<xs:element name="experiment_identifier" type="commonElement"/>
<xs:element name="experiment_description" type="commonElement"/>
<xs:element name="experiment_documentation" type="commonElement"/>
<xs:element name="collection_identifier" type="commonElement"/>
<xs:element name="collection_description" type="commonElement"/>
<xs:element name="entry_identifier" type="commonElement"/>
<xs:element name="definition" type="commonElement"/>
<xs:element name="start_time" type="commonElement"/>
<xs:element name="end_time" type="commonElement"/>
<xs:element name="duration" type="commonElement"/>
<xs:element name="collection_time" type="commonElement"/>
<xs:element name="run_cycle" type="commonElement"/>
<xs:element name="program_name" type="commonElement"/>
<xs:element name="revision" type="commonElement"/>
<xs:element name="notes" type="commonElement"/>
<xs:element name="NXuser">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="role"/>
<xs:element ref="affiliation"/>
<xs:element ref="address"/>
<xs:element ref="telephone_number"/>
<xs:element ref="fax_number"/>
<xs:element ref="email"/>
<xs:element ref="facility_user_id"/>
<xs:element name="name" type="commonElement"/>
<xs:element name="role" type="commonElement"/>
<xs:element name="affiliation" type="commonElement"/>
<xs:element name="address" type="commonElement"/>
<xs:element name="telephone_number" type="commonElement"/>
<xs:element name="fax_number" type="commonElement"/>
<xs:element name="email" type="commonElement"/>
<xs:element name="facility_user_id" type="commonElement"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="role" type="commonElement"/>
<xs:element name="affiliation" type="commonElement"/>
<xs:element name="address" type="commonElement"/>
<xs:element name="telephone_number" type="commonElement"/>
<xs:element name="fax_number" type="commonElement"/>
<xs:element name="email" type="commonElement"/>
<xs:element name="facility_user_id" type="commonElement"/>
<xs:element name="NXdata">
<xs:complexType>
<xs:sequence>
<xs:element ref="maxSizeX"/>
<xs:element ref="maxSizeY"/>
<xs:element ref="make"/>
<xs:element ref="model"/>
<xs:element minOccurs="0" ref="ImageCounter"/>
<xs:element ref="data"/>
<xs:element name="maxSizeX" type="commonElement"/>
<xs:element name="maxSizeY" type="commonElement"/>
<xs:element name="make" type="commonElement"/>
<xs:element name="model" type="commonElement"/>
<xs:element name="ImageCounter" type="commonElement" minOccurs="0" />
<!-- TODO: special attention needed here
This sets the name of the data to "data" which is not required by NeXus.
Also, it is necessary to require a signal="1" attribute definition
for only one dataset in the NXdata group:
<Attr name="signal" type="CONST" outtype="NX_CHAR">1</Attr>
Perhaps we need to switch from XML Schema to Schematron to validate template.xml files?
-->
<xs:element name="data" type="dataElement"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="maxSizeX" type="commonElement"/>
<xs:element name="maxSizeY" type="commonElement"/>
<xs:element name="make" type="commonElement"/>
<xs:element name="model" type="commonElement"/>
<xs:element name="ImageCounter" type="commonElement"/>
<xs:element name="data" type="commonElement"/>
<xs:element name="NXinstrument">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element ref="NXinsertion_device"/>
<xs:element ref="NXsource"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="NXinsertion_device">
<xs:complexType>
<xs:sequence>
<xs:element ref="type"/>
<xs:element ref="energy"/>
<xs:element name="type" type="commonElement"/>
<xs:element name="energy" type="commonElement"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="energy" type="commonElement"/>
<xs:element name="NXsource">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="type"/>
<xs:element ref="probe"/>
<xs:element ref="current"/>
<xs:element ref="top_up"/>
<xs:element name="name" type="commonElement"/>
<xs:element name="type" type="commonElement"/>
<xs:element name="probe" type="commonElement"/>
<xs:element name="current" type="commonElement"/>
<xs:element name="top_up" type="commonElement"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="probe" type="commonElement"/>
<xs:element name="current" type="commonElement"/>
<xs:element name="top_up" type="commonElement"/>
<xs:element name="NXcollection">
<xs:complexType>
<xs:sequence>
<xs:element ref="beamline"/>
<xs:element name="beamline" type="commonElement"/>
</xs:sequence>
<xs:attributeGroup ref="common_attributes"/>
<xs:attribute name="name" type="type_NeXus_name" />
</xs:complexType>
</xs:element>
<xs:element name="beamline" type="xs:NMTOKEN"/>
<xs:element name="name" type="commonElement"/>
<xs:element name="type" type="commonElement"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="commonElement" mixed="true">
<xs:group ref="Attr_group"/>
<xs:attributeGroup ref="common_attributes"/>
</xs:complexType>
<xs:complexType name="dataElement" mixed="true">
<xs:group ref="Attr_group"/>
<xs:attributeGroup ref="data_attributes"/>
</xs:complexType>
<xs:attributeGroup name="common_attributes">
<xs:attribute name="name" type="xs:NCName"/>
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ATTR"/>
<xs:enumeration value="CONST"/>
<xs:enumeration value="ND_ATTR"/>
<xs:enumeration value="pArray"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="name" type="type_NeXus_name"/>
<xs:attribute name="type" type="type_basic_values"/>
<xs:attribute name="outtype" type="xs:string"/>
<xs:attribute name="source" type="xs:string"/>
</xs:attributeGroup>
<xs:attributeGroup name="data_attributes">
<xs:attribute name="name" type="type_NeXus_name"/>
<xs:attribute name="type" type="type_basic_values_and_pArray"/>
<xs:attribute name="outtype" type="xs:string"/>
<xs:attribute name="source" type="xs:string"/>
</xs:attributeGroup>
@@ -254,21 +184,66 @@
<xs:sequence>
<xs:element name="Attr" minOccurs="0" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:attribute name="name" type="xs:NCName"/>
<xs:attribute name="name" type="type_NeXus_name"/>
<xs:attribute name="outtype" type="xs:string"/>
<xs:attribute name="source"></xs:attribute>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ATTR"/>
<xs:enumeration value="CONST"/>
<xs:enumeration value="ND_ATTR"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="source" type="type_source"/>
<xs:attribute name="type" use="required" type="type_basic_values"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!-- There are only two kinds values allowed for the "type" attribute -->
<xs:simpleType name="type_basic_values_and_pArray">
<xs:union memberTypes="type_pArray type_ATTR type_CONST type_ND_ATTR"/>
</xs:simpleType>
<xs:simpleType name="type_basic_values">
<xs:union memberTypes="type_ATTR type_CONST type_ND_ATTR"/>
</xs:simpleType>
<!-- These definitions look simplistic, here's why:
Define each term here with the text appearing only once,
then every instance using the definition can be validated
for correct spelling.
-->
<xs:simpleType name="type_pArray">
<xs:restriction base="xs:string">
<xs:enumeration value="pArray"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="type_ATTR">
<xs:restriction base="xs:string">
<xs:enumeration value="ATTR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="type_CONST">
<xs:restriction base="xs:string">
<xs:enumeration value="CONST"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="type_ND_ATTR">
<xs:restriction base="xs:string">
<xs:enumeration value="ND_ATTR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="type_source">
<!-- must match rule for "name" attribute in attributes.xsd -->
<xs:restriction base="xs:token">
<xs:pattern value="[A-Za-z_][\w_]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="type_NeXus_name">
<xs:restriction base="xs:token">
<xs:pattern value="[A-Za-z_][\w_]*" /> <!-- NeXus restrictions to HDF5 naming rule -->
<xs:maxLength value="63" /> <!-- HDF5 rule -->
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@@ -94,6 +94,7 @@
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" use="required">
<!-- must match rule for "source" attribute in NeXus_templates.xsd -->
<xs:annotation>
<xs:documentation>
One-word mnemonic reference that determines the name of the NDAttribute.