~ubuntu-branches/ubuntu/saucy/libmusicbrainz/saucy

« back to all changes in this revision

Viewing changes to schema/musicbrainz_mmd-1.0rc5.rng

  • Committer: Package Import Robot
  • Author(s): Timo Aaltonen
  • Date: 2012-02-01 17:18:10 UTC
  • Revision ID: package-import@ubuntu.com-20120201171810-jzz90w51dx6shdr1
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
 
 
3
<!-- ==================================================================
 
4
     $Id: musicbrainz_mmd-1.0rc5.rng 7362 2006-04-28 13:33:02Z matt $
 
5
 
 
6
     Relax NG Schema for MusicBrainz XML Metadata Version 1.0rc5
 
7
 
 
8
 
 
9
     This XML schema has been designed to represent music metadata.
 
10
     Documentation and the latest revision can be found at
 
11
 
 
12
        http://musicbrainz.org/development/mmd/
 
13
 
 
14
 
 
15
     Copyright (c) 2006 Robert Kaye, Matthias Friedrich
 
16
   
 
17
     The schema is released under the Creative Commons 
 
18
     Attribution-ShareAlike 2.5 license.
 
19
 
 
20
     http://creativecommons.org/licenses/by-sa/2.5/
 
21
 
 
22
     ================================================================== -->
 
23
 
 
24
 
 
25
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
 
26
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
 
27
         ns="http://musicbrainz.org/ns/mmd-1.0#">
 
28
 
 
29
 
 
30
    <start>
 
31
        <ref name="def_metadata-element"/>
 
32
    </start>
 
33
 
 
34
 
 
35
    <define name="def_metadata-element">
 
36
        <element name="metadata">
 
37
            <optional>
 
38
                <attribute name="generator">
 
39
                    <data type="anyURI"/>
 
40
                </attribute>
 
41
            </optional>
 
42
            <optional>
 
43
                <attribute name="created">
 
44
                    <data type="dateTime"/>
 
45
                </attribute>
 
46
            </optional>
 
47
 
 
48
            <optional>
 
49
                <ref name="def_artist-element"/>
 
50
            </optional>
 
51
            <optional>
 
52
                <ref name="def_release-element"/>
 
53
            </optional>
 
54
            <optional>
 
55
                <ref name="def_track-element"/>
 
56
            </optional>
 
57
 
 
58
            <optional>
 
59
                <ref name="def_artist-list"/>
 
60
            </optional>
 
61
            <optional>
 
62
                <ref name="def_release-list"/>
 
63
            </optional>
 
64
            <optional>
 
65
                <ref name="def_track-list"/>
 
66
            </optional>
 
67
                
 
68
            <ref name="def_metadata-element_extension"/>
 
69
        </element>
 
70
    </define>
 
71
 
 
72
 
 
73
    <define name="def_artist-element">
 
74
        <element name="artist">
 
75
            <optional>
 
76
                <attribute name="id">
 
77
                    <data type="anyURI"/>
 
78
                </attribute>
 
79
            </optional>
 
80
            <optional>
 
81
                <attribute name="type">
 
82
                    <data type="anyURI"/>
 
83
                </attribute>
 
84
            </optional>
 
85
            <ref name="def_artist-attribute_extension"/>
 
86
 
 
87
            <optional>
 
88
                <element name="name">
 
89
                    <text/>
 
90
                </element>
 
91
            </optional>
 
92
            <optional>
 
93
                <element name="sort-name">
 
94
                    <text/>
 
95
                </element>
 
96
            </optional>
 
97
            <optional>
 
98
                <element name="disambiguation">
 
99
                    <text/>
 
100
                </element>
 
101
            </optional>
 
102
            <optional>
 
103
                <element name="life-span">
 
104
                    <optional>
 
105
                        <attribute name="begin">
 
106
                            <ref name="def_incomplete-date"/>
 
107
                        </attribute>
 
108
                    </optional>
 
109
                    <optional>
 
