XML Playlists (XSPF) – frei²-Opensource

Für Medien-Playlists hat sich neben M3U auch das XML Shareable Playlist Format (XSPF) etabliert. Für manche Zwecke ist es nützlich die ausführlichen XML-Daten in eine handlichere Form zu bringen, z. B. für die Beschreibung einer Sendung hier oder für den Upload beim Internet Archive. Mit ein wenig XSLT ist das möglich.

Copyright & Lizenz

Urheber aller im Folgenden gezeigten Dateien ist Robert Bienert. Die XSLT-Dateien stehen unter der GPL 3.0 soweit nichts Anderes angegeben ist.

XSPF-Prozessierung

Aus den Playlists werden im Folgenden extrahiert und neu formatiert:

Das Ausgabe-Format ist in beiden Fällen

Künstler – [Album –] Titel

XSPF nach Text

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xspf="http://xspf.org/ns/0/">

<!--
Copyright © 2024 Robert Bienert <https://freihoch2.de/opensource/xspf/>

Dies ist freie Software gemäß der Bedingungen der GPL 3.0.
-->

<xsl:output method="text"/>

<xsl:template match="/">
	<xsl:for-each select="xspf:playlist/xspf:trackList/xspf:track">
		<xsl:value-of select="xspf:creator" /> – <xsl:if test="xspf:album">
			<xsl:value-of select="xspf:album" /> – </xsl:if>
		<xsl:value-of select="xspf:title"/><xsl:text>&#xa;</xsl:text>
	</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

XSPF als (geordnete) HTML-Liste

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xspf="http://xspf.org/ns/0/"
	exclude-result-prefixes="xspf">

<!--
Copyright © 2024 Robert Bienert <https://freihoch2.de/opensource/xspf/>

Dies ist freie Software gemäß der Bedingungen der GPL 3.0.
-->

<xsl:output method="xml" omit-xml-declaration="yes" indent="no"/>

<xsl:template match="/">
	<ol>
	<xsl:for-each select="xspf:playlist/xspf:trackList/xspf:track">
		<li><xsl:value-of select="xspf:creator" /> – <xsl:if test="album">
			<xsl:value-of select="xspf:album" /> – </xsl:if>
		<xsl:value-of select="xspf:title"/></li>
	</xsl:for-each>
	</ol>
</xsl:template>

</xsl:stylesheet>