Может кто-нибудь начать меня с преобразования XML в HTML. Я работал над преобразованиями XSLT и раньше, но не с нуля, и мне кажется, что-то упущено.
Начиная с XML это примерно так:
<order name="fred" value="123.45">
<lines>
<line description="foo" value="123"/>
<line description="bar" value="0.45"/>
</lines>
</order>
... и XSLT-файл, который выглядит следующим образом:
<?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>
Когда я выполняю преобразование с использованием объекта XslCompiledTransform из C #, я получаю базовый html, но нет содержимого для строк. Код, который я использовал для преобразования, выглядит следующим образом:
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;
}
Любая помощь с благодарностью.
Ross
(кроме того, какой смысл в элементе xsl: decimal-format, если при использовании функции format-number я должен предоставить строку формата?)