2012-08-08 58 views
0

當我調用XslCompiledTransform類的Transform方法時,出現「路徑中的非法字符」異常。使用XSLT「路徑中的非法字符」

這裏是我的代碼:

// 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)); 

沒有任何*? 「<> |我的路,所以我不知道爲什麼我得到這個異常

關於到異常報文,還有我的內容var值與此異常右

編輯之間沒有連接:這是什麼?其中如果有XML輸入字符串上的在線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> 
+0

錯誤不是來自xsltPath/Load,而是來自Transform。你傳遞什麼內容?一條路徑?一個uri? – 2012-08-08 09:43:48

+0

發佈您的XSD文件內容(如果可能,簡而言之) – 2012-08-08 09:48:55

+0

內容是要變換的數據字符串。這裏是一些HTML代碼。我不明白爲什麼問題可能歸因於內容,因爲我已經在http://www.xsltcake.com上測試了我的轉換,並且它適用於此內容。 – bviale 2012-08-08 09:50:59

回答

7

作品內容,那麼你需要使用Transform方法的期望過載過該字符串創建XmlReaderXPathDocument(或更一般IXPathNavigable)所以d o例如

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輸入。

+0

非常感謝,對此線程抱歉我確信第一個參數是XML輸入。 – bviale 2012-08-08 11:37:04

+0

也適用於加載(我正在加載資源中的xslt存儲)。 – NGaida 2013-11-20 18:06:18

相關問題