如何格式化/缩进XSL转换的输出

时间:2010-11-29 12:38:10

标签: xml serialization xslt pretty-print

我正在尝试输出一段html代码。但我需要它是漂亮的印刷/缩进。 有没有办法在不使用<xsl:text>&#xa;</xsl:text><xsl:text>&#9;</xsl:text>

的情况下执行此操作

我使用了以下行而没有任何结果。

<xsl:output method="html" indent="yes"/>

Follwoing是c#代码;

    XslCompiledTransform XSLT = new XslCompiledTransform();
    XSLT.Load(xslPath);

    using (XmlTextWriter writer = new XmlTextWriter(writePath, null))
    {
        if (isTopLevel)
        {
            XSLT.Transform(XMLDocumentForCurrentUser, writer);
        }
        else
        {
            XsltArgumentList xslArg = new XsltArgumentList();
            xslArg.AddParam("MenuIndex", "", menuIndex);
            XSLT.Transform(XMLDocumentForCurrentUser, xslArg, writer);
        }
    }
 // I write the output to file  
//All this works fine, only now I need the HTML to be readable (in the browser's view source or any notepad)

有人知道格式化(至少缩进)XSLT输出的方法吗?

2 个答案:

答案 0 :(得分:7)

如果希望XSLT处理器应用xsl:output指令,请不要创建自己的XmlTextWriter。而是直接写入文件或创建XmlWriter,如下所示:

using (XmlWriter result = XmlWriter.Create(writePath, XSLT.OutputSettings))
{
        if (isTopLevel)
        {
            XSLT.Transform(XMLDocumentForCurrentUser, result);
        }
        else
        {
            XsltArgumentList xslArg = new XsltArgumentList();
            xslArg.AddParam("MenuIndex", "", menuIndex);
            XSLT.Transform(XMLDocumentForCurrentUser, xslArg, result);
        }
}

答案 1 :(得分:3)

<xsl:output indent="yes"/>之外,还有一些已知的漂亮打印方式。

一个好看的地方是 Dave Pawson's XSLT FAQ http://www.dpawson.co.uk/xsl/sect2/pretty.html

您可能也有兴趣查看 XPath Visualizer 的代码。