1
<?xml version="1.0" encoding="UTF-8"?>
3
<!-- ==================================================================
4
$Id: musicbrainz_mmd-1.0rc5.rng 7362 2006-04-28 13:33:02Z matt $
6
Relax NG Schema for MusicBrainz XML Metadata Version 1.0rc5
9
This XML schema has been designed to represent music metadata.
10
Documentation and the latest revision can be found at
12
http://musicbrainz.org/development/mmd/
15
Copyright (c) 2006 Robert Kaye, Matthias Friedrich
17
The schema is released under the Creative Commons
18
Attribution-ShareAlike 2.5 license.
20
http://creativecommons.org/licenses/by-sa/2.5/
22
================================================================== -->
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#">
31
<ref name="def_metadata-element"/>
35
<define name="def_metadata-element">
36
<element name="metadata">
38
<attribute name="generator">
43
<attribute name="created">
44
<data type="dateTime"/>
49
<ref name="def_artist-element"/>
52
<ref name="def_release-element"/>
55
<ref name="def_track-element"/>
59
<ref name="def_artist-list"/>
62
<ref name="def_release-list"/>
65
<ref name="def_track-list"/>
68
<ref name="def_metadata-element_extension"/>
73
<define name="def_artist-element">
74
<element name="artist">
81
<attribute name="type">
85
<ref name="def_artist-attribute_extension"/>
93
<element name="sort-name">
98
<element name="disambiguation">
103
<element name="life-span">
105
<attribute name="begin">
106
<ref name="def_incomplete-date"/>
110
<attribute name="end">
111
<ref name="def_incomplete-date"/>
118
<ref name="def_alias-list"/>
121
<ref name="def_release-list"/>
124
<ref name="def_relation-list"/>
127
<ref name="def_artist-element_extension"/>
132
<define name="def_release-element">
133
<element name="release">
135
<attribute name="id">
136
<data type="anyURI"/>
140
<attribute name="type">
141
<ref name="def_URI-list"/>
144
<ref name="def_release-attribute_extension"/>
147
<element name="title">
152
<element name="text-representation">
154
<attribute name="language">
155
<ref name="def_iso-639"/>
159
<attribute name="script">
160
<ref name="def_iso-15924"/>
166
<element name="asin">
168
<param name="pattern">[A-Z0-9]{10}</param>
173
<ref name="def_artist-element"/>
177
<ref name="def_release-event-list"/>
180
<ref name="def_disc-list"/>
183
<ref name="def_puid-list"/>
186
<ref name="def_track-list"/>
189
<ref name="def_relation-list"/>
192
<ref name="def_release-element_extension"/>
197
<define name="def_track-element">
198
<element name="track">
200
<attribute name="id">
201
<data type="anyURI"/>
204
<ref name="def_track-attribute_extension"/>
207
<element name="title">
212
<element name="duration">
213
<data type="nonNegativeInteger"/>
217
<ref name="def_artist-element"/>
221
<ref name="def_release-list"/>
224
<ref name="def_puid-list"/>
227
<ref name="def_relation-list"/>
230
<ref name="def_track-element_extension"/>
235
<define name="def_relation-element">
236
<element name="relation">
237
<attribute name="type">
238
<data type="anyURI"/>
240
<attribute name="target">
241
<data type="anyURI"/>
244
<attribute name="direction">
245
<ref name="def_direction"/>
249
<attribute name="attributes">
250
<ref name="def_URI-list"/>
254
<attribute name="begin">
255
<ref name="def_incomplete-date"/>
259
<attribute name="end">
260
<ref name="def_incomplete-date"/>
266
<ref name="def_artist-element"/>
267
<ref name="def_release-element"/>
268
<ref name="def_track-element"/>
270
<ref name="def_relation-element_extension"/>
277
<define name="def_alias">
278
<element name="alias">
280
<attribute name="type">
281
<data type="anyURI"/>
285
<attribute name="script">
286
<ref name="def_iso-15924"/>
295
This part defines the extensions elements and attributes.
298
<define name="def_metadata-element_extension">
300
<ref name="def_extension_element"/>
305
<define name="def_artist-element_extension">
307
<ref name="def_extension_element"/>
312
<define name="def_release-element_extension">
314
<ref name="def_extension_element"/>
319
<define name="def_track-element_extension">
321
<ref name="def_extension_element"/>
326
<define name="def_relation-element_extension">
327
<ref name="def_extension_element"/>
331
<define name="def_artist-attribute_extension">
333
<ref name="def_extension_attribute"/>
338
<define name="def_release-attribute_extension">
340
<ref name="def_extension_attribute"/>
345
<define name="def_track-attribute_extension">
347
<ref name="def_extension_attribute"/>
352
<define name="def_extension_element">
356
<nsName ns="http://musicbrainz.org/ns/mmd-1.0#"/>
366
<ref name="def_anything"/>
373
<define name="def_extension_attribute">
377
<nsName ns="http://musicbrainz.org/ns/mmd-1.0#"/>
385
<define name="def_anything">
398
<ref name="def_anything"/>
405
<define name="def_artist-list">
406
<element name="artist-list">
407
<ref name="def_list-attributes"/>
409
<ref name="def_artist-element"/>
415
<define name="def_release-list">
416
<element name="release-list">
417
<ref name="def_list-attributes"/>
419
<ref name="def_release-element"/>
425
<define name="def_alias-list">
426
<element name="alias-list">
427
<ref name="def_list-attributes"/>
429
<ref name="def_alias"/>
435
<define name="def_track-list">
436
<element name="track-list">
437
<ref name="def_list-attributes"/>
439
<ref name="def_track-element"/>
445
<define name="def_release-event-list">
446
<element name="release-event-list">
447
<ref name="def_list-attributes"/>
449
<element name="event">
450
<attribute name="date">
451
<ref name="def_incomplete-date"/>
454
<attribute name="country">
455
<ref name="def_iso-3166"/>
464
<define name="def_disc-list">
465
<element name="disc-list">
466
<ref name="def_list-attributes"/>
468
<element name="disc">
469
<attribute name="id">
471
<param name="pattern">[a-zA-Z0-9._]{27}-</param>
475
<attribute name="sectors">
476
<data type="nonNegativeInteger"/>
485
<define name="def_puid-list">
486
<element name="puid-list">
487
<ref name="def_list-attributes"/>
489
<element name="puid">
490
<attribute name="id">
491
<ref name="def_uuid"/>
499
<define name="def_relation-list">
500
<element name="relation-list">
501
<attribute name="target-type">
502
<data type="anyURI"/>
504
<ref name="def_list-attributes"/>
506
<ref name="def_relation-element"/>
512
<define name="def_list-attributes">
514
<attribute name="count">
515
<data type="nonNegativeInteger"/>
519
<attribute name="offset">
520
<data type="nonNegativeInteger"/>
526
<!-- A space separated list of URIs, relative ones are possible, too. -->
527
<define name="def_URI-list">
530
<data type="anyURI"/>
536
<!-- A date with varying precision in format 'YYYY-MM-DD'. -->
537
<define name="def_incomplete-date">
539
<param name="pattern">[0-9]{4}(-[0-9]{2})?(-[0-9]{2})?</param>
544
<!-- A two-letter country code like 'DE', 'UK', 'FR' etc. -->
545
<define name="def_iso-3166">
547
<param name="pattern">[A-Z]{2}</param>
552
<!-- An ISO-639-2/T language code like 'DEU', 'ENG', 'JPN' etc. -->
553
<define name="def_iso-639">
555
<param name="pattern">[A-Z]{3}</param>
560
<!-- A four-letter script code like 'Latn', 'Cyrl', etc. -->
561
<define name="def_iso-15924">
563
<param name="pattern">[A-Z][a-z]{3}</param>
568
<!-- A 128 Bit UUID in its standard ASCII representation. -->
569
<define name="def_uuid">
571
<param name="pattern">[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}</param>
576
<!-- Reading direction of a relation. Defaults to "both". -->
577
<define name="def_direction">
580
<value>forward</value>
581
<value>backward</value>