gpt4 book ai didi

xml - 在 XML [strip-space or indent ="no"] 中删除冗余空白的更好​​方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 01:46:46 25 4
gpt4 key购买 nike

我想在一行中打印我的输出 xml [当在记事本或其他简单的文本编辑器中查看时],以便删除我的 xml 文件中的冗余空白。那么,哪种方法更好呢??

我认为有两个选择,
1) 使用

  <xsl:output method="xml" indent="no"/>

2) 或使用

  <xsl:strip-space elements="*"/>

哪个更有效,为什么?
有些人建议我使用indent="no"

我认为 strip-space 最适合,但不确定,因为其他人给出了建议。

为了更详细地说明,让我举个例子:
输入 XML:

<root>
<node>
<child1/>
<child2/>
</node>
</root>

所需的输出是:

<root><node><child1/><child2/></node></root>

最佳答案

为了消除任何看起来像“缩进”的东西,可能有必要(这意味着在某些情况下您需要)使用两者 <xsl:strip-space> ``indent="no"`

举个最简单的例子:你有身份转换。如果不指定这两种方法中的任何一种,转换将从源 XML 文档中再现纯空白文本节点。也就是说,如果源 XML 文档是缩进的,转换也会产生缩进的结果。

现在,添加到这个转换 <xsl:output indent="no" /> . 这指示 XSLT 处理器不要执行它自己的“ pretty-print ”。但是,源 XML 文档中的纯空白节点仍然被复制到输出中,结果文档看起来仍然是缩进的(因为源文档是缩进的)。

现在,作为最后一步,添加 <xsl:strip-space elements="*"/> . 您已经指定了两种方法来防止输出中出现纯空白节点。发生什么了? XSLT 处理器根本不处理纯空白节点,并且它不会缩进输出——您将获得所需的单行密集输出。

最后做个回归,改<xsl:output indent="no" /><xsl:output indent="yes" /> . <xsl:strip-space elements="*"/>仍然存在,所以在输出中没有再现只有空白的节点。但是 XSLT 处理器服从 <xsl:output indent="yes" />指令并添加自己的纯空白文本节点。

因此,从四种可能的组合中,只指定两者 <xsl:strip-space elements="*"/><xsl:output indent="no" />保证不会由来自源 XML 文档或 XSLT 处理器计划的纯空白节点引起缩进。

即使是最后一种情况,当然也不能完全保证输出不会缩进——如果 XSLT 程序员有意放置缩进代码,例如

<xsl:text>

</xsl:text>

输出将包含此缩进。

关于xml - 在 XML [strip-space or indent ="no"] 中删除冗余空白的更好​​方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2341788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com