110
                        <attribute name="end">
 
111
                            <ref name="def_incomplete-date"/>
 
112
                        </attribute>
 
113
                    </optional>
 
114
                </element>
 
115
            </optional>
 
116
 
 
117
            <optional>
 
118
                <ref name="def_alias-list"/>
 
119
            </optional>
 
120
            <optional>
 
121
                <ref name="def_release-list"/>
 
122
            </optional>
 
123
            <zeroOrMore>
 
124
                <ref name="def_relation-list"/>
 
125
            </zeroOrMore>
 
126
 
 
127
            <ref name="def_artist-element_extension"/>
 
128
        </element>
 
129
    </define>
 
130
 
 
131
 
 
132
    <define name="def_release-element">
 
133
        <element name="release">
 
134
            <optional>
 
135
                <attribute name="id">
 
136
                    <data type="anyURI"/>
 
137
                </attribute>
 
138
            </optional>
 
139
            <optional>
 
140
                <attribute name="type">
 
141
                    <ref name="def_URI-list"/>
 
142
                </attribute>
 
143
            </optional>
 
144
            <ref name="def_release-attribute_extension"/>
 
145
 
 
146
            <optional>
 
147
                <element name="title">
 
148
                    <text/>
 
149
                </element>
 
150
            </optional>
 
151
            <optional>
 
152
                <element name="text-representation">
 
153
                    <optional>
 
154
                        <attribute name="language">
 
155
                            <ref name="def_iso-639"/>
 
156
                        </attribute>
 
157
                    </optional>
 
158
                    <optional>
 
159
                        <attribute name="script">
 
160
                            <ref name="def_iso-15924"/>
 
161
                        </attribute>
 
162
                    </optional>
 
163
                </element>
 
164
            </optional>
 
165
            <optional>
 
166
                <element name="asin">
 
167
                    <data type="string">
 
168
                        <param name="pattern">[A-Z0-9]{10}</param>
 
169
                    </data>
 
170
                </element>
 
171
            </optional>
 
172
            <optional>
 
173
                <ref name="def_artist-element"/>
 
174
            </optional>
 
175
 
 
176
            <optional>
 
177
                <ref name="def_release-event-list"/>
 
178
            </optional>
 
179
            <optional>
 
180
                <ref name="def_disc-list"/>
 
181
            </optional>
 
182
            <optional>
 
183
                <ref name="def_puid-list"/>
 
184
            </optional>
 
185
            <optional>
 
186
                <ref name="def_track-list"/>
 
187
            </optional>
 
188
            <zeroOrMore>
 
189
                <ref name="def_relation-list"/>
 
190
            </zeroOrMore>
 
191
 
 
192
            <ref name="def_release-element_extension"/>
 
193
        </element>
 
194
    </define>
 
195
 
 
196
 
 
197
    <define name="def_track-element">
 
198
        <element name="track">
 
199
            <optional>
 
200
                <attribute name="id">
 
201
                    <data type="anyURI"/>
 
202
                </attribute>
 
203
            </optional>
 
204
            <ref name="def_track-attribute_extension"/>
 
205
 
 
206
            <optional>
 
207
                <element name="title">
 
208
                    <text/>
 
209
                </element>
 
210
            </optional>
 
211
            <optional>
 
212
                <element name="duration">
 
213
                    <data type="nonNegativeInteger"/>
 
214
                </element>
 
215
            </optional>
 
216
            <optional>
 
217
                <ref name="def_artist-element"/>
 
218
            </optional>
 
219
 
 
220
            <optional>
 
221
                <ref name="def_release-list"/>
 
222
            </optional>
 
223
            <optional>
 
224
                <ref name="def_puid-list"/>
 
225
            </optional>
 
226
            <zeroOrMore>
 
227
                <ref name="def_relation-list"/>
 
228
            </zeroOrMore>
 
229
 
 
230
            <ref name="def_track-element_extension"/>
 
231
        </element>
 
