首页 > 解决方案 > xsl:text 元素中的空格

问题描述

我有以下样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text" encoding="UTF-8"/>
  <xsl:template match="/">
    <xsl:text>1</xsl:text>
    <xsl:text>
    </xsl:text>
    <xsl:text>2</xsl:text>
</xsl:template>
</xsl:stylesheet>

当使用 Saxon 9.8 运行它时,我得到以下结果:

1
        2

当使用 MSXML 6.0 运行它时,空格被剥离,我得到:

1 2

什么是正确的行为?这里的空格应该被剥离吗?

标签: xsltxslt-1.0

解决方案


正确的行为就像您从撒克逊人看到的那样。

这里有一些历史,我不记得完整的细节,但是 MSXML 有一个讨厌的习惯,即在解析器本身中去除空白文本节点。如果 XML 解析器去除了空白文本节点,那么它们永远不会到达 XSLT 处理器,因此这是否符合所有 XSLT 规则没有区别。

我很确定 MSXML 中有控制这种行为的选项,因此请准确检查您是如何调用 MSXML 解析器的,并在必要时更改选项。


推荐阅读