代码之家  ›  专栏  ›  技术社区  ›  Smile

换行符的XSL呈现
IE8和IE9不同

  •  1
  • Smile  · 技术社区  · 11 年前

    我正在渲染XMLDom对象,并面临一个非常严重的问题。一个问题是: 我想一有机会就突破底线 "
" "¬" .

    在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中(或>=IE9):

    您好,这是一条新线路上的短信
    规格后字符

    上面的模板在Chrome和IE8中正常工作,但在IE9中产生了问题。

    如有任何进一步的协助,我们将不胜感激。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Tim Post    11 年前

    解决方案是使用 &#xA; 而不是 &#10; 在处理IE时(至少IE9及以下)。