author | Patrick PIERRE <patrick.pierre@prismallia.fr> |
mer., 20 juil. 2011 14:38:48 +0200 | |
changeset 38 | 3c8b406be906 |
parent 36 | d23cfb7be79e |
child 39 | 7faa356bad3e |
permissions | -rw-r--r-- |
patrick@0 | 1 |
<?xml version="1.0" encoding="UTF-8"?> |
patrick@0 | 2 |
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> |
patrick@0 | 3 |
<!-- $Id$ --> |
patrick@0 | 4 |
<start> |
patrick@0 | 5 |
<ref name="publiset"/> |
patrick@0 | 6 |
</start> |
patrick@0 | 7 |
<define name="publiset"> |
patrick@0 | 8 |
<element name="publiset"> |
patrick@0 | 9 |
<ref name="publiset.attributes"/> |
patrick@0 | 10 |
<ref name="publiset.content"/> |
patrick@0 | 11 |
</element> |
patrick@0 | 12 |
</define> |
patrick@0 | 13 |
<define name="publiset.attributes"> |
patrick@0 | 14 |
<ref name="version.attribute"/> |
patrick@0 | 15 |
</define> |
patrick@0 | 16 |
<define name="version.attribute"> |
patrick@0 | 17 |
<attribute name="version"> |
patrick@0 | 18 |
<value>1.0</value> |
patrick@0 | 19 |
</attribute> |
patrick@0 | 20 |
</define> |
patrick@0 | 21 |
<define name="publiset.content"> |
patrick@0 | 22 |
<oneOrMore> |
patrick@0 | 23 |
<choice> |
patrick@0 | 24 |
<ref name="composition"/> |
patrick@0 | 25 |
<ref name="selection"/> |
patrick@0 | 26 |
</choice> |
patrick@0 | 27 |
</oneOrMore> |
patrick@0 | 28 |
</define> |
patrick@0 | 29 |
<!-- |
patrick@0 | 30 |
============================================================================= |
patrick@20 | 31 |
TOP LEVEL |
patrick@0 | 32 |
============================================================================= |
patrick@0 | 33 |
--> |
patrick@0 | 34 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ composition ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@0 | 35 |
<define name="composition"> |
patrick@0 | 36 |
<element name="composition"> |
patrick@0 | 37 |
<ref name="composition.attributes"/> |
patrick@0 | 38 |
<ref name="composition.content"/> |
patrick@0 | 39 |
</element> |
patrick@0 | 40 |
</define> |
patrick@0 | 41 |
<define name="composition.attributes"> |
patrick@0 | 42 |
<interleave> |
patrick@0 | 43 |
<ref name="composition.id.attribute"/> |
patrick@29 | 44 |
<optional> |
patrick@29 | 45 |
<ref name="path.attribute"/> |
patrick@29 | 46 |
</optional> |
patrick@29 | 47 |
<optional> |
patrick@29 | 48 |
<ref name="xpath.attribute"/> |
patrick@29 | 49 |
</optional> |
patrick@29 | 50 |
<optional> |
patrick@29 | 51 |
<ref name="xslt.attribute"/> |
patrick@29 | 52 |
</optional> |
patrick@0 | 53 |
<ref name="remap.attributes"/> |
patrick@0 | 54 |
</interleave> |
patrick@0 | 55 |
</define> |
patrick@0 | 56 |
<define name="composition.id.attribute"> |
patrick@0 | 57 |
<attribute name="xml:id"> |
patrick@0 | 58 |
<data type="ID"/> |
patrick@0 | 59 |
</attribute> |
patrick@0 | 60 |
</define> |
patrick@29 | 61 |
<define name="path.attribute"> |
patrick@29 | 62 |
<attribute name="path"> |
patrick@29 | 63 |
<data type="anyURI"/> |
patrick@29 | 64 |
</attribute> |
patrick@29 | 65 |
</define> |
patrick@29 | 66 |
<define name="xslt.attribute"> |
patrick@29 | 67 |
<attribute name="xslt"> |
patrick@29 | 68 |
<data type="anyURI"/> |
patrick@29 | 69 |
</attribute> |
patrick@29 | 70 |
</define> |
patrick@29 | 71 |
<define name="xpath.attribute"> |
patrick@29 | 72 |
<attribute name="xpath"/> |
patrick@29 | 73 |
</define> |
patrick@0 | 74 |
<define name="composition.content"> |
patrick@0 | 75 |
<optional> |
patrick@20 | 76 |
<ref name="composition.head"/> |
patrick@0 | 77 |
</optional> |
patrick@0 | 78 |
<oneOrMore> |
patrick@0 | 79 |
<choice> |
patrick@30 | 80 |
<ref name="composition.division"/> |
patrick@0 | 81 |
<ref name="composition.file"/> |
patrick@0 | 82 |
</choice> |
patrick@0 | 83 |
</oneOrMore> |
patrick@0 | 84 |
</define> |
patrick@0 | 85 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ selection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@0 | 86 |
<define name="selection"> |
patrick@0 | 87 |
<element name="selection"> |
patrick@0 | 88 |
<ref name="selection.attributes"/> |
patrick@0 | 89 |
<ref name="selection.content"/> |
patrick@0 | 90 |
</element> |
patrick@0 | 91 |
</define> |
patrick@0 | 92 |
<define name="selection.attributes"> |
patrick@29 | 93 |
<interleave> |
patrick@29 | 94 |
<ref name="selection.id.attribute"/> |
patrick@29 | 95 |
<optional> |
patrick@29 | 96 |
<ref name="path.attribute"/> |
patrick@29 | 97 |
</optional> |
patrick@29 | 98 |
</interleave> |
patrick@0 | 99 |
</define> |
patrick@0 | 100 |
<define name="selection.id.attribute"> |
patrick@0 | 101 |
<attribute name="xml:id"> |
patrick@0 | 102 |
<data type="ID"/> |
patrick@0 | 103 |
</attribute> |
patrick@0 | 104 |
</define> |
patrick@0 | 105 |
<define name="selection.content"> |
patrick@0 | 106 |
<optional> |
patrick@20 | 107 |
<ref name="selection.head"/> |
patrick@0 | 108 |
</optional> |
patrick@0 | 109 |
<oneOrMore> |
patrick@0 | 110 |
<choice> |
patrick@30 | 111 |
<ref name="selection.division"/> |
patrick@0 | 112 |
<ref name="selection.file"/> |
patrick@30 | 113 |
<ref name="link"/> |
patrick@0 | 114 |
</choice> |
patrick@0 | 115 |
</oneOrMore> |
patrick@0 | 116 |
</define> |
patrick@0 | 117 |
<!-- |
patrick@0 | 118 |
============================================================================= |
patrick@20 | 119 |
HEAD LEVEL |
patrick@0 | 120 |
============================================================================= |
patrick@0 | 121 |
--> |
patrick@20 | 122 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@20 | 123 |
<define name="composition.head"> |
patrick@20 | 124 |
<element name="head"> |
patrick@20 | 125 |
<ref name="head.attributes"/> |
patrick@20 | 126 |
<ref name="top.head.content"/> |
patrick@0 | 127 |
</element> |
patrick@0 | 128 |
</define> |
patrick@20 | 129 |
<define name="selection.head"> |
patrick@20 | 130 |
<element name="head"> |
patrick@20 | 131 |
<ref name="top.head.content"/> |
patrick@0 | 132 |
</element> |
patrick@0 | 133 |
</define> |
patrick@20 | 134 |
<define name="division.head"> |
patrick@20 | 135 |
<element name="head"> |
patrick@20 | 136 |
<ref name="division.head.content"/> |
patrick@20 | 137 |
</element> |
patrick@20 | 138 |
</define> |
patrick@20 | 139 |
<define name="head.attributes"> |
patrick@0 | 140 |
<ref name="remap.attributes"/> |
patrick@0 | 141 |
</define> |
patrick@20 | 142 |
<define name="top.head.content"> |
patrick@5 | 143 |
<interleave> |
patrick@5 | 144 |
<optional> |
patrick@5 | 145 |
<ref name="title"/> |
patrick@20 | 146 |
<optional> |
patrick@20 | 147 |
<ref name="subtitle"/> |
patrick@20 | 148 |
</optional> |
patrick@5 | 149 |
</optional> |
patrick@34 | 150 |
<zeroOrMore> |
patrick@34 | 151 |
<ref name="identifier"/> |
patrick@34 | 152 |
</zeroOrMore> |
patrick@5 | 153 |
<optional> |
patrick@20 | 154 |
<ref name="language"/> |
patrick@5 | 155 |
</optional> |
patrick@5 | 156 |
<zeroOrMore> |
patrick@5 | 157 |
<ref name="author"/> |
patrick@5 | 158 |
</zeroOrMore> |
patrick@5 | 159 |
<optional> |
patrick@5 | 160 |
<ref name="publisher"/> |
patrick@5 | 161 |
</optional> |
patrick@5 | 162 |
<optional> |
patrick@20 | 163 |
<ref name="source"/> |
patrick@20 | 164 |
</optional> |
patrick@35 | 165 |
<optional> |
patrick@35 | 166 |
<ref name="cover"/> |
patrick@35 | 167 |
</optional> |
patrick@20 | 168 |
</interleave> |
patrick@20 | 169 |
</define> |
patrick@20 | 170 |
<define name="division.head.content"> |
patrick@20 | 171 |
<interleave> |
patrick@20 | 172 |
<optional> |
patrick@20 | 173 |
<ref name="title"/> |
patrick@20 | 174 |
<optional> |
patrick@20 | 175 |
<ref name="subtitle"/> |
patrick@20 | 176 |
</optional> |
patrick@20 | 177 |
</optional> |
patrick@20 | 178 |
<optional> |
patrick@5 | 179 |
<ref name="language"/> |
patrick@5 | 180 |
</optional> |
patrick@5 | 181 |
</interleave> |
patrick@0 | 182 |
</define> |
patrick@0 | 183 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@0 | 184 |
<define name="title"> |
patrick@0 | 185 |
<element name="title"> |
patrick@0 | 186 |
<ref name="title.content"/> |
patrick@0 | 187 |
</element> |
patrick@0 | 188 |
</define> |
patrick@0 | 189 |
<define name="subtitle"> |
patrick@0 | 190 |
<element name="subtitle"> |
patrick@0 | 191 |
<ref name="title.content"/> |
patrick@0 | 192 |
</element> |
patrick@0 | 193 |
</define> |
patrick@20 | 194 |
<define name="title.content"> |
patrick@20 | 195 |
<ref name="inlines"/> |
patrick@20 | 196 |
</define> |
patrick@34 | 197 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@38 | 198 |
<define name="identifier.uri"> |
patrick@34 | 199 |
<element name="identifier"> |
patrick@38 | 200 |
<attribute name="type"> |
patrick@38 | 201 |
<value>uri</value> |
patrick@38 | 202 |
</attribute> |
patrick@38 | 203 |
<data type="anyURI"/> |
patrick@34 | 204 |
</element> |
patrick@34 | 205 |
</define> |
patrick@38 | 206 |
<define name="identifier.ean"> |
patrick@38 | 207 |
<element name="identifier"> |
patrick@38 | 208 |
<attribute name="type"> |
patrick@38 | 209 |
<value>ean</value> |
patrick@38 | 210 |
</attribute> |
patrick@38 | 211 |
<data type="token"> |
patrick@38 | 212 |
<param name="pattern">\d{13}</param> |
patrick@38 | 213 |
</data> |
patrick@38 | 214 |
</element> |
patrick@34 | 215 |
</define> |
patrick@38 | 216 |
<define name="identifier"> |
patrick@34 | 217 |
<choice> |
patrick@38 | 218 |
<ref name="identifier.uri"/> |
patrick@38 | 219 |
<ref name="identifier.ean"/> |
patrick@34 | 220 |
</choice> |
patrick@34 | 221 |
</define> |
patrick@20 | 222 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@20 | 223 |
<define name="language"> |
patrick@20 | 224 |
<element name="language"> |
patrick@20 | 225 |
<ref name="language.attributes"/> |
patrick@20 | 226 |
</element> |
patrick@20 | 227 |
</define> |
patrick@20 | 228 |
<define name="language.attributes"> |
patrick@20 | 229 |
<ref name="lang.attribute"/> |
patrick@20 | 230 |
</define> |
patrick@20 | 231 |
<define name="lang.attribute"> |
patrick@20 | 232 |
<attribute name="xml:lang"> |
patrick@20 | 233 |
<data type="language"/> |
patrick@20 | 234 |
</attribute> |
patrick@20 | 235 |
</define> |
patrick@5 | 236 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@5 | 237 |
<!-- ~~~~~~ author --> |
patrick@5 | 238 |
<define name="author"> |
patrick@5 | 239 |
<element name="author"> |
patrick@5 | 240 |
<ref name="author.content"/> |
patrick@5 | 241 |
</element> |
patrick@5 | 242 |
</define> |
patrick@34 | 243 |
<define name="author.attributes"> |
patrick@34 | 244 |
<optional> |
patrick@34 | 245 |
<ref name="role.attribute"/> |
patrick@34 | 246 |
</optional> |
patrick@34 | 247 |
</define> |
patrick@34 | 248 |
<define name="role.attribute"> |
patrick@34 | 249 |
<attribute name="role"> |
patrick@34 | 250 |
<choice> |
patrick@34 | 251 |
<value>author</value> |
patrick@34 | 252 |
<value>illustrator</value> |
patrick@34 | 253 |
</choice> |
patrick@34 | 254 |
</attribute> |
patrick@34 | 255 |
</define> |
patrick@5 | 256 |
<define name="author.content"> |
patrick@5 | 257 |
<optional> |
patrick@5 | 258 |
<ref name="firstname"/> |
patrick@5 | 259 |
</optional> |
patrick@5 | 260 |
<ref name="lastname"/> |
patrick@34 | 261 |
<zeroOrMore> |
patrick@34 | 262 |
<ref name="role"/> |
patrick@34 | 263 |
</zeroOrMore> |
patrick@5 | 264 |
</define> |
patrick@5 | 265 |
<!-- ~~~~~~ publisher --> |
patrick@5 | 266 |
<define name="publisher"> |
patrick@5 | 267 |
<element name="publisher"> |
patrick@5 | 268 |
<ref name="publisher.content"/> |
patrick@5 | 269 |
</element> |
patrick@5 | 270 |
</define> |
patrick@5 | 271 |
<define name="publisher.content"> |
patrick@34 | 272 |
<ref name="label"/> |
patrick@34 | 273 |
<optional> |
patrick@36 | 274 |
<ref name="link"/> |
patrick@34 | 275 |
</optional> |
patrick@5 | 276 |
</define> |
patrick@5 | 277 |
<!-- ~~~~~~ firstname --> |
patrick@5 | 278 |
<define name="firstname"> |
patrick@5 | 279 |
<element name="firstname"> |
patrick@5 | 280 |
<ref name="firstname.content"/> |
patrick@5 | 281 |
</element> |
patrick@5 | 282 |
</define> |
patrick@5 | 283 |
<define name="firstname.content"> |
patrick@5 | 284 |
<ref name="inlines"/> |
patrick@5 | 285 |
</define> |
patrick@5 | 286 |
<!-- ~~~~~~ lastname --> |
patrick@5 | 287 |
<define name="lastname"> |
patrick@5 | 288 |
<element name="lastname"> |
patrick@5 | 289 |
<ref name="lastname.content"/> |
patrick@5 | 290 |
</element> |
patrick@5 | 291 |
</define> |
patrick@5 | 292 |
<define name="lastname.content"> |
patrick@5 | 293 |
<ref name="inlines"/> |
patrick@5 | 294 |
</define> |
patrick@34 | 295 |
<!-- ~~~~~~ role --> |
patrick@34 | 296 |
<define name="role"> |
patrick@34 | 297 |
<element name="role"> |
patrick@34 | 298 |
<ref name="role.attributes"/> |
patrick@34 | 299 |
</element> |
patrick@34 | 300 |
</define> |
patrick@34 | 301 |
<define name="role.attributes"> |
patrick@34 | 302 |
<ref name="role.of.attribute"/> |
patrick@34 | 303 |
</define> |
patrick@34 | 304 |
<define name="role.of.attribute"> |
patrick@34 | 305 |
<attribute name="of"> |
patrick@34 | 306 |
<choice> |
patrick@34 | 307 |
<value>author</value> |
patrick@34 | 308 |
<value>illustrator</value> |
patrick@34 | 309 |
</choice> |
patrick@34 | 310 |
</attribute> |
patrick@34 | 311 |
</define> |
patrick@38 | 312 |
<!-- ~~~~~~ label --> |
patrick@38 | 313 |
<define name="label"> |
patrick@38 | 314 |
<element name="label"> |
patrick@38 | 315 |
<ref name="label.content"/> |
patrick@38 | 316 |
</element> |
patrick@38 | 317 |
</define> |
patrick@38 | 318 |
<define name="label.content"> |
patrick@38 | 319 |
<ref name="inlines"/> |
patrick@38 | 320 |
</define> |
patrick@0 | 321 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@2 | 322 |
<!-- ~~~~~~ source --> |
patrick@0 | 323 |
<define name="source"> |
patrick@0 | 324 |
<element name="source"> |
patrick@0 | 325 |
<choice> |
patrick@0 | 326 |
<group> |
patrick@0 | 327 |
<attribute name="type"> |
patrick@0 | 328 |
<value>book</value> |
patrick@0 | 329 |
</attribute> |
patrick@0 | 330 |
<ref name="source.content.book"/> |
patrick@0 | 331 |
</group> |
patrick@38 | 332 |
<group> |
patrick@38 | 333 |
<attribute name="type"> |
patrick@38 | 334 |
<value>file</value> |
patrick@38 | 335 |
</attribute> |
patrick@38 | 336 |
<ref name="source.content.file"/> |
patrick@38 | 337 |
</group> |
patrick@0 | 338 |
</choice> |
patrick@0 | 339 |
</element> |
patrick@0 | 340 |
</define> |
patrick@0 | 341 |
<define name="source.content.book"> |
patrick@38 | 342 |
<ref name="identifier.ean"/> |
patrick@0 | 343 |
<optional> |
patrick@0 | 344 |
<ref name="title"/> |
patrick@0 | 345 |
</optional> |
patrick@38 | 346 |
<zeroOrMore> |
patrick@0 | 347 |
<ref name="pagenumber"/> |
patrick@38 | 348 |
</zeroOrMore> |
patrick@38 | 349 |
</define> |
patrick@38 | 350 |
<define name="source.content.file"> |
patrick@38 | 351 |
<ref name="identifier.uri"/> |
patrick@0 | 352 |
</define> |
patrick@2 | 353 |
<!-- ~~~~~~ pagenumber --> |
patrick@0 | 354 |
<define name="pagenumber"> |
patrick@0 | 355 |
<element name="pagenumber"> |
patrick@0 | 356 |
<ref name="pagenumber.attributes"/> |
patrick@0 | 357 |
</element> |
patrick@0 | 358 |
</define> |
patrick@0 | 359 |
<define name="pagenumber.attributes"> |
patrick@0 | 360 |
<ref name="pagenumber.value.attribute"/> |
patrick@0 | 361 |
</define> |
patrick@0 | 362 |
<define name="pagenumber.value.attribute"> |
patrick@0 | 363 |
<attribute name="value"> |
patrick@0 | 364 |
<ref name="pagenumber.value.enumeration"/> |
patrick@0 | 365 |
</attribute> |
patrick@0 | 366 |
</define> |
patrick@0 | 367 |
<define name="pagenumber.value.enumeration"> |
patrick@0 | 368 |
<data type="positiveInteger"/> |
patrick@0 | 369 |
</define> |
patrick@35 | 370 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cover ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@35 | 371 |
<define name="cover"> |
patrick@35 | 372 |
<element name="cover"> |
patrick@35 | 373 |
<ref name="cover.content"/> |
patrick@35 | 374 |
</element> |
patrick@35 | 375 |
</define> |
patrick@35 | 376 |
<define name="cover.content"> |
patrick@35 | 377 |
<ref name="cover.image"/> |
patrick@35 | 378 |
</define> |
patrick@35 | 379 |
<define name="cover.image"> |
patrick@35 | 380 |
<element name="image"> |
patrick@35 | 381 |
<ref name="cover.image.attributes"/> |
patrick@35 | 382 |
</element> |
patrick@35 | 383 |
</define> |
patrick@35 | 384 |
<define name="cover.image.attributes"> |
patrick@35 | 385 |
<ref name="cover.image.id.attribute"/> |
patrick@35 | 386 |
</define> |
patrick@35 | 387 |
<define name="cover.image.id.attribute"> |
patrick@35 | 388 |
<attribute name="id"> |
patrick@35 | 389 |
<data type="NMTOKEN"/> |
patrick@35 | 390 |
</attribute> |
patrick@35 | 391 |
</define> |
patrick@0 | 392 |
<!-- |
patrick@0 | 393 |
============================================================================= |
patrick@20 | 394 |
DIVISION LEVEL |
patrick@0 | 395 |
============================================================================= |
patrick@0 | 396 |
--> |
patrick@0 | 397 |
<define name="composition.division"> |
patrick@0 | 398 |
<element name="division"> |
patrick@0 | 399 |
<ref name="composition.division.attributes"/> |
patrick@0 | 400 |
<ref name="composition.division.content"/> |
patrick@0 | 401 |
</element> |
patrick@0 | 402 |
</define> |
patrick@0 | 403 |
<define name="selection.division"> |
patrick@0 | 404 |
<element name="division"> |
patrick@0 | 405 |
<ref name="selection.division.attributes"/> |
patrick@0 | 406 |
<ref name="selection.division.content"/> |
patrick@0 | 407 |
</element> |
patrick@0 | 408 |
</define> |
patrick@0 | 409 |
<define name="composition.division.attributes"> |
patrick@0 | 410 |
<interleave> |
patrick@0 | 411 |
<optional> |
patrick@26 | 412 |
<ref name="path.attribute"/> |
patrick@0 | 413 |
</optional> |
patrick@23 | 414 |
<optional> |
patrick@29 | 415 |
<ref name="xpath.attribute"/> |
patrick@23 | 416 |
</optional> |
patrick@23 | 417 |
<optional> |
patrick@29 | 418 |
<ref name="xslt.attribute"/> |
patrick@23 | 419 |
</optional> |
patrick@0 | 420 |
<ref name="remap.attributes"/> |
patrick@0 | 421 |
</interleave> |
patrick@0 | 422 |
</define> |
patrick@0 | 423 |
<define name="selection.division.attributes"> |
patrick@30 | 424 |
<optional> |
patrick@30 | 425 |
<ref name="path.attribute"/> |
patrick@30 | 426 |
</optional> |
patrick@23 | 427 |
</define> |
patrick@0 | 428 |
<define name="composition.division.content"> |
patrick@0 | 429 |
<optional> |
patrick@20 | 430 |
<ref name="composition.head"/> |
patrick@0 | 431 |
</optional> |
patrick@0 | 432 |
<oneOrMore> |
patrick@0 | 433 |
<choice> |
patrick@20 | 434 |
<ref name="composition.division"/> |
patrick@0 | 435 |
<ref name="composition.file"/> |
patrick@0 | 436 |
</choice> |
patrick@0 | 437 |
</oneOrMore> |
patrick@0 | 438 |
</define> |
patrick@0 | 439 |
<define name="selection.division.content"> |
patrick@0 | 440 |
<optional> |
patrick@20 | 441 |
<ref name="selection.head"/> |
patrick@0 | 442 |
</optional> |
patrick@0 | 443 |
<oneOrMore> |
patrick@0 | 444 |
<choice> |
patrick@20 | 445 |
<ref name="selection.division"/> |
patrick@0 | 446 |
<ref name="selection.file"/> |
patrick@30 | 447 |
<ref name="link"/> |
patrick@0 | 448 |
</choice> |
patrick@0 | 449 |
</oneOrMore> |
patrick@0 | 450 |
</define> |
patrick@0 | 451 |
<!-- |
patrick@0 | 452 |
============================================================================= |
patrick@20 | 453 |
FILE LEVEL |
patrick@0 | 454 |
============================================================================= |
patrick@0 | 455 |
--> |
patrick@0 | 456 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@0 | 457 |
<define name="composition.file"> |
patrick@0 | 458 |
<element name="file"> |
patrick@0 | 459 |
<ref name="composition.file.attributes"/> |
patrick@0 | 460 |
</element> |
patrick@0 | 461 |
</define> |
patrick@0 | 462 |
<define name="selection.file"> |
patrick@0 | 463 |
<element name="file"> |
patrick@0 | 464 |
<ref name="selection.file.attributes"/> |
patrick@2 | 465 |
<ref name="file.content"/> |
patrick@0 | 466 |
</element> |
patrick@0 | 467 |
</define> |
patrick@0 | 468 |
<define name="composition.file.attributes"> |
patrick@0 | 469 |
<interleave> |
patrick@30 | 470 |
<ref name="name.attribute"/> |
patrick@0 | 471 |
<optional> |
patrick@29 | 472 |
<ref name="xpath.attribute"/> |
patrick@0 | 473 |
</optional> |
patrick@20 | 474 |
<optional> |
patrick@29 | 475 |
<ref name="xslt.attribute"/> |
patrick@20 | 476 |
</optional> |
patrick@0 | 477 |
<ref name="remap.attributes"/> |
patrick@0 | 478 |
</interleave> |
patrick@0 | 479 |
</define> |
patrick@0 | 480 |
<define name="selection.file.attributes"> |
patrick@30 | 481 |
<interleave> |
patrick@30 | 482 |
<ref name="name.attribute"/> |
patrick@30 | 483 |
<optional> |
patrick@30 | 484 |
<ref name="uri.attribute"/> |
patrick@30 | 485 |
</optional> |
patrick@30 | 486 |
</interleave> |
patrick@30 | 487 |
</define> |
patrick@30 | 488 |
<define name="name.attribute"> |
patrick@30 | 489 |
<attribute name="name"> |
patrick@30 | 490 |
<data type="anyURI"/> |
patrick@30 | 491 |
</attribute> |
patrick@30 | 492 |
</define> |
patrick@2 | 493 |
<define name="file.content"> |
patrick@30 | 494 |
<ref name="inlines"/> |
patrick@30 | 495 |
</define> |
patrick@0 | 496 |
<!-- |
patrick@0 | 497 |
============================================================================= |
patrick@20 | 498 |
INLINE LEVEL |
patrick@0 | 499 |
============================================================================= |
patrick@0 | 500 |
--> |
patrick@0 | 501 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@0 | 502 |
<define name="inlines"> |
patrick@0 | 503 |
<mixed> |
patrick@0 | 504 |
<interleave> |
patrick@0 | 505 |
<zeroOrMore> |
patrick@0 | 506 |
<ref name="sup"/> |
patrick@0 | 507 |
</zeroOrMore> |
patrick@0 | 508 |
<zeroOrMore> |
patrick@0 | 509 |
<ref name="sub"/> |
patrick@0 | 510 |
</zeroOrMore> |
patrick@0 | 511 |
</interleave> |
patrick@0 | 512 |
</mixed> |
patrick@0 | 513 |
</define> |
patrick@0 | 514 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@0 | 515 |
<define name="sup"> |
patrick@0 | 516 |
<element name="sup"> |
patrick@0 | 517 |
<ref name="inlines"/> |
patrick@0 | 518 |
</element> |
patrick@0 | 519 |
</define> |
patrick@0 | 520 |
<define name="sub"> |
patrick@0 | 521 |
<element name="sub"> |
patrick@0 | 522 |
<ref name="inlines"/> |
patrick@0 | 523 |
</element> |
patrick@0 | 524 |
</define> |
patrick@36 | 525 |
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> |
patrick@36 | 526 |
<define name="link"> |
patrick@36 | 527 |
<element name="link"> |
patrick@36 | 528 |
<ref name="link.attributes"/> |
patrick@36 | 529 |
<ref name="link.content"/> |
patrick@36 | 530 |
</element> |
patrick@36 | 531 |
</define> |
patrick@36 | 532 |
<define name="link.attributes"> |
patrick@36 | 533 |
<ref name="uri.attribute"/> |
patrick@36 | 534 |
</define> |
patrick@36 | 535 |
<define name="uri.attribute"> |
patrick@36 | 536 |
<attribute name="uri"> |
patrick@36 | 537 |
<data type="anyURI"/> |
patrick@36 | 538 |
</attribute> |
patrick@36 | 539 |
</define> |
patrick@36 | 540 |
<define name="link.content"> |
patrick@36 | 541 |
<ref name="inlines"/> |
patrick@36 | 542 |
</define> |
patrick@0 | 543 |
<!-- |
patrick@0 | 544 |
============================================================================= |
patrick@20 | 545 |
REMAP ATTRIBUTES |
patrick@0 | 546 |
============================================================================= |
patrick@0 | 547 |
--> |
patrick@0 | 548 |
<define name="remap.attributes"> |
patrick@0 | 549 |
<interleave> |
patrick@0 | 550 |
<optional> |
patrick@0 | 551 |
<ref name="as.attribute"/> |
patrick@0 | 552 |
</optional> |
patrick@0 | 553 |
<optional> |
patrick@0 | 554 |
<ref name="attributes.attribute"/> |
patrick@0 | 555 |
</optional> |
patrick@0 | 556 |
</interleave> |
patrick@0 | 557 |
</define> |
patrick@0 | 558 |
<define name="as.attribute"> |
patrick@0 | 559 |
<attribute name="as"> |
patrick@0 | 560 |
<data type="QName"/> |
patrick@0 | 561 |
</attribute> |
patrick@0 | 562 |
</define> |
patrick@0 | 563 |
<define name="attributes.attribute"> |
patrick@0 | 564 |
<attribute name="attributes"> |
patrick@0 | 565 |
<list> |
patrick@0 | 566 |
<oneOrMore> |
patrick@0 | 567 |
<data type="token"> |
patrick@0 | 568 |
<param name="pattern">\c+=\S+</param> |
patrick@0 | 569 |
</data> |
patrick@0 | 570 |
</oneOrMore> |
patrick@0 | 571 |
</list> |
patrick@0 | 572 |
</attribute> |
patrick@0 | 573 |
</define> |
patrick@0 | 574 |
</grammar> |