Ik probeer om een find en replace uit te voeren in HTML code binnen XML. Ik heb namelijk een JavaScript functie die geen enters in zijn argumenten mag hebben; dus wil ik hier een \n of <br /> van maken. Het probleem is dat ik het niet voor elkaar krijg. Momenteel gebeuren er in mijn XSL twee zaken
• de XML code wordt doorlopen en met een substring-before en substring-after worden enters vervangen
• [url]a[/], b en i elementen worden door <a>, <b> en <i> html code vervangen
Het lukt echter niet om beide zaken tegelijk uit te voeren
Code om Enters in HTML code te vervangen door <br />
code om html code te converteren
Heeft iemand enig idee hoe we een resultaat krijgen waarbij:
• de HTML markup behouden blijft;
• de enters worden vervangen door <br />'s
• de XML code wordt doorlopen en met een substring-before en substring-after worden enters vervangen
• [url]a[/], b en i elementen worden door <a>, <b> en <i> html code vervangen
Het lukt echter niet om beide zaken tegelijk uit te voeren
Code om Enters in HTML code te vervangen door <br />
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| [...]
<xsl:template name="linebreaks">
<xsl:param name="string"/>
<xsl:choose>
<xsl:when test="contains($string, '
')">
<xsl:value-of select="substring-before($string, '
')"/>
<br />
<xsl:call-template name="linebreaks">
<xsl:with-param name="string" select="substring-after($string, '
')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates />
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
[...] |
code om html code te converteren
code:
De input XML is 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| [...]
<!--xsl:template match="a|A">
<xsl:text disable-output-escaping="yes"><a href='</xsl:text>
<xsl:value-of select="@href" />
<xsl:text disable-output-escaping="yes">'></xsl:text>
<xsl:apply-templates />
<xsl:text disable-output-escaping="yes"></a></xsl:text>
</xsl:template>
<xsl:template match="b|B">
<xsl:text disable-output-escaping="yes"><b></xsl:text>
<xsl:apply-templates />
<xsl:text disable-output-escaping="yes"></b></xsl:text>
</xsl:template-->
<!--xsl:template match="b|B|i|I|LI|li|UL|ul|OL|ol|P|p">
<xsl:copy>
<xsl:apply-templates select="b|B|i|I|LI|li|UL|ul|OL|ol|P|p"/>
</xsl:copy>
</xsl:template-->
</xsl:stylesheet>
[...] |
XML:
Gewenste HTML code:1
2
3
4
5
6
7
8
9
10
| [...] <?xml version="1.0"?> <site> <paragraph> A new paragraph <B>Sitemap</B> intro. And a <a href='http://www.tweakers.net'>link test</a> to <I>tweakers.net </I>A line break </paragraph> </site> [...] |
HTML:
1
2
3
4
5
| [...]
<body>
<p>A new paragraph<br /><B>Sitemap</B> intro. And a <a href='http://www.tweakers.net'>link test</a> to <I>tweakers.net<BR /></I>A line break</p>
</body>
[...] |
Heeft iemand enig idee hoe we een resultaat krijgen waarbij:
• de HTML markup behouden blijft;
• de enters worden vervangen door <br />'s
[ Voor 40% gewijzigd door Spider.007 op 08-01-2004 15:47 ]
---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate