rap: XSL Problem

Hallo,
ich möchte eine XML Datei (Playliste im xspf-Format) mit Hilfe eines XSL-Styles in Tabellenform bringen.
Eine grobe Anleitung habe ich auf http://support.microsoft.com/kb/264665/de gefunden.
Nur ist meine Datei ein bisschen anders aufgebaut:

  
<?xml version="1.0" encoding="UTF-8"?>  
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>  
<playlist version="1" xmlns="http://xspf.org/ns/0/">  
  <creator>audacious-plugins-1.5.0</creator>  
  <title>Radio</title>  
  <trackList>  
    <track>  
      <location>http://91.121.102.200:8015</location>  
      <title>Onkelz Gedenkstätte</title>  
    </track>  
    <track>  
      <location>http://mp3.webradio.rockantenne.de:80</location>  
      <title>ROCK ANTENNE</title>  
    </track>  
  </trackList>  
</playlist>  

Einen Ansatz habe ich schon, aber der ganze Text wird nur nebeneinander dargestellt:

  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >  
<xsl:template match="TABLE">  
<HTML>  
   <BODY>  
      <TABLE border='1' style='table-layout:fixed' width='600'>  
         <TR bgcolor='#FFFF00'>  
            <TD>location</TD>  
            <TD>title</TD>  
         </TR>  
         <xsl:for-each select="track">  
            <TR>  
               <TD><xsl:value-of select='location'/></TD>  
               <TD><xsl:value-of select='title' disable-output-escaping="yes"/></TD>  
            </TR>  
         </xsl:for-each>  
      </TABLE>  
   </BODY>  
</HTML>  
</xsl:template>  
</xsl:stylesheet>  

Da ich Anfänger bin, bräuchte ich Hilfe, damit es funktioniert. Kann das bitte jemand vervollständigen?
Danke!

  1. Hallo rap,

    Da ich Anfänger bin, bräuchte ich Hilfe, damit es funktioniert. Kann das bitte jemand vervollständigen?

    Das Hauptproblem ist wohl der Umgang mit dem Default-Namensraum, in welchem sich alle Elemente befinden. Probiere diesen Ansatz:

    <?xml version="1.0" encoding="UTF-8"?>  
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"  
      xmlns:xspf="http://xspf.org/ns/0/" exclude-result-prefixes="xspf">  
      
      <xsl:template match="xspf:playlist">  
        <HTML>  
          <HEAD>  
            <TITLE>Test</TITLE>  
          </HEAD>  
          <BODY>  
            <xsl:apply-templates select="xspf:trackList"/>  
          </BODY>  
        </HTML>  
      </xsl:template>  
      
      <xsl:template match="xspf:trackList">  
        <TABLE border="1" style="table-layout:fixed" width="600">  
          <TR bgcolor="#FFFF00">  
            <TD>location</TD>  
            <TD>title</TD>  
          </TR>  
          <xsl:for-each select="xspf:track">  
            <TR>  
              <TD><xsl:value-of select="xspf:location"/></TD>  
              <TD><xsl:value-of select="xspf:title"/></TD>  
            </TR>  
          </xsl:for-each>  
        </TABLE>  
      </xsl:template>  
      
    </xsl:stylesheet>
    

    Grüße,
    Thomas

    1. Hey Thomas,

      vielen lieben Dank, das gefällt mir schon sehr gut.

      Gruß
      Raphael

  2. Noch eine Anmerkung zum Vorposter. Ich hoffe das soll keine xhtml oder html als ausgabe werden? Zumindest solltest du dann die Elementnamen kleinschreiben und diesem auch noch den richtigen Namensraum zuteilen. Das ganze wird gut hier auf selfhtml erklärt.

    Eigentlich duerfte in deinem Beispiel gar nicht angezeigt werden, da du in deinm Template mit der Knotenadressierung "Table" einsteigst. (<xsl:template match="TABLE">) Deine xml aber gar keinen Knoten dergleichen aufweisst.

    Gruß

    1. Hallo Holge r,

      Ich hoffe das soll keine xhtml oder html als ausgabe werden? Zumindest solltest du dann die Elementnamen kleinschreiben und diesem auch noch den richtigen Namensraum zuteilen.

      Das trifft nur für XHTML-Ausgabe zu.

      Eigentlich duerfte in deinem Beispiel gar nicht angezeigt werden, da du in deinm Template mit der Knotenadressierung "Table" einsteigst.

      Die nicht überschriebenen Default-Templates greifen dennoch.

      Grüße,
      Thomas