使用XSLT的“路径中的非法字符”

时间:2012-08-08 09:31:36

标签: c# .net xslt illegal-characters

当我调用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消息,我的内容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>

1 个答案:

答案 0 :(得分:9)

如果您有一个包含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输入。