XSPF
XSPF, pronounced "spiff", is a playlist in XML format, which is supported by Xiph. It is a free and open format so can be easily, freely used for sharing playlists.
Contents
Sample
A very simple document looks like this:
<?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <trackList> <track><location>file:///mp3s/song_1.mp3</location></track> <track><location>file:///mp3s/song_2.mp3</location></track> <track><location>file:///mp3s/song_3.mp3</location></track> </trackList> </playlist>
Compatability
VLC Extensions
XSPF supports extensions to allow applications to add special data. These extensions can appear in the following entries:
- playlist
- track
The extension format is defined in the namespace xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/"
:
<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/"> ... <extension application="http://www.videolan.org/vlc/playlist/0"> ... </extension> </playlist>
Currently, extensions support the following elements:
- vlc:node
- vlc:item
- vlc:id
- vlc:option
The extensions vlc:node and vlc:item are used to specify how to display the playlist tree, which is not supported by standard XSPF.
vlc:node
This element will be displayed as a node in the playlist. It appears as an extension of the playlist block. Only its name can be specified:
<vlc:node title="Node title"> [list of vlc:item or vlc:node] </vlc:node>
vlc:item
This element represents a playlist item (not a node). It appears as an extension of the playlist block. It contains only a track id (see below, vlc:id):
<vlc:item tid="42" />
vlc:id
This element specifies a track's id. It appears as an extension of the track block.
<vlc:id>42</vlc:id>
The value of the id corresponds to the value of the attribute tid of vlc:item.
vlc:option
This element allows you to add options to the input item. It appears as an extension of the track block.
<vlc:option>option-name</vlc:option>
Or, if the option has a value:
<vlc:option>option-name=option-value</vlc:option>
Example of XSPF with VLC extensions
Let's summarize these as an example:
<?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/"> <title>Playlist</title> <location>D:/media/example.xspf</location> <trackList> <track> <title>Track 1</title> ... <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>0</vlc:id> </extension> </track> <track> <title>Track 2</title> ... <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>1</vlc:id> </extension> </track> <track> <title>Track 3</title> ... <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>2</vlc:id> </extension> </track> <track> <title>Track 4</title> ... <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>3</vlc:id> <vlc:option>my-option=42</vlc:option> </extension> </track> </trackList> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:node title="Node 1"> <vlc:item tid="0" /> <vlc:item tid="1" /> <vlc:node title="Node 2"> <vlc:item tid="2" /> <vlc:item tid="3" /> </vlc:node> </vlc:node> </extension> </playlist>
This playlist example will be displayed as:
Playlist `- Node 1 |- Track 1 |- Track 2 `- Node 2 |- Track 3 `- Track 4
The input for Track 4 will be created with the option my-option set to 42.
See also
There are many advantages to using XML as the format. More information is available at