123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- <?xml version="1.0"?>
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!--
- ===================================================================
- EXECUTABLE
- Root element
- ===================================================================
- -->
- <xsd:element name="executable">
- <xsd:complexType>
- <xsd:sequence>
-
- <!-- 'title' and 'description' elements are required -->
- <xsd:element maxOccurs="1" minOccurs="0" name="category" type="xsd:string"/>
- <xsd:element maxOccurs="1" name="title" type="xsd:string"/>
- <xsd:element maxOccurs="1" name="description" type="xsd:string"/>
- <xsd:element maxOccurs="1" minOccurs="0" name="version" type="xsd:string"/>
- <xsd:element maxOccurs="1" minOccurs="0" name="documentation-url" type="xsd:string"/>
- <xsd:element maxOccurs="1" minOccurs="0" name="license" type="xsd:string"/>
- <xsd:element maxOccurs="1" minOccurs="0" name="contributor" type="xsd:string"/>
- <xsd:element maxOccurs="1" minOccurs="0" name="acknowledgements" type="xsd:string"/>
-
- <!-- Parameter group elements -->
- <xsd:element maxOccurs="unbounded" name="parameters" type="parameters"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <!--
- ===================================================================
- PARAMETER GROUP
- ===================================================================
- -->
- <xsd:complexType name="parameters">
- <xsd:sequence>
-
- <!-- Required elements for a parameter group -->
- <xsd:element name="label" type="xsd:string"/>
- <xsd:element name="description" type="xsd:string"/>
-
- <!-- At least one parameter definition is required in the group -->
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="integer" type="scalarType"/>
- <xsd:element name="integer-vector" type="scalarVectorType"/>
- <xsd:element name="boolean" type="paramType"/>
- <xsd:element name="float" type="scalarType"/>
- <xsd:element name="float-vector" type="scalarVectorType"/>
- <xsd:element name="double" type="scalarType"/>
- <xsd:element name="double-vector" type="scalarVectorType"/>
- <xsd:element name="string" type="multipleType"/>
- <xsd:element name="string-vector" type="paramType"/>
- <xsd:element name="point" type="pointType"/>
- <xsd:element name="region" type="pointType"/>
- <xsd:element name="string-enumeration" type="enumerationType"/>
- <xsd:element name="integer-enumeration" type="enumerationType"/>
- <xsd:element name="float-enumeration" type="enumerationType"/>
- <xsd:element name="double-enumeration" type="enumerationType"/>
- <xsd:element name="file" type="fileType"/>
- <xsd:element name="directory" type="multipleType"/>
- <xsd:element name="image" type="imageType"/>
- <xsd:element name="geometry" type="geometryType"/>
- <!--
- <xsd:element name="transform" type="transformType"/>
- <xsd:element name="table" type="tableType"/>
- <xsd:element name="measurement" type="measurementType"/>
- -->
- </xsd:choice>
-
- </xsd:sequence>
-
- <!-- Parameter group attributes -->
- <xsd:attribute default="false" name="advanced" type="xsd:boolean"/>
- </xsd:complexType>
- <!--
- ===================================================================
- PARAMETER
- Defines common sub-elements and attributes.
- ===================================================================
- -->
- <xsd:complexType name="paramType">
- <xsd:sequence>
- <xsd:element name="name">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="[_a-zA-Z][_a-zA-Z0-9]*"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:element>
- <!-- either 'flag' or 'longflag' (or both) or 'index' are required -->
- <xsd:choice>
- <xsd:sequence>
- <xsd:element maxOccurs="1" name="flag" type="flagType"/>
- <xsd:element minOccurs="0" maxOccurs="1" name="longflag" type="longFlagType"/>
- </xsd:sequence>
- <xsd:element name="longflag" type="longFlagType"/>
- <xsd:element name="index" type="xsd:nonNegativeInteger"/>
- </xsd:choice>
- <xsd:element name="description" type="xsd:string"/>
- <xsd:element name="label" type="xsd:string"/>
- <xsd:element minOccurs="0" name="default" type="xsd:string"/>
-
- <!-- the 'channel' element is optional -->
- <xsd:element minOccurs="0" maxOccurs="1" name="channel">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="input"/>
- <xsd:enumeration value="output"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:element>
-
- </xsd:sequence>
-
- <!-- parameter attributes -->
- <xsd:attribute default="false" name="hidden" type="xsd:boolean"/>
- </xsd:complexType>
- <!--
- ===================================================================
- SCALAR VECTOR
- Extends paramType for vectors of integer, float, and double.
- ===================================================================
- -->
- <xsd:complexType name="scalarVectorType">
- <xsd:complexContent>
- <xsd:extension base="paramType">
- <xsd:sequence>
- <xsd:element minOccurs="0" name="constraints" type="constraintsType"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- <!--
- ===================================================================
- MULTIPLE PARAMETER
- Extends paramType for parameters which can appear multiple times on the command line.
- ===================================================================
- -->
- <xsd:complexType name="multipleType">
- <xsd:complexContent>
- <xsd:extension base="paramType">
- <xsd:attribute default="false" name="multiple" type="xsd:boolean"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- <!--
- ===================================================================
- SCALAR PARAMETER
- Extends multipleType for scalar parameters with constraints (integer, float, double).
- ===================================================================
- -->
- <xsd:complexType name="scalarType">
- <xsd:complexContent>
- <xsd:extension base="multipleType">
- <xsd:sequence>
- <xsd:element minOccurs="0" name="constraints" type="constraintsType"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <!--
- ===================================================================
- ENUMERATION PARAMETER
- Extends paramType for scalar and string enumeration parameters (integer, float, double, string).
- ===================================================================
- -->
- <xsd:complexType name="enumerationType">
- <xsd:complexContent>
- <xsd:extension base="paramType">
- <xsd:sequence>
- <xsd:element maxOccurs="unbounded" name="element" type="xsd:string"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- <!--
- ===================================================================
- POINT PARAMETER
- Extends multipleType for parameters with point-like values (point and region).
- ===================================================================
- -->
- <xsd:complexType name="pointType">
- <xsd:complexContent>
- <xsd:extension base="multipleType">
- <xsd:attribute name="coordinateSystem">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="ras"/>
- <xsd:enumeration value="ijk"/>
- <xsd:enumeration value="lps"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:attribute>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <!--
- ===================================================================
- GEOMETRY PARAMETER
- Extends multipleType for geometry parameters (geometry).
- ===================================================================
- -->
- <xsd:complexType name="geometryType">
- <xsd:complexContent>
- <xsd:extension base="multipleType">
- <xsd:attribute name="fileExtensions" type="xsd:string"/>
- <xsd:attribute name="type">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="fiberbundle"/>
- <xsd:enumeration value="model"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:attribute>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <!--
- ===================================================================
- FILE PARAMETER
- Extends channelType for parameters with input/output semantics and file extension
- information (file, image).
- ===================================================================
- -->
- <xsd:complexType name="fileType">
- <xsd:complexContent>
- <xsd:extension base="multipleType">
- <xsd:attribute name="fileExtensions" type="xsd:string"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- <!--
- ===================================================================
- IMAGE PARAMETER
- Extends fileType for image parameters (image).
- ===================================================================
- -->
- <xsd:complexType name="imageType">
- <xsd:complexContent>
- <xsd:extension base="fileType">
- <xsd:attribute name="type">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="scalar"/>
- <xsd:enumeration value="label"/>
- <xsd:enumeration value="tensor"/>
- <xsd:enumeration value="diffusion-weighted"/>
- <xsd:enumeration value="vector"/>
- <xsd:enumeration value="model"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:attribute>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <!--
- ===================================================================
- ***** UTILITY TYPES *****
- ===================================================================
- -->
-
- <xsd:simpleType name="flagValueType">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="-?[a-zA-Z]"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:complexType name="flagType">
- <xsd:simpleContent>
- <xsd:extension base="flagValueType">
- <xsd:attribute name="alias" type="xsd:string"/>
- <xsd:attribute name="deprecatedalias" type="xsd:string"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
- <xsd:simpleType name="longFlagValueType">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="-?-?[_a-zA-Z][_a-zA-Z0-9]*"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:complexType name="longFlagType">
- <xsd:simpleContent>
- <xsd:extension base="longFlagValueType">
- <xsd:attribute name="alias" type="xsd:string"/>
- <xsd:attribute name="deprecatedalias" type="xsd:string"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
- <!-- constraints for scalar parameters (integer, double, float) -->
- <xsd:complexType name="constraintsType">
- <xsd:all>
- <xsd:element minOccurs="0" name="minimum" type="xsd:double"/>
- <xsd:element minOccurs="0" name="maximum" type="xsd:double"/>
- <xsd:element name="step" type="xsd:double"/>
- </xsd:all>
- </xsd:complexType>
- </xsd:schema>
|