--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ==================================================================
+ XML Schema for XSPF Version 1
+
+ $Id$
+
+ This schema was written as a service for developers who want
+ to validate the playlists generated by their applications.
+ Nobody claims it is perfect, so if you find bugs please report
+ them. In any case, the spec overrides this schema.
+
+ Further information about XSPF is available at http://www.xml.org
+
+
+ Copyright (c) 2005 Matthias Friedrich <matt@mafr.de>
+
+ The schema is released under the Creative Commons
+ Attribution-ShareAlike 2.0 license.
+
+ http://creativecommons.org/licenses/by-sa/2.0/
+
+
+ ChangeLog:
+ * 2005-10-12: Fixed an error: the "extension" element now
+ has an "application" attribute, like in the spec.
+ * 2006-09-25: Fixed an error: the "attribution" element now allows
+ "identifier" child element elements, too.
+ ================================================================== -->
+
+<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
+ xmlns:xspf = "http://xspf.org/ns/0/"
+ targetNamespace="http://xspf.org/ns/0/"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+<xsd:element name="playlist" type="xspf:PlaylistType"/>
+
+<xsd:complexType name="PlaylistType">
+ <xsd:sequence>
+ <xsd:element name="title" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="creator" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="annotation" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="info" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="location" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="identifier" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="image" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="date" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="license" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="attribution" type="xspf:AttributionType" minOccurs="0" maxOccurs="1"/>
+
+ <xsd:element name="link" type="xspf:LinkType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="meta" type="xspf:MetaType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extension" type="xspf:ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
+
+ <xsd:element name="trackList" type="xspf:TrackListType" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="version" type="xspf:VersionType" use="required"/>
+</xsd:complexType>
+
+<xsd:simpleType name="VersionType">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="1"/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<xsd:complexType name="AttributionType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="identifier" type="xsd:anyURI"/>
+ <xsd:element name="location" type="xsd:anyURI"/>
+ </xsd:choice>
+</xsd:complexType>
+
+<xsd:complexType name="LinkType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:anyURI">
+ <xsd:attribute name="rel" type="xsd:anyURI" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+</xsd:complexType>
+
+<xsd:complexType name="MetaType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="rel" type="xsd:anyURI" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+</xsd:complexType>
+
+<xsd:complexType name="ExtensionType">
+ <xsd:complexContent mixed="true">
+ <xsd:restriction base="xsd:anyType">
+ <xsd:sequence>
+ <xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="application" type="xsd:anyURI" use="required"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="TrackListType">
+ <xsd:sequence>
+ <xsd:element name="track" type="xspf:TrackType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+</xsd:complexType>
+
+<xsd:complexType name="TrackType">
+ <xsd:sequence>
+ <xsd:element name="location" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="identifier" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="title" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="creator" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="annotation" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="info" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="image" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="album" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trackNum" type="xsd:nonNegativeInteger" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="duration" type="xsd:nonNegativeInteger" minOccurs="0" maxOccurs="1"/>
+
+ <xsd:element name="link" type="xspf:LinkType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="meta" type="xspf:MetaType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extension" type="xspf:ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+</xsd:complexType>
+
+</xsd:schema>