ctkCmdLineModule.xsd 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  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="channelType"/>
  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. </xsd:sequence>
  95. <!-- parameter attributes -->
  96. <xsd:attribute default="false" name="hidden" type="xsd:boolean"/>
  97. </xsd:complexType>
  98. <!--
  99. ===================================================================
  100. SCALAR VECTOR
  101. Extends paramType for vectors of integer, float, and double.
  102. ===================================================================
  103. -->
  104. <xsd:complexType name="scalarVectorType">
  105. <xsd:complexContent>
  106. <xsd:extension base="paramType">
  107. <xsd:sequence>
  108. <xsd:element minOccurs="0" name="constraints" type="constraintsType"/>
  109. </xsd:sequence>
  110. </xsd:extension>
  111. </xsd:complexContent>
  112. </xsd:complexType>
  113. <!--
  114. ===================================================================
  115. MULTIPLE PARAMETER
  116. Extends paramType for parameters which can appear multiple times on the command line.
  117. ===================================================================
  118. -->
  119. <xsd:complexType name="multipleType">
  120. <xsd:complexContent>
  121. <xsd:extension base="paramType">
  122. <xsd:attribute default="false" name="multiple" type="xsd:boolean"/>
  123. </xsd:extension>
  124. </xsd:complexContent>
  125. </xsd:complexType>
  126. <!--
  127. ===================================================================
  128. SCALAR PARAMETER
  129. Extends multipleType for scalar parameters with constraints (integer, float, double).
  130. ===================================================================
  131. -->
  132. <xsd:complexType name="scalarType">
  133. <xsd:complexContent>
  134. <xsd:extension base="multipleType">
  135. <xsd:sequence>
  136. <xsd:element minOccurs="0" name="constraints" type="constraintsType"/>
  137. </xsd:sequence>
  138. </xsd:extension>
  139. </xsd:complexContent>
  140. </xsd:complexType>
  141. <!--
  142. ===================================================================
  143. ENUMERATION PARAMETER
  144. Extends paramType for scalar and string enumeration parameters (integer, float, double, string).
  145. ===================================================================
  146. -->
  147. <xsd:complexType name="enumerationType">
  148. <xsd:complexContent>
  149. <xsd:extension base="paramType">
  150. <xsd:sequence>
  151. <xsd:element maxOccurs="unbounded" name="element" type="xsd:string"/>
  152. </xsd:sequence>
  153. </xsd:extension>
  154. </xsd:complexContent>
  155. </xsd:complexType>
  156. <!--
  157. ===================================================================
  158. POINT PARAMETER
  159. Extends multipleType for parameters with point-like values (point and region).
  160. ===================================================================
  161. -->
  162. <xsd:complexType name="pointType">
  163. <xsd:complexContent>
  164. <xsd:extension base="multipleType">
  165. <xsd:attribute name="coordinateSystem">
  166. <xsd:simpleType>
  167. <xsd:restriction base="xsd:string">
  168. <xsd:enumeration value="ras"/>
  169. <xsd:enumeration value="ijk"/>
  170. <xsd:enumeration value="lps"/>
  171. </xsd:restriction>
  172. </xsd:simpleType>
  173. </xsd:attribute>
  174. </xsd:extension>
  175. </xsd:complexContent>
  176. </xsd:complexType>
  177. <!--
  178. ===================================================================
  179. GEOMETRY PARAMETER
  180. Extends multipleType for geometry parameters (geometry).
  181. ===================================================================
  182. -->
  183. <xsd:complexType name="geometryType">
  184. <xsd:complexContent>
  185. <xsd:extension base="multipleType">
  186. <xsd:attribute name="fileExtensions" type="xsd:string"/>
  187. <xsd:attribute name="type">
  188. <xsd:simpleType>
  189. <xsd:restriction base="xsd:string">
  190. <xsd:enumeration value="fiberbundle"/>
  191. <xsd:enumeration value="model"/>
  192. </xsd:restriction>
  193. </xsd:simpleType>
  194. </xsd:attribute>
  195. </xsd:extension>
  196. </xsd:complexContent>
  197. </xsd:complexType>
  198. <!--
  199. ===================================================================
  200. CHANNEL PARAMETER
  201. Extends multipleType for parameters with input/output semantics (directory, file, image).
  202. ===================================================================
  203. -->
  204. <xsd:complexType name="channelType">
  205. <xsd:complexContent>
  206. <xsd:extension base="multipleType">
  207. <xsd:sequence>
  208. <xsd:element maxOccurs="1" name="channel">
  209. <xsd:simpleType>
  210. <xsd:restriction base="xsd:string">
  211. <xsd:enumeration value="input"/>
  212. <xsd:enumeration value="output"/>
  213. </xsd:restriction>
  214. </xsd:simpleType>
  215. </xsd:element>
  216. </xsd:sequence>
  217. </xsd:extension>
  218. </xsd:complexContent>
  219. </xsd:complexType>
  220. <!--
  221. ===================================================================
  222. FILE PARAMETER
  223. Extends channelType for parameters with input/output semantics and file extension
  224. information (file, image).
  225. ===================================================================
  226. -->
  227. <xsd:complexType name="fileType">
  228. <xsd:complexContent>
  229. <xsd:extension base="channelType">
  230. <xsd:attribute name="fileExtensions" type="xsd:string"/>
  231. </xsd:extension>
  232. </xsd:complexContent>
  233. </xsd:complexType>
  234. <!--
  235. ===================================================================
  236. IMAGE PARAMETER
  237. Extends fileType for image parameters (image).
  238. ===================================================================
  239. -->
  240. <xsd:complexType name="imageType">
  241. <xsd:complexContent>
  242. <xsd:extension base="fileType">
  243. <xsd:attribute name="type">
  244. <xsd:simpleType>
  245. <xsd:restriction base="xsd:string">
  246. <xsd:enumeration value="scalar"/>
  247. <xsd:enumeration value="label"/>
  248. <xsd:enumeration value="tensor"/>
  249. <xsd:enumeration value="diffusion-weighted"/>
  250. <xsd:enumeration value="vector"/>
  251. <xsd:enumeration value="model"/>
  252. </xsd:restriction>
  253. </xsd:simpleType>
  254. </xsd:attribute>
  255. </xsd:extension>
  256. </xsd:complexContent>
  257. </xsd:complexType>
  258. <!--
  259. ===================================================================
  260. ***** UTILITY TYPES *****
  261. ===================================================================
  262. -->
  263. <xsd:simpleType name="flagValueType">
  264. <xsd:restriction base="xsd:string">
  265. <xsd:pattern value="-?[a-zA-Z]"/>
  266. </xsd:restriction>
  267. </xsd:simpleType>
  268. <xsd:complexType name="flagType">
  269. <xsd:simpleContent>
  270. <xsd:extension base="flagValueType">
  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. <xsd:simpleType name="longFlagValueType">
  277. <xsd:restriction base="xsd:string">
  278. <xsd:pattern value="-?-?[_a-zA-Z][_a-zA-Z0-9]*"/>
  279. </xsd:restriction>
  280. </xsd:simpleType>
  281. <xsd:complexType name="longFlagType">
  282. <xsd:simpleContent>
  283. <xsd:extension base="longFlagValueType">
  284. <xsd:attribute name="alias" type="xsd:string"/>
  285. <xsd:attribute name="deprecatedalias" type="xsd:string"/>
  286. </xsd:extension>
  287. </xsd:simpleContent>
  288. </xsd:complexType>
  289. <!-- constraints for scalar parameters (integer, double, float) -->
  290. <xsd:complexType name="constraintsType">
  291. <xsd:all>
  292. <xsd:element minOccurs="0" name="minimum" type="xsd:double"/>
  293. <xsd:element minOccurs="0" name="maximum" type="xsd:double"/>
  294. <xsd:element name="step" type="xsd:double"/>
  295. </xsd:all>
  296. </xsd:complexType>
  297. </xsd:schema>