Empty tags en XSLT

13-09-2006 2006m 12:18 000000000000r door Wieland

Als je XML wilt omzetten naar (X)HTML met behulp van XSLT, kom je in de problemen als de parser je lege elementen wat al te enthousiast naar valide XML vertaalt. Gelinkte stylesheets en scripts in de headers van je output werken dan namelijk niet meer in Internet Explorer. De parser maakt van <script type="text/javascript" src="foo.js"></script> namelijk <script type="text/javascript" src="foo.js"/>, en dat snapt IE niet. De simpelste workaround - hoewel een beetje een hack - is om een (blanco) comment in te voegen, zodat het element niet leeg is:


<xsl:template match="header">
(...)
<script type="text/javascript" src="foo.js">
<xsl:comment></xsl:comment>
</script>
</xsl:template>

Output:

<script type="text/javascript" src="foo.js"><!----></script>

(Aan deze steen heb ik me de afgelopen jaren méér dan eens gestoten, dus ik post het maar even hier, zodat ik het nooit meer vergeet (en voor Google). Het zijn de laatste dagen bij mijn huidige werkgever (waarover later meer), en ik heb het erg druk met de afronding van mijn bezigheden. Dan kun je dit soort stomme bugs er eventjes niet bij hebben.)

Eén duit in het zakje bij 'Empty tags en XSLT'

  1. ijsbrand reageerde:

    Dank.

Doe een duit in het zakje

XHTML: toegestane tags: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <del datetime=""> <em> <pre> <strong>