【问题标题】:Illegal Characters in Path for XSLT Tranformation [duplicate]XSLT 转换路径中的非法字符 [重复]
【发布时间】: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 方法。它们不一样。

标签: c# xml xslt


【解决方案1】:

我很糟糕并且第二次发布了这个问题,但是有人能够给我一个答案,所以在这里......

    var xsltTemplate = File.ReadAllText(path);
    xsltTransform.Load(xsltTemplate);

应该是

    xsltTransform.Load(path);

一切都很完美。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2019-08-30
    • 1970-01-01
    相关资源
    最近更新 更多