代码之家  ›  专栏  ›  技术社区  ›  Robin Maben

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

  •  5
  • Robin Maben  · 技术社区  · 14 年前

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

    我使用了下面的行,没有任何结果。

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

    以下是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 回复  |  直到 14 年前
        1
  •  7
  •   Martin Honnen    14 年前

    如果希望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);
            }
    }
    
        2
  •  3
  •   Dimitre Novatchev    14 年前

    此外,还有很多漂亮的印刷方法 <xsl:output indent="yes"/> .

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

    您也可能有兴趣查看 XPath Visualizer .