system_file.xsd 21 KB

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