Je rencontre actuellement des difficultés avec une conversion XML/XSLT vers HTML sur laquelle je travaille. En bref, je veux utiliser <br />
à l'intérieur d'une balise XML, afin que le fichier HTML après transformation affiche un saut de ligne. Après quelques essais, j'ai réussi à faire en sorte que cela fonctionne, mais au détriment de certaines autres fonctionnalités. A savoir la possibilité de mettre en évidence des parties.
Tout d'abord, le fichier XML déversé. En gros, il y a plusieurs balises possibles qui contiennent toutes un nom et un prénom. Dans ce cas, je veux que le prénom et le nom soient analysés sur une ligne séparée (d'où l'utilisation de la balise <br />
tag). En outre, dans certains cas, le prénom ou le nom de famille devra être mis en évidence. Dans ce cas, à la ligne 3, le nom de famille "The Hand".
<swift_native>
<tag tag_code=":1:"><![CDATA[Jaco<br />Ronnie]]></tag>
<tag tag_code=":2:"><![CDATA[John<br />Doe]]></tag>
<tag tag_code=":2:"><![CDATA[Robbie<br />]]><highlight>The Hand</highlight></tag>
</swift_native>
Jusqu'à présent, en fonction de la méthode que j'utilise dans le XSLT, je parviens à obtenir soit les sauts de ligne corrects, soit la mise en évidence. Mais pas les deux : La figure suivante le montre.
Ci-dessous vous voyez le fichier XSLT utilisé. Où vous pouvez voir que l'utilisation de <xsl:apply-templates/>
fera fonctionner la mise en évidence et <xsl:value-of select="." disable-output-escaping="yes"/>
me permettra d'utiliser le <br />
correctement.
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- HTML Layout definition -->
<xsl:output method="html"/>
<xsl:template match="swift_native">
<html>
<head>
<title>
<xsl:apply-templates select="message_id"/>
</title>
<style type="text/css">
#tbl1,#tbl2 {display:none;}
#lnk1,#lnk2 {border:none;background:none;width:85px;}
td {FONT-SIZE: 75%; MARGIN: 0px; COLOR: #000000;}
td {FONT-FAMILY: verdana,helvetica,arial,sans-serif}
a {TEXT-DECORATION: none;}
table.subtable {border-collapse:collapse;}
table.subtable td {border:1px solid black;}
</style>
</head>
<body>
<table cellpadding="3" width="100%" class="subtable">
<tr bgcolor="#cccccc">
<td colspan="3">Block4</td>
</tr>
<xsl:apply-templates select="tag" />
</table>
</body>
</html>
</xsl:template>
<!-- Variable definition -->
<xsl:template match="tag">
<tr>
<td>
<b>
<xsl:value-of select="@tag_code" />
</b>
</td>
<td>
<xsl:value-of select="." disable-output-escaping="yes"/>
</td>
<td>
<xsl:apply-templates/>
</td>
</tr>
</xsl:template>
<xsl:template match="highlight">
<span style="background-color:yellow;">
<xsl:apply-templates/>
</span>
</xsl:template>
</xsl:stylesheet>
Évidemment, la question est la suivante : est-ce que quelqu'un connaît un moyen d'utiliser à la fois la fonction <br />
et la mise en évidence ?