einfache XSL - Frage

lukasS

Erfahrenes Mitglied
Hallo,

ich habe eine XML mit meinen mp3s erstellt (Bsp, s. u.). Würde gerne die Daten über XSL auslesen, damit ich die mir im Browser anschauen kann. Ich würde gerne eine Tabelle mit den Interpreten haben, in der alle Titel mit dem dazugehörigen Album drinstehen. Leider erzeuge ich für jeden Titel eine neue Zeile in XSL und darüber steht auch immer der Interpret. Da ich keine Ahnung von XSL habe, wollte ich fragen, ob mir jemand bei diesen "eigentlich" einfachen Problem helfen könnte. Unten habe ich ein Bsp meiner XSL (stark verkürzt).

XML:
Code:
<mp3>
	<tags Titel="School" Album="Archetype" Interpret="Fear Factory" Länge="02:38" KBitS="128"/>
	<tags Titel="Slave Labor" Album="Archetype" Interpret="Fear Factory" Länge="03:53" KBitS="128"/>
	<tags Titel="Undercurrent" Album="Archetype" Interpret="Fear Factory" Länge="04:04" KBitS="128"/>
	<tags Titel="Kiss" Album="20 Hits Of The 80S Volume Two" Interpret="Tom Jones" Länge="03:34" KBitS="192"/>
	<tags Titel="Blame It On The Boogie" Album="20 Hits Of The 80S Volume Two" Interpret="Big Fun" Länge="05:32" KBitS="192"/>
</mp3>

Code:
	<xsl:template match="/">
		<html>
			<head>
				<title>MP3</title>		
			</head>
			<body>
				<table border="1">
						<xsl:apply-templates select="mp3/tags"/>
				</table>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="mp3"/>
		<xsl:template match="tags">
				<tr>
					<td colspan="2">
						<xsl:value-of select="@Interpret"/>
					</td>
				</tr>
				<tr id="hide">
					<td><h3>Titel</h3></td>
					<td><h3>Album</h3></td>
				</tr>
				<tr id="hide">
					<td><xsl:value-of select="@Titel" /></td>
					<td><xsl:value-of select="@Album" /></td>
				</tr>
		</xsl:template>

Danke schonmal

Lukas

PS: Bin ein neuling, was XSL angeht.
 
Danke für den link, ich verstehe leider nur Bahnhof daraus. Ich kriege aber immerhin eine if-Abfrage hin.

Trotzdem kapiere ich diesen XSL - Kram nicht. Wenn ich mehrere Tags mit gleichen Namen habe (wie oben in der XML), ist es dann wie in einer Schleife, die solage läuft, bis die Tags enden oder wie muss ich das verstehen? :confused:

Wie kann ich einer Variable einen anderen Wert zuweisen? Ich muss sagen, dass C++ einfacher ist.
 
huhu ich grüße Dich,

ich habe dir anbei mal meinen Lösungsweg geschickt,

wenn es dass ist was Du gerne wolltest, d.h. ich Dich also richtig verstanden habe dann kannst Du Dich bei Fragen gerne einfach nochmal melden

schönen Tag Dir

mp3.xml sieht bei mir so aus:

------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="mp3.xsl"?>

<mp3s>

<mp3>
<interpret>Korn</interpret>
<album>Follow the Leader</album>
<track>all in the family</track>
<trackdauer>03:05</trackdauer>
<KBitS>128</KBitS>
</mp3>

<mp3>
<interpret>Fear Factory</interpret>
<album>Archetype</album>
<track>School</track>
<trackdauer>02:38</trackdauer>
<KBitS>128</KBitS>
</mp3>

<mp3>
<interpret>Fear Factory</interpret>
<album>Archetype</album>
<track>Undercurrent</track>
<trackdauer>04:04</trackdauer>
<KBitS>128</KBitS>
</mp3>

</mp3s>
-------------------------------------------------------------------

mp3.xsl so :

