【问题标题】:"Illegal character in path" using XSLT使用 XSLT 的“路径中的非法字符”
【发布时间】:2012-08-08 09:31:36
【问题描述】:

我在调用 XslCompiledTransform 类的 Transform 方法时遇到“路径中的非法字符”异常。

这是我的代码:

// Maybe there is a problem in this path 
string xsltPath = @"..\..\HtmlAttributesParser.xslt";

XslCompiledTransform xsltCompiled = new XslCompiledTransform();
xsltCompiled.Load(xsltPath, new XsltSettings(false, true), new XmlUrlResolver());
StringBuilder output = new StringBuilder();

xsltCompiled.Transform(content, XmlWriter.Create(output));

没有 * 吗? " | 在我的路径中,所以我想知道为什么我会得到这个异常。

关于 Exception 消息,我的 content var 的值和这个异常没有联系对吗?

编辑:这是适用于在线 XSLT 测试器的内容

<div class="pk-link">
<a href="/STORE/Pages/myPage.aspx" url="/STORE/Pages/myPage.aspx" width="" heigth=""  target="_blank">
    <img border="0" src="/link_download.gif"/>
      Download
</a>
</div>

【问题讨论】:

  • 错误不是来自 xsltPath/Load 而是来自 Transform。你传递什么内容?一条路径?一个 uri?
  • 发布您的 XSD 文件内容(如果可能,请简写)
  • 内容是要转换的数据字符串。这是一些HTML代码。我不明白为什么问题可能出在内容上,因为我已经在 xsltcake.com 上测试了我的转换,并且它适用于此内容。
  • 我尝试使用像“
    ”这样的内容字符串,并且抛出了相同的异常。有什么想法吗?
  • 问题出在 XSLT 中。您是否有行号(与错误一起报告)?你在 xslt 的那一行有什么代码?

标签: c# .net xslt illegal-characters


【解决方案1】:

如果您有一个带有 XML 输入的字符串,那么您需要使用 Transform 方法的重载,期望在该字符串上创建 XmlReaderXPathDocument(或更一般的 IXPathNavigable),例如这样做

string result;

using (StringReader sr = new StringReader(content))
{
  using (XmlReader xr = XmlReader.Create(sr))
  {
    using (StringWriter sw = new StringWriter())
    {

       xsltCompiled.Transform(xr, null, sw);

      result = sw.ToString();
    }
  }
}

将字符串作为第一个参数的 Transform 方法的重载需要文件路径或 URL,而不是 XML 输入。

【讨论】:

  • 非常感谢,抱歉这个帖子我确定第一个参数是 XML 输入。
  • 也适用于 Load(我在资源中加载了一个 xslt 存储)。
猜你喜欢
  • 2020-01-28
  • 1970-01-01
  • 2015-04-02
  • 2019-08-30
  • 1970-01-01
  • 2012-03-05
  • 2018-02-28
相关资源
最近更新 更多