Ik heb een xml bestand met de volgende inhoud:
Hier staat html in. Als ik dit wil weergeven via xsl gaat het op de volgende manier goed:
Nu staat de 1e regel keurig bold en de 2e cursief.
Maar omdat hier nog een header en menu enzo om heen moet wil ik dit gaan doen via call-template.
En dan wrapper.xsl
Als ik dit dus doe, dan zijn bij de 1e en 2e regel de html tags ge-escaped. Ook als ik disable-output-escaping="yes" weghaal heeft dit geen effect.
Het zoeken leverde niks op. Dan kreeg ik alleen topics over het toepassen van call-template, maar dat gaat wel goed. Alleen de waarde van die value-of wordt ergens ge-escaped. Heeft iemand enig idee hoe ik dit kan oplossen??
XML:
1
2
3
4
5
6
7
8
9
| <?xml version="1.0" encoding="ISO-8859-1" ?> <data> <posts> <post id="4"><title><![CDATA[<strong>test</strong>]]></title></post> <post id="3"><title><![CDATA[<em>test</em>]]></title></post> <post id="2"><title>title 3</title></post> <post id="1"><title>title 4</title></post> </posts> </data> |
Hier staat html in. Als ik dit wil weergeven via xsl gaat het op de volgende manier goed:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
| <?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="/"> <html> <body> <xsl:for-each select="data/posts/post"> label: <xsl:value-of select="title" disable-output-escaping="yes" /><br /> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> |
Nu staat de 1e regel keurig bold en de 2e cursief.
Maar omdat hier nog een header en menu enzo om heen moet wil ik dit gaan doen via call-template.
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:include href="wrapper.xsl" /> <xsl:template match="/"> <xsl:call-template name="wrapper"> <xsl:with-param name="content"> <!-- start content --> <xsl:for-each select="data/posts/post"> label: <xsl:value-of select="title" disable-output-escaping="yes" /><br /> </xsl:for-each> <!-- end content --> </xsl:with-param> </xsl:call-template> </xsl:template> </xsl:stylesheet> |
En dan wrapper.xsl
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xhtml" indent="yes"/> <xsl:template match="/" name="wrapper"> <xsl:param name="content" /> <html> <head> <title>test</title> <style type="text/css"> div#blaat { background-color: #00ff00; } </style> </head> <body> <div id="blaat"> <xsl:copy-of select="$content" /> </div> </body> </html> </xsl:template> </xsl:stylesheet> |
Als ik dit dus doe, dan zijn bij de 1e en 2e regel de html tags ge-escaped. Ook als ik disable-output-escaping="yes" weghaal heeft dit geen effect.
Het zoeken leverde niks op. Dan kreeg ik alleen topics over het toepassen van call-template, maar dat gaat wel goed. Alleen de waarde van die value-of wordt ergens ge-escaped. Heeft iemand enig idee hoe ik dit kan oplossen??