quelqu'un peut-il me lancer en ce qui concerne la conversion de XML en HTML. J'ai déjà travaillé sur des conversions XSLT, mais jamais à partir de rien, et il me semble qu'il me manque quelque chose.Aide à démarrer avec XML -> HTML via XSLT
A partir de XML qui est quelque chose comme ceci:
<order name="fred" value="123.45">
<lines>
<line description="foo" value="123"/>
<line description="bar" value="0.45"/>
</lines>
</order>
... et un fichier XSLT qui ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:decimal-format name="sterling" decimal-separator="." grouping-separator=","/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<xsl:apply-templates select="order"/>
</head>
<body>
<table border="2">
<xsl:apply-templates select="order/lines/line"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="order">
Name is '<xsl:value-of select="@name"/>' and value is <xsl:value-of select="format-number(@value, '£#,###.00', 'sterling')"/>
</xsl:template>
<xsl:template match="order/lines/line">
<tr>
<td>
<xsl:value-of select="@description"/>
</td>
<td>
<xsl:value-of select="@value"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
Quand je fais la conversion à l'aide d'un objet XslCompiledTransform de C#, Je reçois le HTML de base mais pas de contenu pour les lignes. Le code que j'ai utilisé pour la transformation est comme suit:
private static String GetHtml(String xml)
{
String result;
var doc = new XmlDocument();
doc.LoadXml(xml);
var transformer = new XslCompiledTransform(true);
transformer.Load("foobar.xslt");
using (var writer = new StringWriter())
{
transformer.Transform(doc, null, writer);
result = writer.ToString();
}
return result;
}
Toute aide grandement appréciée.
Ross
(en aparté, quel est le point de l'élément xsl: format décimal si, en utilisant la fonction format-nombre, je dois fournir la chaîne de format?)
Merci d'avoir signalé cela. Trop de hâte de ma part sinon j'aurais posté le bon fichier xslt. J'ai corrigé le post original qui fonctionne maintenant pour les détails principaux de 'commande' mais pas les lignes. Merci, Ross –