validation.xsd 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. /**
  4. * Structure definition of validation.xml Validation files
  5. *
  6. * Copyright © Magento, Inc. All rights reserved.
  7. * See COPYING.txt for license details.
  8. */
  9. -->
  10. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  11. <xs:annotation>
  12. <xs:documentation xml:lang="en">
  13. Magento Validation Configuration File
  14. </xs:documentation>
  15. </xs:annotation>
  16. <xs:element name="validation">
  17. <xs:annotation>
  18. <xs:documentation xml:lang="en">
  19. Validation group uses reference to validation rules
  20. </xs:documentation>
  21. </xs:annotation>
  22. <xs:complexType>
  23. <xs:sequence>
  24. <xs:element name="entity" type="entity" maxOccurs="unbounded">
  25. <xs:keyref name="ruleNameReference" refer="ruleNameKey">
  26. <xs:selector xpath="groups/group/uses/use"/>
  27. <xs:field xpath="@rule"/>
  28. </xs:keyref>
  29. <xs:key name="ruleNameKey">
  30. <xs:selector xpath="rules/rule"/>
  31. <xs:field xpath="@name"/>
  32. </xs:key>
  33. </xs:element>
  34. </xs:sequence>
  35. </xs:complexType>
  36. </xs:element>
  37. <xs:complexType name="entity">
  38. <xs:sequence>
  39. <xs:element name="rules" type="rules" maxOccurs="1" minOccurs="0"/>
  40. <xs:element name="groups" type="groups" maxOccurs="1" minOccurs="0"/>
  41. </xs:sequence>
  42. <xs:attribute name="name" type="xs:string" use="required"/>
  43. </xs:complexType>
  44. <xs:complexType name="rules">
  45. <xs:sequence>
  46. <xs:element name="rule" maxOccurs="unbounded">
  47. <xs:complexType>
  48. <xs:sequence>
  49. <xs:element name="property_constraints" maxOccurs="unbounded" minOccurs="0">
  50. <xs:complexType>
  51. <xs:sequence>
  52. <xs:element name="property" maxOccurs="unbounded" minOccurs="1">
  53. <xs:complexType>
  54. <xs:sequence>
  55. <xs:element name="constraint" type="constraint" maxOccurs="unbounded" minOccurs="1"/>
  56. </xs:sequence>
  57. <xs:attribute name="name" type="xs:string" use="required"/>
  58. </xs:complexType>
  59. </xs:element>
  60. </xs:sequence>
  61. </xs:complexType>
  62. </xs:element>
  63. <xs:element name="entity_constraints" maxOccurs="unbounded" minOccurs="0">
  64. <xs:complexType>
  65. <xs:sequence>
  66. <xs:element name="constraint" type="constraint" maxOccurs="unbounded" minOccurs="1"/>
  67. </xs:sequence>
  68. </xs:complexType>
  69. </xs:element>
  70. </xs:sequence>
  71. <xs:attribute name="name" type="xs:string" use="required"/>
  72. </xs:complexType>
  73. </xs:element>
  74. </xs:sequence>
  75. </xs:complexType>
  76. <xs:complexType name="constraint">
  77. <xs:sequence minOccurs="0" maxOccurs="unbounded">
  78. <xs:choice>
  79. <xs:element name="argument" type="argument" />
  80. <xs:element name="method">
  81. <xs:complexType>
  82. <xs:sequence>
  83. <xs:element name="argument" type="argument" maxOccurs="unbounded" minOccurs="0" />
  84. </xs:sequence>
  85. <xs:attribute name="name" type="xs:string" use="required"/>
  86. </xs:complexType>
  87. </xs:element>
  88. <xs:element name="callback" type="callback" />
  89. </xs:choice>
  90. </xs:sequence>
  91. <xs:attribute name="class" type="xs:string" use="required"/>
  92. <xs:attribute name="alias" type="xs:string"/>
  93. </xs:complexType>
  94. <xs:complexType name="argument" mixed="true">
  95. <xs:choice>
  96. <xs:sequence>
  97. <xs:element name="option" maxOccurs="unbounded" minOccurs="0">
  98. <xs:complexType>
  99. <xs:simpleContent>
  100. <xs:extension base="xs:string">
  101. <xs:attribute name="name" type="xs:string"/>
  102. </xs:extension>
  103. </xs:simpleContent>
  104. </xs:complexType>
  105. </xs:element>
  106. </xs:sequence>
  107. <xs:element name="callback" type="callback" />
  108. </xs:choice>
  109. </xs:complexType>
  110. <xs:complexType name="callback">
  111. <xs:attribute name="class" type="xs:string" use="required"/>
  112. <xs:attribute name="method" type="xs:string" use="required"/>
  113. </xs:complexType>
  114. <xs:complexType name="groups">
  115. <xs:sequence>
  116. <xs:element name="group" maxOccurs="unbounded">
  117. <xs:complexType>
  118. <xs:sequence>
  119. <xs:element name="uses" type="uses"/>
  120. </xs:sequence>
  121. <xs:attribute name="name" type="xs:string" use="required"/>
  122. <xs:attribute name="builder" type="xs:string"/>
  123. </xs:complexType>
  124. <xs:unique name="groupUse">
  125. <xs:selector xpath="uses/use"/>
  126. <xs:field xpath="@rule"/>
  127. </xs:unique>
  128. </xs:element>
  129. </xs:sequence>
  130. </xs:complexType>
  131. <xs:complexType name="uses">
  132. <xs:annotation>
  133. <xs:documentation xml:lang="en">
  134. All validation rules used by current group are listed in this element
  135. "rule" attribute of "use" element must point to one of entity's rules
  136. </xs:documentation>
  137. </xs:annotation>
  138. <xs:sequence>
  139. <xs:element name="use" maxOccurs="unbounded">
  140. <xs:complexType>
  141. <xs:attribute name="rule" type="xs:string"/>
  142. </xs:complexType>
  143. </xs:element>
  144. </xs:sequence>
  145. </xs:complexType>
  146. </xs:schema>