1

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

例如,如果我将以下内容转换为只得到黑猫:

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

4

1 回答 1

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>

<cat>发生这种情况是因为在您的 XML 中,<name>等等之间存在空白元素(例如换行符、回车符) 。这些由文本节点和输出的内置模板匹配。该<xsl:strip-space>元素会从您的输入中删除无关紧要的空格。然后,您需要indent="yes"<xsl:output>元素中设置以实现所需的缩进。

于 2013-10-08T10:57:23.393 回答