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

时间:2013-10-08 10:49:28

标签: xslt

当我运行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本身中控制,还是我正在使用的工具的“功能”?

1 个答案:

答案 0 :(得分:2)

这在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中,<cat><name>之间存在空白元素(例如换行符,回车符),依此类推。它们通过文本节点和输出的内置模板进行匹配。 <xsl:strip-space>元素从您的输入中删除无关紧要的空格。然后,您需要在indent="yes"元素中设置<xsl:output>以实现您想要的缩进。