Ik zit met een probleempje, ik ben bezig met het schrijven van een XSLT-template om postings met XML-code te parsen. Ik wil ook mensen de beschikking geven over een <code/> en een <normal/> tag, maar loop hierbij tegen het probleem aan dat OF de onderliggende tags geparsed worden naar HTML OF dat de onderliggende tags niet weergegeven worden en de content hiervan wel.
Om alles even duidelijker te maken:
XML-bestand (het bericht dus)...
Het gaat er dus om dat de tags binnen de <code>...</code> tag wel weergegeven worden, maar niet geparsed, < en > moeten dus omgezet worden in < en >
XSLT-bestand...
Hier zie je dus dat de code-tag gebruikt maakt van <xsl:apply-templates/>, die zorgt er dus voor dat alle tags die zich hierin bevinden OOK geparsed worden, maar dit wil ik niet. Maar als ik dan gebruik maak van <xsl:value-of select="."/> wordt wel de content weergegeven, maar niet de tags. Dus ik zou dan als output krijgen:
Ik hoop dat het zo duidelijk is wat ik bedoel.
Om alles even duidelijker te maken:
XML-bestand (het bericht dus)...
code:
1
2
3
4
| <posting> <code language="BOE!">Dit is da bomb!!!111<br/> <b>BOE!</b></code> </posting> |
Het gaat er dus om dat de tags binnen de <code>...</code> tag wel weergegeven worden, maar niet geparsed, < en > moeten dus omgezet worden in < en >
XSLT-bestand...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <xsl:template match="code">
<blockquote>
<small><xsl:choose><xsl:when test="string-length(@language) = 0">code: </xsl:when><xsl:otherwise><xsl:value-of select="@language"/>: </xsl:otherwise></xsl:choose></small>
<hr/>
<pre><code><xsl:apply-templates/></code></pre>
<hr/>
</blockquote>
</xsl:template>
<xsl:template match="br">
<br/>
</xsl:template>
<xsl:template match="b|i|u|em|strong">
<xsl:element name="{name(.)}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template> |
Hier zie je dus dat de code-tag gebruikt maakt van <xsl:apply-templates/>, die zorgt er dus voor dat alle tags die zich hierin bevinden OOK geparsed worden, maar dit wil ik niet. Maar als ik dan gebruik maak van <xsl:value-of select="."/> wordt wel de content weergegeven, maar niet de tags. Dus ik zou dan als output krijgen:
code:
1
2
3
4
5
| <blockquote xmlns=""> <small>BOE!: </small><hr> <pre><code>Dit is da bomb!!!111 BOE!</code></pre></blockquote> |
Ik hoop dat het zo duidelijk is wat ik bedoel.
[ Voor 17% gewijzigd door snoopy op 05-01-2005 08:25 ]