XSL渲染换行  IE8和IE9之间有所不同

时间:2013-04-10 06:18:15

标签: xml google-chrome xslt internet-explorer-8 internet-explorer-9

我正在渲染XML Dom对象并面临一个非常严重的问题。一个问题是: 每当我得到"
""¬"时,我想打破这一行。

在IE8中:它正确呈现"&#10;"(新行)并将<br>标记放在找到"&#10;"的位置。但是在IE9中,它将每个单词分成新的行,无论它在哪里找到"&#10;"和一个空格(单个空格)

<xsl:template name="for-each-character">
        <xsl:param name="data"/>
        <xsl:variable name="lf"><xsl:text>&#10;</xsl:text></xsl:variable>
        <xsl:variable name="sr"><xsl:text>&#172;</xsl:text></xsl:variable>

        <xsl:if test="string-length($data) &gt; 0">
        <xsl:value-of select="substring($data,1,1)"/>
        <xsl:if test="substring($data,1,1) = $sr or substring($data,1,1) = $lf">
            <br/>
        </xsl:if>
            <xsl:call-template name="for-each-character">
                <xsl:with-param name="data" select="substring($data,2)"/>
            </xsl:call-template>
        </xsl:if>
</xsl:template>

IE8中的输出:

你好这是一个正在进行新行的文字。
在规范字符之后

IE9中的输出:

你好这个是......等等

预期输出应该是(在IE8和IE9(或&gt; = IE9)中:

你好这是一个正在进行新行的文字。
在规范字符之后

以上模板在Chrome和IE8中正常运行,但在IE9中会产生问题。

欢迎任何进一步的帮助。

1 个答案:

答案 0 :(得分:1)

解决这个问题的方法是在处理IE时使用&#xA;而不是&#10;(至少IE9及以下)。