232
    </define>
 
233
 
 
234
 
 
235
    <define name="def_relation-element">
 
236
        <element name="relation">
 
237
            <attribute name="type">
 
238
                <data type="anyURI"/>
 
239
            </attribute>
 
240
            <attribute name="target">
 
241
                <data type="anyURI"/>
 
242
            </attribute>
 
243
            <optional>
 
244
                <attribute name="direction">
 
245
                    <ref name="def_direction"/>
 
246
                </attribute>
 
247
            </optional>
 
248
            <optional>
 
249
                <attribute name="attributes">
 
250
                    <ref name="def_URI-list"/>
 
251
                </attribute>
 
252
            </optional>
 
253
            <optional>
 
254
                <attribute name="begin">
 
255
                    <ref name="def_incomplete-date"/>
 
256
                </attribute>
 
257
            </optional>
 
258
            <optional>
 
259
                <attribute name="end">
 
260
                    <ref name="def_incomplete-date"/>
 
261
                </attribute>
 
262
            </optional>
 
263
 
 
264
            <optional>
 
265
                <choice>
 
266
                    <ref name="def_artist-element"/>
 
267
                    <ref name="def_release-element"/>
 
268
                    <ref name="def_track-element"/>
 
269
 
 
270
                    <ref name="def_relation-element_extension"/>
 
271
                </choice>
 
272
            </optional>
 
273
        </element>
 
274
    </define>
 
275
 
 
276
 
 
277
    <define name="def_alias">
 
278
        <element name="alias">
 
279
            <optional>
 
280
                <attribute name="type">
 
281
                    <data type="anyURI"/>
 
282
                </attribute>
 
283
            </optional>
 
284
            <optional>
 
285
                <attribute name="script">
 
286
                    <ref name="def_iso-15924"/>
 
287
                </attribute>
 
288
            </optional>
 
289
            <text/>
 
290
        </element>
 
291
    </define>
 
292
 
 
293
 
 
294
    <!--
 
295
        This part defines the extensions elements and attributes.
 
296
    -->
 
297
 
 
298
    <define name="def_metadata-element_extension">
 
299
        <optional>
 
300
            <ref name="def_extension_element"/>
 
301
        </optional>
 
302
    </define>
 
303
 
 
304
 
 
305
    <define name="def_artist-element_extension">
 
306
        <zeroOrMore>
 
307
            <ref name="def_extension_element"/>
 
308
        </zeroOrMore>
 
309
    </define>
 
310
 
 
311
 
 
312
    <define name="def_release-element_extension">
 
313
        <zeroOrMore>
 
314
            <ref name="def_extension_element"/>
 
315
        </zeroOrMore>
 
316
    </define>
 
317
 
 
318
 
 
319
    <define name="def_track-element_extension">
 
320
        <zeroOrMore>
 
321
            <ref name="def_extension_element"/>
 
322
        </zeroOrMore>
 
323
    </define>
 
324
 
 
325
 
 
326
    <define name="def_relation-element_extension">
 
327
        <ref name="def_extension_element"/>
 
328
    </define>
 
329
 
 
330
 
 
331
    <define name="def_artist-attribute_extension">
 
332
        <zeroOrMore>
 
333
            <ref name="def_extension_attribute"/>
 
334
        </zeroOrMore>
 
335
    </define>
 
336
 
 
337
 
 
338
    <define name="def_release-attribute_extension">
 
339
        <zeroOrMore>
 
340
            <ref name="def_extension_attribute"/>
 
341
        </zeroOrMore>
 
342
    </define>
 
343
 
 
344
 
 
345
    <define name="def_track-attribute_extension">
 
346
        <zeroOrMore>
 
347
            <ref name="def_extension_attribute"/>
 
348
        </zeroOrMore>
 
349
    </define>
 
350
 
 
351
 
 
352
    <define name="def_extension_element">
 
353
        <element>
 
354
            <anyName>
 
355
                <except>
 
