Hej! Jag löste en liknande uppgift (2 kolumner) på PHPportalen nyligen: http://phpportalen.net/viewtopic.php?t=72921 Tack för alla svar! Först ska sägas att det här bara är en fundering har inte pysslat med xsl alls tidigare. Det där funkar inte eftersom Vilket är det som inte får existera? Problemet ligger i Lägg upp ett exempel på källfil (XML) och hur du vill att resultatfilen skall se ut (XHTML).ang problem med xml
Jag har fått tag på en webbaserad XMLTV läsare. Alltså en tv tablå på nätet.
En funktion den har är att den radar upp kanalerna (precis som tv.nu). Men den gör det bara från vänster till höger. och jag vill att den ska bara rada upp 3 bredvid varandra.
Här är koden där den gör det. Men den radar ju som sagt bara upp dem bredvid varandra, jag vill max ha 3 kanaler på en rad!
Någon som har någon idé?
(.XSL-fil)
<!-- TV Listings -->
<xsl:template name="page4">
<table border="1" width="100%">
<xsl:for-each select="tv/programme[generate-id()=generate-id(key('dateKey',substring(@start,1,8))[1])]">
[
</xsl:for-each>
<br/>
<br/>
<b>Programme listing for <xsl:value-of select="date:test(substring($date,1,8),1)" /> <xsl:value-of select="substring($date,7,2)" />/<xsl:value-of select="substring($date,5,2)" />/<xsl:value-of select="substring($date,1,4)" /></b>
<br/>
<br/>
<table>
<tr>
<xsl:for-each select="tv/channel">
<td valign="top" >
<table width="180">
<tr><td><xsl:call-template name="page4.5" ><xsl:with-param name="test" select="@id" /></xsl:call-template></td></tr>
</table>
</td>
</xsl:for-each>
</tr>
</table>
</table>
</xsl:template>
<xsl:template name="page4.5">
<xsl:param name="test" />
<table border="1">
<tr>
<td align="center"><img src="logo/{@id}.jpeg" width="60" height="50"/></td>
</tr>
<xsl:for-each select="/tv/programme[@channel=$test and ((substring(@start,1,8)=$date and substring(@start,9,4)>='0600') or (substring(@start,1,8)=$ndate and substring(@start,9,4)<'0600'))]">
<xsl:sort select="@start" />
<tr>
<td width="50">
<B><xsl:value-of select="substring(@start,9,2)" />:<xsl:value-of select="substring(@start,11,2)" /> </B>
<br/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>Sv: ang problem med xml
Sv:ang problem med xml
Men som sagt så råder det brist på xml kunskap för min del. Så jag klarar inte av så mycket kodning av det.
Jag har provat fram och tillbaka, men lyckas inte får den att flytta ned kanaltabellerna. det ända jag har lyckats med är att flytta alla en rad ned osv. Eller att alla hamnar på olika random höjd. (tror det bestäms utav hur många program en kanal innehåller).
Skulle verkligen behöva hjälp med koden, här!Sv: ang problem med xml
<code>
<xsl:template name="page4">
<table border="1" width="100%">
<xsl:for-each select="tv/programme[generate-id()=generate-id(key('dateKey',substring(@start,1,8))[1])]">
[
</xsl:for-each>
<br/>
<br/>
Programme listing for <xsl:value-of select="date:test(substring($date,1,8),1)" /> <xsl:value-of select="substring($date,7,2)" />/<xsl:value-of select="substring($date,5,2)" />/<xsl:value-of select="substring($date,1,4)" />
<br/>
<br/>
<table>
<tr>
<xsl:for-each select="tv/channel">
<td valign="top" >
<table width="180">
<tr><td>
<xsl:call-template name="page4.5" ><xsl:with-param name="test" select="@id" />
</xsl:call-template>
</td></tr>
</table>
</td>
<xsl:if test="position() mod 3">
</tr><tr>
</xsl:if>
</xsl:for-each>
</tr>
</table>
</table>
</xsl:template>
<xsl:template name="page4.5">
<xsl:param name="test" />
<table border="1">
<tr>
<td align="center"><img src="logo/{@id}.jpeg" width="60" height="50"/></td>
</tr>
<xsl:for-each select="/tv/programme[@channel=$test and ((substring(@start,1,8)=$date and substring(@start,9,4)>='0600') or (substring(@start,1,8)=$ndate and substring(@start,9,4)<'0600'))]">
<xsl:sort select="@start" />
<tr>
<td width="50">
<xsl:value-of select="substring(@start,9,2)" />:<xsl:value-of select="substring(@start,11,2)" /> 
<br/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</code>
Tanken,mha Henriks förslag, är iaf att man istället för en <br/> infogar </tr><tr> i tabellen var tredje loop i for-each för att skapa sig en ny rad. Sv:ang problem med xml
<xsl:if test="position() mod 3">
</tr><tr>
</xsl:if>
inte får existera i korrekt XML.
Sv: ang problem med xml
<xsl:if test="position() mod 3">
</xsl:if>
eller
</tr><tr>
Sv:ang problem med xml
</tr><tr>
Det jag citerade ur din kod var på formen
<a>
</b>
<b>
</a>
vilket inte är korrekt XML och därmed inte heller korrekt XSL.
Sv: ang problem med xml