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:
- Künstler (
xspf:creator
-Element) - Album, sofern angegeben (
xspf:album
) - Titel des Stücks (
xspf:title
)
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>
</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>