______________________________________

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>mp3.xsl</title>
</head>
<body>
<table border="2">
<tr>
<td>Interpret</td>
<td>Album</td>
<td>Track</td>
<td>Dauer</td>
<td>KBitsS</td>
</tr>

<xsl:for-each select="mp3s/mp3">
<tr>

<td><xsl:value-of select="interpret"/></td>
<td><xsl:value-of select="album"/></td>
<td><xsl:value-of select="track"/></td>
<td><xsl:value-of select="trackdauer"/></td>
<td><xsl:value-of select="KBitS"/></td>

</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

________________________________________________
 
Danke für die Hilfe!
Es ist fast richtig. Ich wollte, dass jeder Interpreten in einer eigenen Tabelle steht. Der Interpretenname soll dann über der Tabelle stehen.

Danke nochmal!

[edit]
so ungefähr habe ich mir das gedacht, aber irgendwie funktioniert das nicht. Es soll ja jeder Interpret eine eigene Tabelle haben.
Code:
<xsl:for-each select="mp3s/mp3">
	<xsl:value-of select="interpret"/>
	<table border="2">
		<tr>
			<td>Album</td>
			<td>Track</td>
			<td>Dauer</td>
			<td>KBitsS</td>
		</tr>
	
		<xsl:for-each select=".">
			<tr>
				<td><xsl:value-of select="album"/></td>
				<td><xsl:value-of select="track"/></td>
				<td><xsl:value-of select="trackdauer"/></td>
				<td><xsl:value-of select="KBitS"/></td>
			</tr>
		</xsl:for-each>
	</table>
</xsl:for-each>
[/edit]
 
Zuletzt bearbeitet:
huhu lukas,

gerne :)
freut mich wenn´s hilft,
bin doch selbst ne gerade anfangende kackwurst *grins*

kommst du denn jetzt längs damit, oder magst noch was?

anbei einfach mal ungefragt meine linklisten favoriten in deutsch *can´t speak english very good*

sehr einfache und deutsche einführungen *freu* können unter folgenden seiten u.u. weiterhelfen
smile.png
- http://www.internet-kompetenz.ch/xml/einfuehrung/

- http://www.usegroup.de/software/xmltutorial/einstieg.html

- http://aktuell.de.selfhtml.org/links/xml.htm#deutschsprachig order more infos *g*

- http://www.devmag.net/xml/ da gibts ne lustige menge anfänger stuff *finde ich*

- http://aktuell.de.selfhtml.org/artikel/xml/namensraeume/index.htm

lustige grüße von der jana und eine gute zeit euch allen

-- jana 2004-10-18 09:21 UTC



schönen tag dir

wünscht

jana
 
hallo lukas hier nochmal die jana

also wie du das oben geschrieben hast (von wegen für jedem interpreten eine tabelle) kann das nicht funxen :(

du schreibst , ich quote mal:

<xsl:for-each select="mp3s/mp3">
<xsl:value-of select="interpret"/>
<table border="2">
<tr>
<td>Album</td>
<td>Track</td>
<td>Dauer</td>
<td>KBitsS</td>
</tr>

aber ich glaube du mußt zum einen die xml struktur ändern, die ich geschickt habe ist einfach nur auf die mp3s /mp3 ausgelegt und du mußt es ja bzw. magst es ja für die interpreten haben und dann denke ich mußt du im stylsheet auch anderes definieren,
also z.b. sagen
hey den interpret in die tabellenüberschrift und dann unten drunter in den einzelnen tabellenzeilen bitte die angaben album interpret tracktitel,, länge etc.

lg

der broetchenfan
 
Danke dir Broetchenfan ;),

also fange ich von vorne an, d. h. mit der XML-Struktur. Zum Glück wird die XML automatisch erstellt :)

Falls nochmal unklarheiten kommen, melde ich mich wieder.

Danke nochmal!

Schönen Tag!

Lukas
 

Neue Beiträge

Zurück