1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- ==================================================================
4 Relax NG Schema for XSPF Version 1
8 This schema was written as a service for developers who want
9 to validate the playlists generated by their applications.
10 Nobody claims it is perfect, so if you find bugs please report
11 them. In any case, the spec overrides this schema.
13 Further information about XSPF is available at http://www.xml.org
16 Copyright (c) 2005 Matthias Friedrich <matt@mafr.de>
17 Copyright (c) 2007-2008 Sebastian Pipping <webmaster@hartwork.org>
19 The schema is released under the Creative Commons
20 Attribution-ShareAlike 2.5 license.
22 http://creativecommons.org/licenses/by-sa/2.5/
26 * 2008-09-03: Allow xml:base attribute everywhere
27 Extract common elements
28 Sebastian Pipping <webmaster@hartwork.org>
30 * 2008-07-26: Support for xml:base attribute
31 Sebastian Pipping <webmaster@hartwork.org>
33 * 2007-02-16: Trang-friendly transformation of def_anything
34 Sebastian Pipping <webmaster@hartwork.org>
36 * 2007-02-16: Interleave wrap for track and playlist
37 to allow arbitrary element order
38 Sebastian Pipping <webmaster@hartwork.org>
40 * 2007-01-07: The info element's content has been changed from
41 type "text" to "anyURI", as per spec.
42 Matthias Friedrich <matt@mafr.de>
44 * 2006-09-25: Fixed an error: the "attribution" element now allows
45 "identifier" child element elements, too.
46 Matthias Friedrich <matt@mafr.de>
47 ================================================================== -->
50 <grammar xmlns="http://relaxng.org/ns/structure/1.0"
51 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
52 ns="http://xspf.org/ns/0/">
56 <ref name="def_playlist-element"/>
60 <define name="xml_base-attribute">
62 <attribute name="xml:base">
69 <define name="def_title-element">
70 <element name="title">
71 <ref name="xml_base-attribute"/>
77 <define name="def_creator-element">
78 <element name="creator">
79 <ref name="xml_base-attribute"/>
85 <define name="def_annotation-element">
86 <element name="annotation">
87 <ref name="xml_base-attribute"/>
93 <define name="def_info-element">
95 <ref name="xml_base-attribute"/>
101 <define name="def_location-element">
102 <element name="location">
103 <ref name="xml_base-attribute"/>
104 <data type="anyURI"/>
109 <define name="def_identifier-element">
110 <element name="identifier">
111 <ref name="xml_base-attribute"/>
112 <data type="anyURI"/>
117 <define name="def_image-element">
118 <element name="image">
119 <ref name="xml_base-attribute"/>
120 <data type="anyURI"/>
125 <define name="def_link-element">
126 <element name="link">
127 <attribute name="rel">
128 <data type="anyURI"/>
130 <ref name="xml_base-attribute"/>
132 <data type="anyURI"/>
137 <define name="def_meta-element">
138 <element name="meta">
139 <attribute name="rel">
140 <data type="anyURI"/>
142 <ref name="xml_base-attribute"/>
149 <define name="def_extension-element">
150 <element name="extension">
151 <attribute name="application">
152 <data type="anyURI"/>
154 <ref name="xml_base-attribute"/>
160 <ref name="def_anything"/>
169 <define name="def_playlist-element">
170 <element name="playlist">
171 <attribute name="version">
173 <param name="pattern">1</param>
176 <ref name="xml_base-attribute"/>
180 <ref name="def_title-element"/>
183 <ref name="def_creator-element"/>
186 <ref name="def_annotation-element"/>
189 <ref name="def_info-element"/>
192 <ref name="def_location-element"/>
195 <ref name="def_identifier-element"/>
198 <ref name="def_image-element"/>
201 <element name="date">
202 <ref name="xml_base-attribute"/>
203 <data type="dateTime"/>
207 <element name="license">
208 <ref name="xml_base-attribute"/>
209 <data type="anyURI"/>
214 <ref name="def_attribution-element"/>
218 <ref name="def_link-element"/>
221 <ref name="def_meta-element"/>
224 <ref name="def_extension-element"/>
227 <element name="trackList">
228 <ref name="xml_base-attribute"/>
230 <ref name="def_track-element"/>
238 <define name="def_attribution-element">
239 <element name="attribution">
240 <ref name="xml_base-attribute"/>
244 <ref name="def_identifier-element"/>
245 <ref name="def_location-element"/>
252 <define name="def_anything">
257 <ref name="def_anything"/>
274 <define name="def_track-element">
275 <element name="track">
276 <ref name="xml_base-attribute"/>
280 <ref name="def_location-element"/>
283 <ref name="def_identifier-element"/>
287 <ref name="def_title-element"/>
290 <ref name="def_creator-element"/>
293 <ref name="def_annotation-element"/>
296 <ref name="def_info-element"/>
299 <ref name="def_image-element"/>
302 <element name="album">
303 <ref name="xml_base-attribute"/>
308 <element name="trackNum">
309 <ref name="xml_base-attribute"/>
310 <data type="nonNegativeInteger"/>
314 <element name="duration">
315 <ref name="xml_base-attribute"/>
316 <data type="nonNegativeInteger"/>
321 <ref name="def_link-element"/>
324 <ref name="def_meta-element"/>
327 <ref name="def_extension-element"/>