加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

哪种方法可以更好地删除XML中的冗余空格[strip-space或indent =

发布时间:2020-12-16 07:46:59 所属栏目:百科 来源:网络整理
导读:我想在一行[在记事本或其他简单的文本编辑器中查看]打印我的输出xml,以便删除我的xml文件中的冗余空格.那么哪个更好的方法呢? 我认为有两种选择, 1)使用 xsl:output method="xml" indent="no"/ 2)或使用 xsl:strip-space elements="*"/ 哪个更有效率,为什么
我想在一行[在记事本或其他简单的文本编辑器中查看]打印我的输出xml,以便删除我的xml文件中的冗余空格.那么哪个更好的方法呢?

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

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

2)或使用

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

哪个更有效率,为什么?
有人建议我使用indent =“no”,

我认为条形空间是最合适的,但由于其他人给出的建议而不确定.

为了更详细说明,让我举一个例子:
输入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处理器不要执行自己的“漂亮打印”.但是,源XML文档中仅包含空格的节点仍会复制到输出中,结果文档看起来仍然是缩进的(因为源文档是缩进的).

现在,作为最后一步,添加< xsl:strip-space elements =“*”/>.您已指定两种方法来阻止输出中仅限空白的节点.怎么了? XSLT处理器根本不处理只有空格的节点,并且它不会缩进输出 – 您可以获得所需的单行密集输出.

最后,进行回归,更改< xsl:output indent =“no”/> to< 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:文本>

< / XSL:文本>

输出将包含此缩进.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读