356
                    <nsName ns="http://musicbrainz.org/ns/mmd-1.0#"/>
 
357
                    <nsName ns=""/>
 
358
                </except>
 
359
            </anyName>
 
360
            <zeroOrMore>
 
361
                <choice>
 
362
                    <attribute>
 
363
                        <anyName/>
 
364
                    </attribute>
 
365
                    <text/>
 
366
                    <ref name="def_anything"/>
 
367
                </choice>
 
368
            </zeroOrMore>
 
369
        </element>
 
370
    </define>
 
371
 
 
372
 
 
373
    <define name="def_extension_attribute">
 
374
        <attribute>
 
375
        <anyName>
 
376
            <except>
 
377
                <nsName ns="http://musicbrainz.org/ns/mmd-1.0#"/>
 
378
                <nsName ns=""/>
 
379
            </except>
 
380
        </anyName>
 
381
        </attribute>
 
382
    </define>
 
383
 
 
384
 
 
385
    <define name="def_anything">
 
386
        <element>
 
387
            <anyName>
 
388
                <except>
 
389
                    <nsName ns=""/>
 
390
                </except>
 
391
            </anyName>
 
392
            <zeroOrMore>
 
393
                <choice>
 
394
                    <attribute>
 
395
                    <anyName/>
 
396
                    </attribute>
 
397
                    <text/>
 
398
                    <ref name="def_anything"/>
 
399
                </choice>
 
400
            </zeroOrMore>
 
401
        </element>
 
402
    </define>
 
403
 
 
404
 
 
405
    <define name="def_artist-list">
 
406
        <element name="artist-list">
 
407
            <ref name="def_list-attributes"/>
 
408
            <zeroOrMore>
 
409
                <ref name="def_artist-element"/>
 
410
            </zeroOrMore>
 
411
        </element>
 
412
    </define>
 
413
 
 
414
 
 
415
    <define name="def_release-list">
 
416
        <element name="release-list">
 
417
            <ref name="def_list-attributes"/>
 
418
            <zeroOrMore>
 
419
                <ref name="def_release-element"/>
 
420
            </zeroOrMore>
 
421
        </element>
 
422
    </define>
 
423
 
 
424
 
 
425
    <define name="def_alias-list">
 
426
        <element name="alias-list">
 
427
            <ref name="def_list-attributes"/>
 
428
            <zeroOrMore>
 
429
                <ref name="def_alias"/>
 
430
            </zeroOrMore>
 
431
        </element>
 
432
    </define>
 
433
 
 
434
 
 
435
    <define name="def_track-list">
 
436
        <element name="track-list">
 
437
            <ref name="def_list-attributes"/>
 
438
            <zeroOrMore>
 
439
                <ref name="def_track-element"/>
 
440
            </zeroOrMore>
 
441
        </element>
 
442
    </define>
 
443
 
 
444
 
 
445
    <define name="def_release-event-list">
 
446
        <element name="release-event-list">
 
447
            <ref name="def_list-attributes"/>
 
448
            <zeroOrMore>
 
449
                <element name="event">
 
450
                    <attribute name="date">
 
451
                        <ref name="def_incomplete-date"/>
 
452
                    </attribute>
 
453
                    <optional>
 
454
                        <attribute name="country">
 
455
                            <ref name="def_iso-3166"/>
 
456
                        </attribute>
 
457
                    </optional>
 
458
                </element>
 
459
            </zeroOrMore>
 
460
        </element>
 
461
    </define>
 
462
 
 
463
 
 
464
    <define name="def_disc-list">
 
465
        <element name="disc-list">
 
466
            <ref name="def_list-attributes"/>
 
467
            <zeroOrMore>
 
468
                <element name="disc">
 
469
                    <attribute name="id">
 
470
                        <data type="string">
 
471
                            <param name="pattern">[a-zA-Z0-9._]{27}-</param>
 
472
                        </data>
 
473
                    </attribute>
 
