[xsl] Import ie stylesheet met comments gaat mis in xsl

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een xsl bestand die output als xhtml. Ik heb in mijn xhtml een stylesheet die alleen ie 7 of kleiner moet gebruiken. Dit kan m.b.v. conditional comments:

HTML:
1
<!--[if lt IE 7]><link href="{$root}css/ie.css" rel="stylesheet" type="text/css" /><![endif]-->


Op het moment dat ik deze xsl transformeer naar de xhtml dan haalt ie de complete code weg omdat ie denkt dat het een comment is. Hoe kan ik dit verhelpen?

Achtergrond info:
De output method van de xsl is xml (zie hieronder). Ik wil dit niet veranderen in text o.i.d.
code:
1
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zelf gelukt uiteindelijk. Met een hele hoop mazzel, want ik heb geen idee hoe het precies werkt...

Dit is de oplossing:

code:
1
2
3
<xsl:text disable-output-escaping="yes"><!--[if lt IE 7]></xsl:text>
<link href="{$root}css/ie.css" rel="stylesheet" type="text/css" />
<xsl:text disable-output-escaping="yes"><![endif]--></xsl:text>

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 18 oktober 2009 @ 17:16:
Zelf gelukt uiteindelijk. Met een hele hoop mazzel, want ik heb geen idee hoe het precies werkt...
Je xsl document wordt geparsed zoals ieder ander xml document. Dit houdt in dat comments niet worden opgenomen in de uiteindelijke DOM van je xsl document. Wat je nu doet, is alle speciale karakters escapen. Hierdoor is het geen comment meer, en wordt het dus wel opgenomen in de DOM.

Voor de leesbaarheid kan je ook eens kijken naar de CDATA tag; deze is speciaal bedoeld om tekst letterlijk (dus niet geparsed) in je xml document op te nemen.