system.xsd 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. /**
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. -->
  8. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  9. <xs:element name="config">
  10. <xs:complexType>
  11. <xs:sequence>
  12. <xs:element ref="system" minOccurs="1" maxOccurs="1" />
  13. </xs:sequence>
  14. </xs:complexType>
  15. </xs:element>
  16. <xs:element name="system">
  17. <xs:complexType>
  18. <xs:sequence>
  19. <xs:choice minOccurs="1" maxOccurs="unbounded">
  20. <xs:element ref="tab" />
  21. <xs:element ref="section"/>
  22. </xs:choice>
  23. </xs:sequence>
  24. </xs:complexType>
  25. <xs:unique name="uniqueTabId">
  26. <xs:annotation>
  27. <xs:documentation>
  28. Attribute id is unique under all tabs
  29. </xs:documentation>
  30. </xs:annotation>
  31. <xs:selector xpath="tab"/>
  32. <xs:field xpath="@id"/>
  33. </xs:unique>
  34. <xs:unique name="uniqueSectionId">
  35. <xs:annotation>
  36. <xs:documentation>
  37. Attribute id is unique under all sections
  38. </xs:documentation>
  39. </xs:annotation>
  40. <xs:selector xpath="section"/>
  41. <xs:field xpath="@id"/>
  42. </xs:unique>
  43. </xs:element>
  44. <xs:attributeGroup name="tabAttributeGroup">
  45. <xs:attribute name="id" type="typeId" use="required" />
  46. <xs:attribute name="translate" type="xs:string" use="optional" />
  47. <xs:attribute name="sortOrder" type="xs:float" use="optional" />
  48. <xs:attribute name="class" type="xs:string" use="optional" />
  49. </xs:attributeGroup>
  50. <xs:attributeGroup name="elementsAttributeGroup">
  51. <xs:attribute name="id" type="typeId" use="required" />
  52. <xs:attribute name="translate" type="xs:string" use="optional" />
  53. <xs:attribute name="type" type="xs:string" use="optional" />
  54. <xs:attribute name="sortOrder" type="xs:float" use="optional" />
  55. <xs:attribute name="showInDefault" type="xs:int" use="optional" />
  56. <xs:attribute name="showInStore" type="xs:int" use="optional" />
  57. <xs:attribute name="showInWebsite" type="xs:int" use="optional" />
  58. <xs:attribute name="canRestore" type="xs:int" use="optional" />
  59. <xs:attribute name="advanced" type="xs:boolean" use="optional" />
  60. <xs:attribute name="extends" type="xs:string" use="optional" />
  61. </xs:attributeGroup>
  62. <xs:element name="tab">
  63. <xs:annotation>
  64. <xs:documentation>
  65. Tab resource. Recursive complex type.
  66. </xs:documentation>
  67. </xs:annotation>
  68. <xs:complexType>
  69. <xs:sequence>
  70. <xs:element maxOccurs="1" name="label" type="xs:string" />
  71. </xs:sequence>
  72. <xs:attributeGroup ref="tabAttributeGroup"/>
  73. </xs:complexType>
  74. </xs:element>
  75. <xs:element name="section">
  76. <xs:annotation>
  77. <xs:documentation>
  78. Section Resource. Recursive complex type
  79. </xs:documentation>
  80. </xs:annotation>
  81. <xs:complexType>
  82. <xs:sequence>
  83. <xs:choice minOccurs="1" maxOccurs="unbounded">
  84. <xs:element name="label" type="xs:string" />
  85. <xs:element name="class" type="xs:string" />
  86. <xs:element name="tab" type="typeTabId" />
  87. <xs:element name="header_css" type="xs:string" />
  88. <xs:element name="resource" type="typeAclResourceId" />
  89. <xs:element ref="group" />
  90. <xs:element name="frontend_model" type="typeModel" />
  91. </xs:choice>
  92. </xs:sequence>
  93. <xs:attributeGroup ref="elementsAttributeGroup"/>
  94. </xs:complexType>
  95. <xs:unique name="uniqueGroupId">
  96. <xs:annotation>
  97. <xs:documentation>
  98. Attribute id is unique under all groups for each section
  99. </xs:documentation>
  100. </xs:annotation>
  101. <xs:selector xpath="group"/>
  102. <xs:field xpath="@id"/>
  103. </xs:unique>
  104. </xs:element>
  105. <xs:element name="group">
  106. <xs:annotation>
  107. <xs:documentation>
  108. Group Resource. Recursive complex type
  109. </xs:documentation>
  110. </xs:annotation>
  111. <xs:complexType>
  112. <xs:sequence>
  113. <xs:choice minOccurs="1" maxOccurs="unbounded">
  114. <xs:element name="label" type="xs:string" />
  115. <xs:element name="fieldset_css" type="xs:string" />
  116. <xs:element name="frontend_model" type="typeModel" />
  117. <xs:element name="clone_model" type="typeModel" />
  118. <xs:element name="clone_fields" type="xs:int" />
  119. <xs:element name="help_url" type="typeUrl" />
  120. <xs:element name="more_url" type="typeUrl" />
  121. <xs:element name="demo_link" type="typeUrl" />
  122. <xs:element name="comment" type="xs:string" />
  123. <xs:element name="hide_in_single_store_mode" type="xs:int" />
  124. <xs:element ref="field" />
  125. <xs:element ref="group" minOccurs="0" maxOccurs="unbounded"/>
  126. <xs:element ref="depends" />
  127. <xs:element ref="attribute" />
  128. </xs:choice>
  129. </xs:sequence>
  130. <xs:attributeGroup ref="elementsAttributeGroup"/>
  131. </xs:complexType>
  132. <xs:unique name="uniqueFieldId">
  133. <xs:annotation>
  134. <xs:documentation>
  135. Attribute id is unique under all fields for each group
  136. </xs:documentation>
  137. </xs:annotation>
  138. <xs:selector xpath="field"/>
  139. <xs:field xpath="@id"/>
  140. </xs:unique>
  141. </xs:element>
  142. <xs:element name="field">
  143. <xs:annotation>
  144. <xs:documentation>
  145. Field Resource. Recursive complex type
  146. </xs:documentation>
  147. </xs:annotation>
  148. <xs:complexType>
  149. <xs:sequence>
  150. <xs:choice minOccurs="0" maxOccurs="unbounded">
  151. <xs:element name="label" type="xs:string" />
  152. <xs:element ref="comment" />
  153. <xs:element name="tooltip" type="xs:string" />
  154. <xs:element name="hint" type="xs:string" />
  155. <xs:element name="frontend_class" type="xs:string" />
  156. <xs:element name="frontend_model" type="typeModel" />
  157. <xs:element name="backend_model" type="typeModel" />
  158. <xs:element name="source_model" type="typeModel" />
  159. <xs:element name="config_path" type="typeConfigPath" />
  160. <xs:element name="validate" type="xs:string" />
  161. <xs:element name="can_be_empty" type="xs:int" />
  162. <xs:element name="if_module_enabled" type="typeModule" />
  163. <xs:element name="base_url" type="typeUrl" />
  164. <xs:element name="button_url" type="typeUrl" />
  165. <xs:element name="more_url" type="typeUrl" />
  166. <xs:element name="demo_url" type="typeUrl" />
  167. <xs:element name="button_label" type="xs:string" />
  168. <xs:element name="hide_in_single_store_mode" type="xs:int" />
  169. <xs:element name="upload_dir" type="typeUploadDir" />
  170. <xs:element ref="source_service" />
  171. <xs:element ref="options" />
  172. <xs:element ref="depends" />
  173. <xs:element ref="attribute" />
  174. <xs:element ref="requires" />
  175. </xs:choice>
  176. </xs:sequence>
  177. <xs:attributeGroup ref="elementsAttributeGroup"/>
  178. </xs:complexType>
  179. <xs:unique name="uniqueAttributeType">
  180. <xs:annotation>
  181. <xs:documentation>
  182. Attribute type is unique under all node attributes per field
  183. </xs:documentation>
  184. </xs:annotation>
  185. <xs:selector xpath=".//attribute"/>
  186. <xs:field xpath="@type"/>
  187. </xs:unique>
  188. </xs:element>
  189. <xs:element name="source_service">
  190. <xs:annotation>
  191. <xs:documentation>
  192. Service used to populate select options
  193. </xs:documentation>
  194. </xs:annotation>
  195. <xs:complexType>
  196. <xs:simpleContent>
  197. <xs:extension base="xs:string">
  198. <xs:attribute name="idField" type="xs:string" use="optional" />
  199. <xs:attribute name="labelField" type="xs:string" use="optional" />
  200. <xs:attribute name="includeEmptyValueOption" type="xs:boolean" use="optional" />
  201. </xs:extension>
  202. </xs:simpleContent>
  203. </xs:complexType>
  204. </xs:element>
  205. <xs:element name="options">
  206. <xs:annotation>
  207. <xs:documentation>
  208. Options of a select field
  209. </xs:documentation>
  210. </xs:annotation>
  211. <xs:complexType>
  212. <xs:sequence>
  213. <xs:element name="option" maxOccurs="unbounded" minOccurs="1">
  214. <xs:complexType>
  215. <xs:annotation>
  216. <xs:documentation>
  217. Option of a select field
  218. </xs:documentation>
  219. </xs:annotation>
  220. <xs:simpleContent>
  221. <xs:extension base="xs:string">
  222. <xs:attribute type="xs:string" name="label" use="required"/>
  223. </xs:extension>
  224. </xs:simpleContent>
  225. </xs:complexType>
  226. </xs:element>
  227. </xs:sequence>
  228. </xs:complexType>
  229. </xs:element>
  230. <xs:element name="requires">
  231. <xs:annotation>
  232. <xs:documentation>
  233. Field Requirements
  234. </xs:documentation>
  235. </xs:annotation>
  236. <xs:complexType>
  237. <xs:sequence>
  238. <xs:choice minOccurs="0" maxOccurs="unbounded">
  239. <xs:element type="requiresField" name="field" />
  240. <xs:element type="requiresGroup" name="group" />
  241. </xs:choice>
  242. </xs:sequence>
  243. </xs:complexType>
  244. <xs:unique name="uniqueRequiresFieldId">
  245. <xs:annotation>
  246. <xs:documentation>
  247. Attribute id is unique under field requires block
  248. </xs:documentation>
  249. </xs:annotation>
  250. <xs:selector xpath=".//field"/>
  251. <xs:field xpath="@id"/>
  252. </xs:unique>
  253. <xs:unique name="uniqueRequiresGroupId">
  254. <xs:annotation>
  255. <xs:documentation>
  256. Attribute id is unique under group requires block
  257. </xs:documentation>
  258. </xs:annotation>
  259. <xs:selector xpath=".//group"/>
  260. <xs:field xpath="@id"/>
  261. </xs:unique>
  262. </xs:element>
  263. <xs:complexType name="requiresField" mixed="true">
  264. <xs:annotation>
  265. <xs:documentation>
  266. Required field resource. Recursive complex type
  267. </xs:documentation>
  268. </xs:annotation>
  269. <xs:simpleContent>
  270. <xs:extension base="xs:string">
  271. <xs:attribute name="id" type="typeElementPath" use="required" />
  272. </xs:extension>
  273. </xs:simpleContent>
  274. </xs:complexType>
  275. <xs:complexType name="requiresGroup">
  276. <xs:annotation>
  277. <xs:documentation>
  278. Required group resource. Recursive complex type
  279. </xs:documentation>
  280. </xs:annotation>
  281. <xs:attribute name="id" type="typeElementPath" use="required" />
  282. </xs:complexType>
  283. <xs:simpleType name="typeElementPath">
  284. <xs:annotation>
  285. <xs:documentation>
  286. Element path attribute for elements section, group, field.
  287. </xs:documentation>
  288. </xs:annotation>
  289. <xs:restriction base="xs:string">
  290. <xs:pattern value="[a-zA-Z0-9_///\\*]{3,}" />
  291. <xs:minLength value="3" />
  292. </xs:restriction>
  293. </xs:simpleType>
  294. <xs:element name="attribute">
  295. <xs:annotation>
  296. <xs:documentation>
  297. Attribute Resource. Recursive complex type
  298. </xs:documentation>
  299. </xs:annotation>
  300. <xs:complexType mixed="true">
  301. <xs:sequence>
  302. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
  303. </xs:sequence>
  304. <xs:attributeGroup ref="attributeAttributeGroup"/>
  305. </xs:complexType>
  306. </xs:element>
  307. <xs:attributeGroup name="attributeAttributeGroup">
  308. <xs:attribute name="type" type="xs:string" use="required" />
  309. <xs:anyAttribute processContents="lax"/>
  310. </xs:attributeGroup>
  311. <xs:attributeGroup name="commentAttributeGroup">
  312. <xs:attribute name="model" type="xs:string" use="optional" />
  313. <xs:anyAttribute processContents="lax"/>
  314. </xs:attributeGroup>
  315. <xs:element name="depends">
  316. <xs:annotation>
  317. <xs:documentation>
  318. Describe which elements are regulator for current field
  319. </xs:documentation>
  320. </xs:annotation>
  321. <xs:complexType>
  322. <xs:sequence>
  323. <xs:element minOccurs="0" maxOccurs="unbounded" name="field">
  324. <xs:complexType>
  325. <xs:annotation>
  326. <xs:documentation>
  327. Field resource. Recursive complex type. Define element is influence on current field/group
  328. </xs:documentation>
  329. </xs:annotation>
  330. <xs:simpleContent>
  331. <xs:extension base="xs:string">
  332. <xs:attribute name="id" type="typeElementPath" use="required" />
  333. <xs:attribute name="separator" type='xs:string' use='optional' />
  334. <xs:attribute name="negative" type='xs:int' use='optional' />
  335. </xs:extension>
  336. </xs:simpleContent>
  337. </xs:complexType>
  338. </xs:element>
  339. </xs:sequence>
  340. </xs:complexType>
  341. <xs:unique name="uniqueDependsFieldId">
  342. <xs:annotation>
  343. <xs:documentation>
  344. Attribute id is unique under all regulatory elements per section/group/field
  345. </xs:documentation>
  346. </xs:annotation>
  347. <xs:selector xpath=".//field"/>
  348. <xs:field xpath="@id"/>
  349. </xs:unique>
  350. </xs:element>
  351. <xs:simpleType name="typeTabId">
  352. <xs:annotation>
  353. <xs:documentation>
  354. Item id attribute for element tab can has only [a-zA-Z0-9/_\]. Minimal length 3 symbol. Case sensitive.
  355. </xs:documentation>
  356. </xs:annotation>
  357. <xs:restriction base="xs:string">
  358. <xs:pattern value="[a-zA-Z0-9_\\]{1,}" />
  359. <xs:minLength value="3" />
  360. </xs:restriction>
  361. </xs:simpleType>
  362. <xs:simpleType name="typeId">
  363. <xs:annotation>
  364. <xs:documentation>
  365. Item id attribute for elements section, group, field can has only [a-zA-Z0-9/_\]. Minimal length 2 symbol. Case sensitive.
  366. </xs:documentation>
  367. </xs:annotation>
  368. <xs:restriction base="xs:string">
  369. <xs:pattern value="[a-zA-Z0-9_\\]{1,}" />
  370. <xs:minLength value="2" />
  371. </xs:restriction>
  372. </xs:simpleType>
  373. <xs:simpleType name="typeAclResourceId">
  374. <xs:annotation>
  375. <xs:documentation>
  376. Acl Resource identifier. Item can has only [a-zA-Z0-9/_:]. Minimal length 8 symbol. Case sensitive.
  377. </xs:documentation>
  378. </xs:annotation>
  379. <xs:restriction base="xs:string">
  380. <xs:pattern value="([A-Z]+[a-zA-Z0-9]{1,}){1,}_[A-Z]+[A-Z0-9a-z]{1,}::[A-Za-z_0-9]{1,}" />
  381. <xs:minLength value="8" />
  382. </xs:restriction>
  383. </xs:simpleType>
  384. <xs:simpleType name="typeModule">
  385. <xs:annotation>
  386. <xs:documentation>
  387. Item module attribute can have only [a-zA-Z0-9_\]. Minimal length 5 symbol. Case insensitive.
  388. </xs:documentation>
  389. </xs:annotation>
  390. <xs:restriction base="xs:string">
  391. <xs:pattern value="[A-Z]+[a-zA-Z0-9]{1,}[_\\][A-Z]+[A-Z0-9a-z]{1,}" />
  392. <xs:minLength value="5" />
  393. </xs:restriction>
  394. </xs:simpleType>
  395. <xs:simpleType name="typeModel">
  396. <xs:annotation>
  397. <xs:documentation>
  398. Item model attribute can have only [a-zA-Z0-9_]. Minimal length 5 symbol. Case insensitive.
  399. </xs:documentation>
  400. </xs:annotation>
  401. <xs:restriction base="xs:string">
  402. <xs:pattern value="[A-Za-z0-9_\\:]+" />
  403. <xs:minLength value="5" />
  404. </xs:restriction>
  405. </xs:simpleType>
  406. <xs:element name="comment">
  407. <xs:annotation>
  408. <xs:documentation>
  409. Comment type
  410. </xs:documentation>
  411. </xs:annotation>
  412. <xs:complexType mixed="true">
  413. <xs:sequence>
  414. <xs:any minOccurs="0" maxOccurs="1" processContents="lax" />
  415. </xs:sequence>
  416. <xs:attributeGroup ref="commentAttributeGroup"/>
  417. </xs:complexType>
  418. </xs:element>
  419. <xs:simpleType name="typeConfigPath">
  420. <xs:annotation>
  421. <xs:documentation>
  422. Item configPath attribute can has only three groups of [a-zA-Z0-9_] characters split by '/'.
  423. Minimal length 5 symbol. Case insensitive.
  424. </xs:documentation>
  425. </xs:annotation>
  426. <xs:restriction base="xs:string">
  427. <xs:pattern value="[a-zA-Z0-9_\\]+/[a-zA-Z0-9_\\]+/[a-zA-Z0-9_\\]+" />
  428. <xs:minLength value="5" />
  429. </xs:restriction>
  430. </xs:simpleType>
  431. <xs:simpleType name="typeUploadDirRestriction">
  432. <xs:restriction base="xs:string">
  433. <xs:pattern value="([a-zA-Z0-9_\\]+/{0,1}){1,}" />
  434. </xs:restriction>
  435. </xs:simpleType>
  436. <xs:complexType name="typeUploadDir">
  437. <xs:annotation>
  438. <xs:documentation>
  439. Item uploadDir value can has only [a-zA-Z0-9_] characters split by '/'. Case insensitive.
  440. </xs:documentation>
  441. </xs:annotation>
  442. <xs:simpleContent>
  443. <xs:extension base="typeUploadDirRestriction">
  444. <xs:attribute type="xs:string" name="config" use="optional"/>
  445. <xs:attribute type="xs:string" name="scope_info" use="optional"/>
  446. </xs:extension>
  447. </xs:simpleContent>
  448. </xs:complexType>
  449. <xs:simpleType name="typeUrlRestriction">
  450. <xs:restriction base="xs:anyURI">
  451. <xs:minLength value="3" />
  452. </xs:restriction>
  453. </xs:simpleType>
  454. <xs:complexType name="typeUrl" mixed="true">
  455. <xs:annotation>
  456. <xs:documentation>
  457. typeUrl value can contain only valid uri with minimal length 3.
  458. </xs:documentation>
  459. </xs:annotation>
  460. <xs:simpleContent>
  461. <xs:extension base="typeUrlRestriction">
  462. <xs:attribute type="xs:string" name="type" use="optional"/>
  463. <xs:attribute type="xs:string" name="scope_info" use="optional"/>
  464. </xs:extension>
  465. </xs:simpleContent>
  466. </xs:complexType>
  467. </xs:schema>