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