ctkCmdLineModule.xsd 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <?xml version="1.0"?>
  2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <!--
  4. ===================================================================
  5. EXECUTABLE
  6. Root element
  7. ===================================================================
  8. -->
  9. <xsd:element name="executable">
  10. <xsd:complexType>
  11. <xsd:sequence>
  12. <!-- 'title' and 'description' elements are required -->
  13. <xsd:element maxOccurs="1" minOccurs="0" name="category" type="xsd:string"/>
  14. <xsd:element maxOccurs="1" name="title" type="xsd:string"/>
  15. <xsd:element maxOccurs="1" name="description" type="xsd:string"/>
  16. <xsd:element maxOccurs="1" minOccurs="0" name="version" type="xsd:string"/>
  17. <xsd:element maxOccurs="1" minOccurs="0" name="documentation-url" type="xsd:string"/>
  18. <xsd:element maxOccurs="1" minOccurs="0" name="license" type="xsd:string"/>
  19. <xsd:element maxOccurs="1" minOccurs="0" name="contributor" type="xsd:string"/>
  20. <xsd:element maxOccurs="1" minOccurs="0" name="acknowledgements" type="xsd:string"/>
  21. <!-- Parameter group elements -->
  22. <xsd:element maxOccurs="unbounded" name="parameters" type="parameters"/>
  23. </xsd:sequence>
  24. </xsd:complexType>
  25. </xsd:element>
  26. <!--
  27. ===================================================================
  28. PARAMETER GROUP
  29. ===================================================================
  30. -->
  31. <xsd:complexType name="parameters">
  32. <xsd:sequence>
  33. <!-- Required elements for a parameter group -->
  34. <xsd:element name="label" type="xsd:string"/>
  35. <xsd:element name="description" type="xsd:string"/>
  36. <!-- At least one parameter definition is required in the group -->
  37. <xsd:choice maxOccurs="unbounded">
  38. <xsd:element name="integer" type="scalarType"/>
  39. <xsd:element name="integer-vector" type="scalarVectorType"/>
  40. <xsd:element name="boolean" type="paramType"/>
  41. <xsd:element name="float" type="scalarType"/>
  42. <xsd:element name="float-vector" type="scalarVectorType"/>
  43. <xsd:element name="double" type="scalarType"/>
  44. <xsd:element name="double-vector" type="scalarVectorType"/>
  45. <xsd:element name="string" type="multipleType"/>
  46. <xsd:element name="string-vector" type="paramType"/>
  47. <xsd:element name="point" type="pointType"/>
  48. <xsd:element name="region" type="pointType"/>
  49. <xsd:element name="string-enumeration" type="enumerationType"/>
  50. <xsd:element name="integer-enumeration" type="enumerationType"/>
  51. <xsd:element name="float-enumeration" type="enumerationType"/>
  52. <xsd:element name="double-enumeration" type="enumerationType"/>
  53. <xsd:element name="file" type="fileType"/>
  54. <xsd:element name="directory" type="multipleType"/>
  55. <xsd:element name="image" type="imageType"/>
  56. <xsd:element name="geometry" type="geometryType"/>
  57. <!--
  58. <xsd:element name="transform" type="transformType"/>
  59. <xsd:element name="table" type="tableType"/>
  60. <xsd:element name="measurement" type="measurementType"/>
  61. -->
  62. </xsd:choice>
  63. </xsd:sequence>
  64. <!-- Parameter group attributes -->
  65. <xsd:attribute default="false" name="advanced" type="xsd:boolean"/>
  66. </xsd:complexType>
  67. <!--
  68. ===================================================================
  69. PARAMETER
  70. Defines common sub-elements and attributes.
  71. ===================================================================
  72. -->
  73. <xsd:complexType name="paramType">
  74. <xsd:sequence>
  75. <xsd:element name="name">
  76. <xsd:simpleType>
  77. <xsd:restriction base="xsd:string">
  78. <xsd:pattern value="[_a-zA-Z][_a-zA-Z0-9]*"/>
  79. </xsd:restriction>
  80. </xsd:simpleType>
  81. </xsd:element>
  82. <!-- either 'flag' or 'longflag' (or both) or 'index' are required -->
  83. <xsd:choice>
  84. <xsd:sequence>
  85. <xsd:element maxOccurs="1" name="flag" type="flagType"/>
  86. <xsd:element minOccurs="0" maxOccurs="1" name="longflag" type="longFlagType"/>
  87. </xsd:sequence>
  88. <xsd:element name="longflag" type="longFlagType"/>
  89. <xsd:element name="index" type="xsd:nonNegativeInteger"/>
  90. </xsd:choice>
  91. <xsd:element name="description" type="xsd:string"/>
  92. <xsd:element name="label" type="xsd:string"/>
  93. <xsd:element minOccurs="0" name="default" type="xsd:string"/>
  94. <!-- the 'channel' element is optional -->
  95. <xsd:element minOccurs="0" maxOccurs="1" name="channel">
  96. <xsd:simpleType>
  97. <xsd:restriction base="xsd:string">
  98. <xsd:enumeration value="input"/>
  99. <xsd:enumeration value="output"/>
  100. </xsd:restriction>
  101. </xsd:simpleType>
  102. </xsd:element>
  103. </xsd:sequence>
  104. <!-- parameter attributes -->
  105. <xsd:attribute default="false" name="hidden" type="xsd:boolean"/>
  106. </xsd:complexType>
  107. <!--
  108. ===================================================================
  109. SCALAR VECTOR
  110. Extends paramType for vectors of integer, float, and double.
  111. ===================================================================
  112. -->
  113. <xsd:complexType name="scalarVectorType">
  114. <xsd:complexContent>
  115. <xsd:extension base="paramType">
  116. <xsd:sequence>
  117. <xsd:element minOccurs="0" name="constraints" type="constraintsType"/>
  118. </xsd:sequence>
  119. </xsd:extension>
  120. </xsd:complexContent>
  121. </xsd:complexType>
  122. <!--
  123. ===================================================================
  124. MULTIPLE PARAMETER
  125. Extends paramType for parameters which can appear multiple times on the command line.
  126. ===================================================================
  127. -->
  128. <xsd:complexType name="multipleType">
  129. <xsd:complexContent>
  130. <xsd:extension base="paramType">
  131. <xsd:attribute default="false" name="multiple" type="xsd:boolean"/>
  132. </xsd:extension>
  133. </xsd:complexContent>
  134. </xsd:complexType>
  135. <!--
  136. ===================================================================
  137. SCALAR PARAMETER
  138. Extends multipleType for scalar parameters with constraints (integer, float, double).
  139. ===================================================================
  140. -->
  141. <xsd:complexType name="scalarType">
  142. <xsd:complexContent>
  143. <xsd:extension base="multipleType">
  144. <xsd:sequence>
  145. <xsd:element minOccurs="0" name="constraints" type="constraintsType"/>
  146. </xsd:sequence>
  147. </xsd:extension>
  148. </xsd:complexContent>
  149. </xsd:complexType>
  150. <!--
  151. ===================================================================
  152. ENUMERATION PARAMETER
  153. Extends paramType for scalar and string enumeration parameters (integer, float, double, string).
  154. ===================================================================
  155. -->
  156. <xsd:complexType name="enumerationType">
  157. <xsd:complexContent>
  158. <xsd:extension base="paramType">
  159. <xsd:sequence>
  160. <xsd:element maxOccurs="unbounded" name="element" type="xsd:string"/>
  161. </xsd:sequence>
  162. </xsd:extension>
  163. </xsd:complexContent>
  164. </xsd:complexType>
  165. <!--
  166. ===================================================================
  167. POINT PARAMETER
  168. Extends multipleType for parameters with point-like values (point and region).
  169. ===================================================================
  170. -->
  171. <xsd:complexType name="pointType">
  172. <xsd:complexContent>
  173. <xsd:extension base="multipleType">
  174. <xsd:attribute name="coordinateSystem">
  175. <xsd:simpleType>
  176. <xsd:restriction base="xsd:string">
  177. <xsd:enumeration value="ras"/>
  178. <xsd:enumeration value="ijk"/>
  179. <xsd:enumeration value="lps"/>
  180. </xsd:restriction>
  181. </xsd:simpleType>
  182. </xsd:attribute>
  183. </xsd:extension>
  184. </xsd:complexContent>
  185. </xsd:complexType>
  186. <!--
  187. ===================================================================
  188. GEOMETRY PARAMETER
  189. Extends multipleType for geometry parameters (geometry).
  190. ===================================================================
  191. -->
  192. <xsd:complexType name="geometryType">
  193. <xsd:complexContent>
  194. <xsd:extension base="multipleType">
  195. <xsd:attribute name="fileExtensions" type="xsd:string"/>
  196. <xsd:attribute name="type">
  197. <xsd:simpleType>
  198. <xsd:restriction base="xsd:string">
  199. <xsd:enumeration value="fiberbundle"/>
  200. <xsd:enumeration value="model"/>
  201. </xsd:restriction>
  202. </xsd:simpleType>
  203. </xsd:attribute>
  204. </xsd:extension>
  205. </xsd:complexContent>
  206. </xsd:complexType>
  207. <!--
  208. ===================================================================
  209. FILE PARAMETER
  210. Extends channelType for parameters with input/output semantics and file extension
  211. information (file, image).
  212. ===================================================================
  213. -->
  214. <xsd:complexType name="fileType">
  215. <xsd:complexContent>
  216. <xsd:extension base="multipleType">
  217. <xsd:attribute name="fileExtensions" type="xsd:string"/>
  218. </xsd:extension>
  219. </xsd:complexContent>
  220. </xsd:complexType>
  221. <!--
  222. ===================================================================
  223. IMAGE PARAMETER
  224. Extends fileType for image parameters (image).
  225. ===================================================================
  226. -->
  227. <xsd:complexType name="imageType">
  228. <xsd:complexContent>
  229. <xsd:extension base="fileType">
  230. <xsd:attribute name="type">
  231. <xsd:simpleType>
  232. <xsd:restriction base="xsd:string">
  233. <xsd:enumeration value="scalar"/>
  234. <xsd:enumeration value="label"/>
  235. <xsd:enumeration value="tensor"/>
  236. <xsd:enumeration value="diffusion-weighted"/>
  237. <xsd:enumeration value="vector"/>
  238. <xsd:enumeration value="model"/>
  239. </xsd:restriction>
  240. </xsd:simpleType>
  241. </xsd:attribute>
  242. </xsd:extension>
  243. </xsd:complexContent>
  244. </xsd:complexType>
  245. <!--
  246. ===================================================================
  247. ***** UTILITY TYPES *****
  248. ===================================================================
  249. -->
  250. <xsd:simpleType name="flagValueType">
  251. <xsd:restriction base="xsd:string">
  252. <xsd:pattern value="-?[a-zA-Z]"/>
  253. </xsd:restriction>
  254. </xsd:simpleType>
  255. <xsd:complexType name="flagType">
  256. <xsd:simpleContent>
  257. <xsd:extension base="flagValueType">
  258. <xsd:attribute name="alias" type="xsd:string"/>
  259. <xsd:attribute name="deprecatedalias" type="xsd:string"/>
  260. </xsd:extension>
  261. </xsd:simpleContent>
  262. </xsd:complexType>
  263. <xsd:simpleType name="longFlagValueType">
  264. <xsd:restriction base="xsd:string">
  265. <xsd:pattern value="-?-?[_a-zA-Z][_a-zA-Z0-9]*"/>
  266. </xsd:restriction>
  267. </xsd:simpleType>
  268. <xsd:complexType name="longFlagType">
  269. <xsd:simpleContent>
  270. <xsd:extension base="longFlagValueType">
  271. <xsd:attribute name="alias" type="xsd:string"/>
  272. <xsd:attribute name="deprecatedalias" type="xsd:string"/>
  273. </xsd:extension>
  274. </xsd:simpleContent>
  275. </xsd:complexType>
  276. <!-- constraints for scalar parameters (integer, double, float) -->
  277. <xsd:complexType name="constraintsType">
  278. <xsd:all>
  279. <xsd:element minOccurs="0" name="minimum" type="xsd:double"/>
  280. <xsd:element minOccurs="0" name="maximum" type="xsd:double"/>
  281. <xsd:element name="step" type="xsd:double"/>
  282. </xsd:all>
  283. </xsd:complexType>
  284. </xsd:schema>