使用XSLT編譯轉換時我無法完全獲得輸出到格式,它總是會刪除所有空格,並且不是人類可讀形式。XSLTCompiled轉換不遵守文本文件的XSLT格式化
但是如果我運行相同的通過Visual Studio XSLT轉換調試輸出整齊indented.Here是我的代碼是什麼樣子:
XDocument xDoc = XDocument.Load(_xmlFilePath, LoadOptions.PreserveWhitespace);
var xslDoc = new XmlDocument();
xslDoc.Load(_xsltFilePath);
xslDoc.PreserveWhitespace = true;
using (Stream outputFile = File.Create(_outputFileName))
{
XsltArgumentList xsltParameter = null;
StringReader tr = new StringReader(xslDoc.OuterXml);
XmlReader xr = new XmlTextReader(tr);
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings setting = new XsltSettings();
setting.EnableScript = true;
transform.Load(xr, setting, new XmlUrlResolver());
transform.Transform(xDoc.CreateReader(), xsltParameter, outputFile);
}
變換將創建一個文本文件,什麼是Visual Studio的XSLT調試器做的不同,它保留輸出格式?
我已經採取了看看這個鏈接:XSLT Transform not indenting properly
這並不適用於我,因爲我輸出的文本。我應該使用Stream以外的東西嗎?
我的樣品XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<xsl:text>{Start:</xsl:text>
<xsl:text disable-output-escaping="yes">
</xsl:text>
<xsl:value-of select="Child1"/>
<xsl:text disable-output-escaping="yes">
</xsl:text>
<xsl:value-of select="Child2"/>
<xsl:text disable-output-escaping="yes">
</xsl:text>
<xsl:text>End:}</xsl:text>
</xsl:template>
<?xml version="1.0" encoding="utf-8"?>
<root>
<Child1>Value1</Child1>
<Child2>value2</Child2>
</root>
預期輸出:
{Start:
Value1
value2
End:}
輸出用XSLT變換編譯: {Start:Value1value2End:}
Visual Studio XSLT調試器爲我提供了預期的輸出格式,但XSLT編譯變換會去除所有空格和新行。
請更清楚地陳述你的問題。請準確解釋您現在得到的輸出結果,以及您想要的輸出結果,包括每種輸出的實際示例?請提供[一個很好的,_minimal_,_complete_代碼示例](http://stackoverflow.com/help/mcve),清楚地說明您的問題。 – 2015-03-19 11:37:15
添加我的示例讓我知道如果您需要其他任何東西 – user3313541 2015-03-19 13:56:46
當您使用' '作爲線端時會發生什麼? Windows使用CR/LF作爲線端,而不僅僅是一個CR。有些應用程序可能只接受一個CR或者只接受一個LF。 – 2015-03-19 14:05:50