1 <grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" 2 ns="http://relaxng.org/ns/structure/1.0" 3 xmlns="http://relaxng.org/ns/structure/1.0"> 4 5 <start> 6 <ref name="pattern"/> 7 </start> 8 9 <define name="pattern"> 10 <choice> 11 <element name="element"> 12 <choice> 13 <attribute name="name"> 14 <data type="QName"/> 15 </attribute> 16 <ref name="open-name-class"/> 17 </choice> 18 <ref name="common-atts"/> 19 <ref name="open-patterns"/> 20 </element> 21 <element name="attribute"> 22 <ref name="common-atts"/> 23 <choice> 24 <attribute name="name"> 25 <data type="QName"/> 26 </attribute> 27 <ref name="open-name-class"/> 28 </choice> 29 <interleave> 30 <ref name="other"/> 31 <optional> 32 <ref name="pattern"/> 33 </optional> 34 </interleave> 35 </element> 36 <element name="group"> 37 <ref name="common-atts"/> 38 <ref name="open-patterns"/> 39 </element> 40 <element name="interleave"> 41 <ref name="common-atts"/> 42 <ref name="open-patterns"/> 43 </element> 44 <element name="choice"> 45 <ref name="common-atts"/> 46 <ref name="open-patterns"/> 47 </element> 48 <element name="optional"> 49 <ref name="common-atts"/> 50 <ref name="open-patterns"/> 51 </element> 52 <element name="zeroOrMore"> 53 <ref name="common-atts"/> 54 <ref name="open-patterns"/> 55 </element> 56 <element name="oneOrMore"> 57 <ref name="common-atts"/> 58 <ref name="open-patterns"/> 59 </element> 60 <element name="list"> 61 <ref name="common-atts"/> 62 <ref name="open-patterns"/> 63 </element> 64 <element name="mixed"> 65 <ref name="common-atts"/> 66 <ref name="open-patterns"/> 67 </element> 68 <element name="ref"> 69 <attribute name="name"> 70 <data type="NCName"/> 71 </attribute> 72 <ref name="common-atts"/> 73 <ref name="other"/> 74 </element> 75 <element name="parentRef"> 76 <attribute name="name"> 77 <data type="NCName"/> 78 </attribute> 79 <ref name="common-atts"/> 80 <ref name="other"/> 81 </element> 82 <element name="empty"> 83 <ref name="common-atts"/> 84 <ref name="other"/> 85 </element> 86 <element name="text"> 87 <ref name="common-atts"/> 88 <ref name="other"/> 89 </element> 90 <element name="value"> 91 <optional> 92 <attribute name="type"> 93 <data type="NCName"/> 94 </attribute> 95 </optional> 96 <ref name="common-atts"/> 97 <text/> 98 </element> 99 <element name="data"> 100 <attribute name="type"> 101 <data type="NCName"/> 102 </attribute> 103 <ref name="common-atts"/> 104 <interleave> 105 <ref name="other"/> 106 <group> 107 <zeroOrMore> 108 <element name="param"> 109 <attribute name="name"> 110 <data type="NCName"/> 111 </attribute> 112 <ref name="common-atts"/> 113 <text/> 114 </element> 115 </zeroOrMore> 116 <optional> 117 <element name="except"> 118 <ref name="common-atts"/> 119 <ref name="open-patterns"/> 120 </element> 121 </optional> 122 </group> 123 </interleave> 124 </element> 125 <element name="notAllowed"> 126 <ref name="common-atts"/> 127 <ref name="other"/> 128 </element> 129 <element name="externalRef"> 130 <attribute name="href"> 131 <data type="anyURI"/> 132 </attribute> 133 <ref name="common-atts"/> 134 <ref name="other"/> 135 </element> 136 <element name="grammar"> 137 <ref name="common-atts"/> 138 <ref name="grammar-content"/> 139 </element> 140 </choice> 141 </define> 142 143 <define name="grammar-content"> 144 <interleave> 145 <ref name="other"/> 146 <zeroOrMore> 147 <choice> 148 <ref name="start-element"/> 149 <ref name="define-element"/> 150 <element name="div"> 151 <ref name="common-atts"/> 152 <ref name="grammar-content"/> 153 </element> 154 <element name="include"> 155 <attribute name="href"> 156 <data type="anyURI"/> 157 </attribute> 158 <ref name="common-atts"/> 159 <ref name="include-content"/> 160 </element> 161 </choice> 162 </zeroOrMore> 163 </interleave> 164 </define> 165 166 <define name="include-content"> 167 <interleave> 168 <ref name="other"/> 169 <zeroOrMore> 170 <choice> 171 <ref name="start-element"/> 172 <ref name="define-element"/> 173 <element name="div"> 174 <ref name="common-atts"/> 175 <ref name="include-content"/> 176 </element> 177 </choice> 178 </zeroOrMore> 179 </interleave> 180 </define> 181 182 <define name="start-element"> 183 <element name="start"> 184 <ref name="combine-att"/> 185 <ref name="common-atts"/> 186 <ref name="open-pattern"/> 187 </element> 188 </define> 189 190 <define name="define-element"> 191 <element name="define"> 192 <attribute name="name"> 193 <data type="NCName"/> 194 </attribute> 195 <ref name="combine-att"/> 196 <ref name="common-atts"/> 197 <ref name="open-patterns"/> 198 </element> 199 </define> 200 201 <define name="combine-att"> 202 <optional> 203 <attribute name="combine"> 204 <choice> 205 <value>choice</value> 206 <value>interleave</value> 207 </choice> 208 </attribute> 209 </optional> 210 </define> 211 212 <define name="open-patterns"> 213 <interleave> 214 <ref name="other"/> 215 <oneOrMore> 216 <ref name="pattern"/> 217 </oneOrMore> 218 </interleave> 219 </define> 220 221 <define name="open-pattern"> 222 <interleave> 223 <ref name="other"/> 224 <ref name="pattern"/> 225 </interleave> 226 </define> 227 228 <define name="name-class"> 229 <choice> 230 <element name="name"> 231 <ref name="common-atts"/> 232 <data type="QName"/> 233 </element> 234 <element name="anyName"> 235 <ref name="common-atts"/> 236 <ref name="except-name-class"/> 237 </element> 238 <element name="nsName"> 239 <ref name="common-atts"/> 240 <ref name="except-name-class"/> 241 </element> 242 <element name="choice"> 243 <ref name="common-atts"/> 244 <ref name="open-name-classes"/> 245 </element> 246 </choice> 247 </define> 248 249 <define name="except-name-class"> 250 <interleave> 251 <ref name="other"/> 252 <optional> 253 <element name="except"> 254 <ref name="open-name-classes"/> 255 </element> 256 </optional> 257 </interleave> 258 </define> 259 260 <define name="open-name-classes"> 261 <interleave> 262 <ref name="other"/> 263 <oneOrMore> 264 <ref name="name-class"/> 265 </oneOrMore> 266 </interleave> 267 </define> 268 269 <define name="open-name-class"> 270 <interleave> 271 <ref name="other"/> 272 <ref name="name-class"/> 273 </interleave> 274 </define> 275 276 <define name="common-atts"> 277 <optional> 278 <attribute name="ns"/> 279 </optional> 280 <optional> 281 <attribute name="datatypeLibrary"> 282 <data type="anyURI"/> 283 </attribute> 284 </optional> 285 <zeroOrMore> 286 <attribute> 287 <anyName> 288 <except> 289 <nsName/> 290 <nsName ns=""/> 291 </except> 292 </anyName> 293 </attribute> 294 </zeroOrMore> 295 </define> 296 297 <define name="other"> 298 <zeroOrMore> 299 <element> 300 <anyName> 301 <except> 302 <nsName/> 303 </except> 304 </anyName> 305 <zeroOrMore> 306 <choice> 307 <attribute> 308 <anyName/> 309 </attribute> 310 <text/> 311 <ref name="any"/> 312 </choice> 313 </zeroOrMore> 314 </element> 315 </zeroOrMore> 316 </define> 317 318 <define name="any"> 319 <element> 320 <anyName/> 321 <zeroOrMore> 322 <choice> 323 <attribute> 324 <anyName/> 325 </attribute> 326 <text/> 327 <ref name="any"/> 328 </choice> 329 </zeroOrMore> 330 </element> 331 </define> 332 333 </grammar> 334 335