webForumDet fria alternativet

Syntaxfel på sajten när min XSLT template är tom

XML

6 svar · 1 277 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej,

Det här är en del av min XSLT fil:

<xsl:template match="/">
	<table cellpadding="3" cellspacing="0" class="oddsfeed" style="width: 220px; margin: 0 auto;">
	<xsl:apply-templates select="content"/>
	</table>
</xsl:template>

Problemet är att när XML filen inte svarar, alltså när "content" är tom, så blir det ett fel på sajten som gör att element hoppar runt och flyttar sig.

Jag gissar på att det blir syntaxfel eftersom endast <table></table> skrivs ut på sidan, stämmer det?

Går det isf. att hämta en alternativ template om content är tom?

Medlem sedan feb. 20034 441 inlägg
#2

Ser nu att det enda som skrivs ut då flödet är tomt är:

<?xml version="1.0" encoding="utf-8"?>
<table cellpadding="3" cellspacing="0" class="oddsfeed" style="width: 220px; margin: 0 auto;" />

Inte så konstigt alltså, </table> skrivs aldrig ut, men varför?

Tack,

Medlem sedan feb. 20034 441 inlägg
#3

Ledsen för spammandet.. men nu testade jag det här:

<table cellpadding="3" cellspacing="0" class="oddsfeed" style="width: 220px; margin: 0 auto;">
<xsl:template match="/">
	<xsl:apply-templates select="content"/>
</xsl:template>    
</table>

Så blir det rätt, dvs. inget alls skrivs ut om flödet är tomt, vilket är bra. Själva boxen där innehållet ska visas är såklart tom, men det blir inte några förskjutning på sajten i övrigt längre vilket är bra.

Skulle dock vilja veta (om någon kan) vad som gäller här, borde inte det utanför <xsl:apply-templates /> ändå skrivas ut, även fast min template är tom?

Medlem sedan feb. 20034 441 inlägg
#4

Hmm, nej, det verkar som om jag gör som ovan, så visas det ingenting, oavsett om det finns ett okej flöde eller ej.

Vad gör jag fel? Förstår inte riktigt det här.
Kan tillägga att jag använder modulen XML/XSL i dotnetnuke och får felet:

System.Xml.Xsl.XslLoadException
Top-level element 'table' may not have a null namespace URI
Medlem sedan juli 20013 378 inlägg
#5

Hmm...
Du kan inte ha element runt en mall som i ditt sista exempel - du var mer rätt ute i det första du skrev!

MickeA.com skrev:

Går det isf. att hämta en alternativ template om content är tom?

Hmm...

Klart det gör...
(Knackar från minnet)

<xsl:template match="/">
<xsl:choose>
  <xsl:when test="count(content)=0">
    <div>Look ma - no content!</div>
  </xsl:when>
  <xsl:otherwise>
	<table cellpadding="3" cellspacing="0" class="oddsfeed" style="width: 220px; margin: 0 auto;">
	<xsl:apply-templates select="content"/>
	</table>
  </xsl:otherwise>
</xsl:choose>
</xsl:template>
Medlem sedan feb. 20034 441 inlägg
#6

Tack som fan! Så jäkla vackert!

Medlem sedan juli 20013 378 inlägg
#7

:bire

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)