|
42 | 42 | <xs:sequence>
|
43 | 43 | <xs:element name="title" type="translatableType" />
|
44 | 44 | <xs:element name="description" type="translatableType" />
|
| 45 | + <xs:element name="fields" type="fieldsType" minOccurs="0" maxOccurs="1"> |
| 46 | + <xs:unique name="uniqueField"> |
| 47 | + <xs:selector xpath="field"/> |
| 48 | + <xs:field xpath="@name"/> |
| 49 | + </xs:unique> |
| 50 | + </xs:element> |
45 | 51 | </xs:sequence>
|
46 | 52 | <xs:attribute name="id" type="xs:string" use="required" />
|
47 | 53 | <xs:attribute name="view_id" type="viewIdType" use="required" />
|
|
78 | 84 | </xs:restriction>
|
79 | 85 | </xs:simpleType>
|
80 | 86 |
|
| 87 | + <xs:complexType name="fieldsType"> |
| 88 | + <xs:annotation> |
| 89 | + <xs:documentation> |
| 90 | + Index fields declaration. |
| 91 | + </xs:documentation> |
| 92 | + </xs:annotation> |
| 93 | + <xs:sequence> |
| 94 | + <xs:element name="field" type="fieldTypeAbstract" minOccurs="1" maxOccurs="unbounded"/> |
| 95 | + </xs:sequence> |
| 96 | + <xs:attribute name="handler" type="classType" use="required"/> |
| 97 | + </xs:complexType> |
| 98 | + |
| 99 | + <xs:complexType name="fieldTypeAbstract"> |
| 100 | + <xs:annotation> |
| 101 | + <xs:documentation> |
| 102 | + Index field declaration. |
| 103 | + </xs:documentation> |
| 104 | + </xs:annotation> |
| 105 | + <xs:attribute name="name" type="xs:string" use="required"/> |
| 106 | + <xs:attribute name="origin" type="originType" use="required"/> |
| 107 | + <xs:attribute name="handler" type="classType" use="required"/> |
| 108 | + </xs:complexType> |
| 109 | + |
| 110 | + <xs:simpleType name="originType"> |
| 111 | + <xs:annotation> |
| 112 | + <xs:documentation> |
| 113 | + Origin can contain only [a-zA-Z0-9_.]. |
| 114 | + </xs:documentation> |
| 115 | + </xs:annotation> |
| 116 | + <xs:restriction base="xs:string"> |
| 117 | + <xs:pattern value="[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+" /> |
| 118 | + </xs:restriction> |
| 119 | + </xs:simpleType> |
| 120 | + |
| 121 | + <xs:complexType name="match"> |
| 122 | + <xs:complexContent> |
| 123 | + <xs:extension base="fieldTypeAbstract"> |
| 124 | + <xs:sequence> |
| 125 | + <xs:element type="filterType" name="filter" minOccurs="1" maxOccurs="1" /> |
| 126 | + </xs:sequence> |
| 127 | + </xs:extension> |
| 128 | + </xs:complexContent> |
| 129 | + </xs:complexType> |
| 130 | + |
| 131 | + <xs:complexType name="filterType"> |
| 132 | + <xs:annotation> |
| 133 | + <xs:documentation> |
| 134 | + Index field filter. |
| 135 | + </xs:documentation> |
| 136 | + </xs:annotation> |
| 137 | + <xs:attribute name="class" type="classType" use="required"/> |
| 138 | + </xs:complexType> |
| 139 | + |
| 140 | + <xs:complexType name="both"> |
| 141 | + <xs:complexContent> |
| 142 | + <xs:extension base="match"/> |
| 143 | + </xs:complexContent> |
| 144 | + </xs:complexType> |
| 145 | + |
| 146 | + <xs:complexType name="filter"> |
| 147 | + <xs:complexContent> |
| 148 | + <xs:extension base="fieldTypeAbstract"> |
| 149 | + <xs:attribute type="dataType" name="dataType" use="required" /> |
| 150 | + </xs:extension> |
| 151 | + </xs:complexContent> |
| 152 | + </xs:complexType> |
| 153 | + |
| 154 | + <xs:simpleType name="dataType"> |
| 155 | + <xs:restriction base="xs:string"> |
| 156 | + <xs:enumeration value="int" /> |
| 157 | + <xs:enumeration value="float" /> |
| 158 | + <xs:enumeration value="varchar" /> |
| 159 | + </xs:restriction> |
| 160 | + </xs:simpleType> |
| 161 | + |
81 | 162 | </xs:schema>
|
0 commit comments