Xslt 使用XSL转换XML文件会在未选择元素的位置留下空白

Xslt 使用XSL转换XML文件会在未选择元素的位置留下空白,xslt,Xslt,当我运行XSL来选择XML文件的某些元素时,我在生成的输出中得到了未选择元素的空白 e、 g.如果我将以下内容转化为只得到黑猫: <cats> <cat> <name>Steve</name> <color>black</color> </cat> <cat> <name>Tom</name> <color>tabby</color>

当我运行XSL来选择XML文件的某些元素时,我在生成的输出中得到了未选择元素的空白

e、 g.如果我将以下内容转化为只得到黑猫:

<cats>
 <cat>
  <name>Steve</name>
  <color>black</color>
 </cat>
 <cat>
  <name>Tom</name>
  <color>tabby</color>
 </cat>
 <cat>
  <name>Archibald</name>
  <color>black</color>
 </cat>
</cats>

史蒂夫
黑色
汤姆
斑猫
阿奇博尔德
黑色
我可能会这样:

<cats>
 <cat>
  <name>Steve</name>
  <color>black</color>
 </cat>




 <cat>
  <name>Archibald</name>
  <color>black</color>
 </cat>
</cats>

史蒂夫
黑色
阿奇博尔德
黑色

这在XSL本身中是可控的,还是我正在使用的工具的“功能”?

这在XSL中是可控的。您需要执行以下操作:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" indent="yes"/>
    <xsl:strip-space elements="*"/>

    ....

</xsl:stylesheet>

....
这是因为在XML中,
之间有空格元素(例如换行符、回车符),等等。通过文本节点和输出的内置模板匹配这些内容。
元素从输入中删除不重要的空白。然后需要在
元素中设置
indent=“yes”
,以实现所需的缩进