474
                    <optional>
 
475
                        <attribute name="sectors">
 
476
                            <data type="nonNegativeInteger"/>
 
477
                        </attribute>
 
478
                    </optional>
 
479
                </element>
 
480
            </zeroOrMore>
 
481
        </element>
 
482
    </define>
 
483
 
 
484
 
 
485
    <define name="def_puid-list">
 
486
        <element name="puid-list">
 
487
            <ref name="def_list-attributes"/>
 
488
            <zeroOrMore>
 
489
                <element name="puid">
 
490
                    <attribute name="id">
 
491
                        <ref name="def_uuid"/>
 
492
                    </attribute>
 
493
                </element>
 
494
            </zeroOrMore>
 
495
        </element>
 
496
    </define>
 
497
 
 
498
 
 
499
    <define name="def_relation-list">
 
500
        <element name="relation-list">
 
501
            <attribute name="target-type">
 
502
                <data type="anyURI"/>
 
503
            </attribute>
 
504
            <ref name="def_list-attributes"/>
 
505
            <zeroOrMore>
 
506
                <ref name="def_relation-element"/>
 
507
            </zeroOrMore>
 
508
        </element>
 
509
    </define>
 
510
 
 
511
 
 
512
    <define name="def_list-attributes">
 
513
        <optional>
 
514
            <attribute name="count">
 
515
                <data type="nonNegativeInteger"/>
 
516
            </attribute>
 
517
        </optional>
 
518
        <optional>
 
519
            <attribute name="offset">
 
520
                <data type="nonNegativeInteger"/>
 
521
            </attribute>
 
522
        </optional>
 
523
    </define>
 
524
 
 
525
 
 
526
    <!-- A space separated list of URIs, relative ones are possible, too. -->
 
527
    <define name="def_URI-list">
 
528
        <list>
 
529
            <oneOrMore>
 
530
                <data type="anyURI"/>
 
531
            </oneOrMore>
 
532
        </list>
 
533
    </define>
 
534
 
 
535
 
 
536
    <!-- A date with varying precision in format 'YYYY-MM-DD'. -->
 
537
    <define name="def_incomplete-date">
 
538
        <data type="string">
 
539
            <param name="pattern">[0-9]{4}(-[0-9]{2})?(-[0-9]{2})?</param>
 
540
        </data>
 
541
    </define>
 
542
 
 
543
 
 
544
    <!-- A two-letter country code like 'DE', 'UK', 'FR' etc. -->
 
545
    <define name="def_iso-3166">
 
546
        <data type="string">
 
547
            <param name="pattern">[A-Z]{2}</param>
 
548
        </data>
 
549
    </define>
 
550
 
 
551
 
 
552
    <!-- An ISO-639-2/T language code like 'DEU', 'ENG', 'JPN' etc. -->
 
553
    <define name="def_iso-639">
 
554
        <data type="string">
 
555
            <param name="pattern">[A-Z]{3}</param>
 
556
        </data>
 
557
    </define>
 
558
 
 
559
 
 
560
    <!-- A four-letter script code like 'Latn', 'Cyrl', etc. -->
 
561
    <define name="def_iso-15924">
 
562
        <data type="string">
 
563
            <param name="pattern">[A-Z][a-z]{3}</param>
 
564
        </data>
 
565
    </define>
 
566
 
 
567
 
 
568
    <!-- A 128 Bit UUID in its standard ASCII representation. -->
 
569
    <define name="def_uuid">
 
570
        <data type="string">
 
571
            <param name="pattern">[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}</param>
 
572
        </data>
 
573
    </define>
 
574
 
 
575
 
 
576
    <!-- Reading direction of a relation. Defaults to "both". -->
 
577
    <define name="def_direction">
 
578
        <choice>
 
579
            <value>both</value>
 
580
            <value>forward</value>
 
581
            <value>backward</value>
 
582
        </choice>
 
583
    </define>
 
584
 
 
585
</grammar>