[LIB-4] Add hespiff source files
[hespiff.git] / src / main / xsd / xspf-1_0.2.xsd
diff --git a/src/main/xsd/xspf-1_0.2.xsd b/src/main/xsd/xspf-1_0.2.xsd
new file mode 100644 (file)
index 0000000..84b0584
--- /dev/null
@@ -0,0 +1,126 @@
+<?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>