Gøre brug af formatering fra XML'en
Jeg er ved at opbygge et XSL-Stylesheet til formattering af et XML-dokument. Det skal dog være muligt at have lidt formatering i selve XML'en også, men jeg kan desværre ikke få det til at virke. Hvis jeg f.eks. vil have kursiv tekst, har jeg prøvet at skrive <i>...</i> i selve XML'en, men det virker ikke, fordi det bare bliver opfattet som XML.Jeg har så prøvet at skrive ... og så lave en søg og erstat i XSL-dokumentet, for at få det rettet til <i>...</i>, men det kan jeg heller ikke få til at virke. Jeg har her et eksempel på det:
XML-filen:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="xsl.xsl"?>
<test>
<test>ABCDEF</test>
<test><i>ABC</i>DEF</test>
</test>
XSL-filen:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<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" />
<xsl:template match="/test">
<html>
<body>
<xsl:value-of select="test[1]" /><br />
<xsl:call-template name="insertHTML">
<xsl:with-param name="text" select="test[1]"/>
</xsl:call-template><br />
<xsl:call-template name="insertHTML2">
<xsl:with-param name="text" select="test[1]"/>
</xsl:call-template><br />
<xsl:value-of select="test[2]" disable-output-escaping="yes" /><br />
<i><xsl:value-of select="test[2]" /></i>
</body>
</html>
</xsl:template>
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="with"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$with"/>
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="with" select="$with"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertHTML">
<xsl:param name="text"/>
<xsl:variable name="i"><i></i></xsl:variable>
<xsl:call-template name="replace-string">
<xsl:with-param name="text">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="$text"/>
<xsl:with-param name="replace" select="'[/i]'"/>
<xsl:with-param name="with" select="substring($i,4,4)"/>
</xsl:call-template>
</xsl:with-param>
<xsl:with-param name="replace" select="''"/>
<xsl:with-param name="with" select="substring($i,1,3)"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="insertHTML2">
<xsl:param name="text"/>
<xsl:variable name="i"><i></i></xsl:variable>
<xsl:call-template name="replace-string">
<xsl:with-param name="text">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="$text"/>
<xsl:with-param name="replace" select="''"/>
<xsl:with-param name="with" select="substring($i,4,4)"/>
</xsl:call-template>
</xsl:with-param>
<xsl:with-param name="replace" select="'[i]'"/>
<xsl:with-param name="with" select="substring($i,1,3)"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
Hvad gør jeg forkert og hvad skal jeg gøre, for at få det til at virke?
På forhånd tak.