【发布时间】:2020-01-28 00:39:32
【问题描述】:
我正在编写 XSLT 转换来翻译 XML 信用报告。
当我运行以下代码时,我收到“路径中的非法字符”错误。不知道我错过了什么。我希望这个方法返回一个 HTML 字符串。
我已经在 XML 上测试了 XSLT 转换并且它可以工作。此代码在 transform.Load 函数上失败,并出现“路径中的非法字符”错误。
我在这里错过了什么?
private string FormatCreditReport(string inputXml)
{
var xsltTransform = new XslCompiledTransform();
var webRootPath = HostingEnvironment.ApplicationPhysicalPath;
var path = webRootPath
+ "XSLT_Stylesheets"
+ Path.DirectorySeparatorChar
+ "CreditReportTransform.xslt";
var xsltTemplate = File.ReadAllText(path);
xsltTransform.Load(xsltTemplate);
StringWriter results = new StringWriter();
using (var reader = XmlReader.Create(new StringReader(inputXml)))
{
xsltTransform.Transform(reader, null, results);
}
return results.ToString();
}
XSLT 文档:
<xsl:template match="/">
<html>
<body>
<table border ="1">
<tr>
<th><h2>Credit File</h2></th>
</tr>
<tr></tr>
<tr>
<td>File Since Date</td>
<td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/CreditFile/FileSinceDate"/></td>
</tr>
<tr>
<td>Date of Last Activity</td>
<td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/CreditFile/DateOfLastActivity"/></td>
</tr>
<tr>
<td>Date of Request</td>
<td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/CreditFile/DateOfRequest"/></td>
</tr>
<tr></tr>
<tr>
<th><h2>Subject</h2></th>
</tr>
<tr>
<td>Last Name</td>
<td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/Subject/LastName"/></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
</xsl:template>
【问题讨论】:
-
您不能在 html 上使用 Xml 方法。它们不一样。