webForumDet fria alternativet

Styla XSLT med CSS

3 svar · 535 visningar · startad av SebastianE

SebastianEMedlem sedan nov. 2004100 inlägg
#1

Har en XSLT fil som består av följande kod
<?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="/">
<!-- matcha XSLT:s rotnod -->

\<html xmlns="http://www.w3.org/1999/xhtml" \>
  \<head\>
    \<title\>Lab. 2 upg. 2\</title\>
  \</head\>
  \<body\>
    \<xsl:for-each select="skivor/skiva"\>
      \<xsl:value-of select="artist_grupp" /\>
    \</xsl:for-each\>
  \</body\>
\</html\>

</xsl:template>
</xsl:stylesheet>
(Spottar ur artisterna korrekt)

I min XML fil har jag följande kod
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="upg2.xslt"?>
<?xml-stylesheet type="text/css" href="upg2.css"?>
<skivor>
<skiva id="1" titel="Essential" ar="2007">
<artist_grupp>Presley Elvis</artist_grupp>
<latar>
<lat lid="1" latnamn="Jailhouse rock" minuter="2" sekunder="28" latnummer="3"></lat>
<lat lid="2" latnamn="In the ghetto" minuter="3" sekunder="22" latnummer="27"></lat>
<lat lid="3" latnamn="Burning love" minuter="2" sekunder="50" latnummer="28"></lat>
</latar>
<media>CD</media>
</skiva>

\<skiva id="2" titel="What if leaving is a loving thing?" ar="2007"\>
	\<artist_grupp\>Sahara Hotnights\</artist_grupp\>
	\<latar\>
		\<lat lid="1" latnamn="Getting away with murder" minuter="4" sekunder="2" latnummer="7"\>\</lat\>
		\<lat lid="2" latnamn="If anyone matters it's you" minuter="3" sekunder="32" latnummer="10"\>\</lat\>
		\<lat lid="3" latnamn="Visit to Vienna" minuter="2" sekunder="45" latnummer="1"\>\</lat\>
	\</latar\>
	\<media\>CD\</media\>
\</skiva\>

\<skiva id="3" titel="Loose" ar="2006"\>
	\<artist_grupp\>Furtado Nelly\</artist_grupp\>
	\<latar\>
		\<lat lid="1" latnamn="Glow" minuter="2" sekunder="30" latnummer="4"\>\</lat\>
		\<lat lid="2" latnamn="Do It" minuter="4" sekunder="22" latnummer="9"\>\</lat\>
		\<lat lid="3" latnamn="Wait For You" minuter="3" sekunder="10" latnummer="11"\>\</lat\>
	\</latar\>
	\<media\>CD\</media\>
\</skiva\>

</skivor>

Som ni ser har jag kopplat till en CSS-fil till XML-filen. Problemet är att jag inte vet hur jag ska göra för att ändra artisternas bakgrundsfärg då de ligger i en loop. Någon som vet hur?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Jag antar att du menar att du vill ha varannan-färgning av artisterna?

När du traverserar igenom xml-dokumentet med din for-each så får du köra någon liten specialhabrovink med position() för att bestämma vilken bakgrundsfärg du vill ha.
Ett (otestat) exempel är:

<xsl:for-each select="skivor/skiva">
<div>
<xsl:choose>
	<xsl:when test="position() mod 2 = 0">
		<xsl:attribute name="class">css-klassen_med_vit_bakgrundsfärg</xsl:attribute>
	</xsl:when>
	<xsl:otherwise>
		<xsl:attribute name="class">css-klassen_med_grå_bakgrundsfärg</xsl:attribute>
	</xsl:otherwise>
</xsl:choose>	
<xsl:value-of select="artist_grupp" />
</div>
</xsl:for-each>

P.S: använd gärna [kod]-taggar när du postar kod också - så blir det lättare för oss att läsa.

mvh

SebastianEMedlem sedan nov. 2004100 inlägg
#3

Tyvärr fick jag det inte att fungera om man skulle ha varannan bakgrundsfärg.
Jag vill ha samma bakgrundsfärg på alla artister. Ska även sedan ta fram infomartion om låtarna o.s.v. Jag har en känsla utav att XML-filen inte läser in CSS-filen.

Ska försöka leta red på kod-taggarna nästa gång;)

SebastianEMedlem sedan nov. 2004100 inlägg
#4

Problemet var att XSLT dokumentet var felaktigt skrivet. Något med noder eller något sådant.

124 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)