Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何格式化/缩进XSL转换的输出_Xml_Serialization_Xslt_Pretty Print - Fatal编程技术网

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

Xml 如何格式化/缩进XSL转换的输出,xml,serialization,xslt,pretty-print,Xml,Serialization,Xslt,Pretty Print,我试图输出一段html代码。但我需要很好的印刷/缩进。 没有使用和#xa和 我使用了下面的一行,没有任何结果 <xsl:output method="html" indent="yes"/> 有人知道格式化(至少缩进)XSLT输出的方法吗?如果希望XSLT处理器应用xsl:output指令,请不要创建自己的XmlTextWriter。而是直接写入文件或按如下方式创建XmlWriter: using (XmlWriter result = XmlWriter.Create(wr

我试图输出一段html代码。但我需要很好的印刷/缩进。 没有使用
和#xa
	

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

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

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

如果希望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);
        }
}

除了

一个好地方是


您可能还想看看

@conqenator的代码:如果您不想使用序列化参数
xsl:output/@indent
(可能是因为它与MSXSL不一样)并且不想手动执行,那么在XSLT范围内就没有解决方案,但由于您设置了此类限制。您需要提供更多信息,以便我们理解为什么indent=“yes”不适用于您。那么,哪一个是XSLT处理器,如何准确地运行转换,转换成什么(例如文件?),如何看待转换结果?@Alejandro:我已经准备好并使用了
xsl:output
。就这样,它对我来说根本没有结果。@Alejandro:我添加了调用转换的代码。好问题,+1。有关XSLT打印资源的链接,请参见我的答案。+1是正确答案,除了缺少解释外:转换正确序列化了输出结果,但默认情况下XmlWriter类仅剥离空白文本节点;您需要通过XmlWriter类的一个参数来关闭此行为。谢谢!我绞尽脑汁想弄明白为什么输出没有缩进,这就解决了它。OP说输出序列化参数不能与他的XSLT处理器一起工作,也不想使用手动标识。我在发布这个问题时真的很纳闷(希望你在场):)是的,几天前我已经下载了Xpath可视化工具。谢谢你的链接。@Alejandro:这在很多情况下都可能是个问题。漂亮打印的可靠方法,特别是当转换要使用不同的XSLT处理器运行时,不是依赖缩进参数,而是DIY
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);
        }
}