【问题标题】:XSL Rendering of Line feed 
 is different between IE8 and IE9换行的 XSL 渲染 IE8和IE9的区别
【发布时间】:2013-04-01 20:27:49
【问题描述】:

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

在 IE8 中:它正确呈现 "
"(新行)并将 <br> 标签放在它找到 "
" 的位置。但在 IE9 中,它会在找到 "
" 和空格(单个空格)的地方将每个单词分成新行

<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 中会出现问题。

将不胜感激任何进一步的帮助。

【问题讨论】:

  • 实际源数据中的新行在哪里?您说“在 IE9 中,它在找到&amp;#10; 和空格(单个空格)的任何地方将每个单词都分成新行”您是说源数据中的每个单词之间都有一个新行吗?因为您拥有的 XSLT 将在有 &amp;#10; 的地方添加 &lt;br/&gt;s。
  • 没有。实际上数据将采用简单的文本格式。假设:这是一个示例文本(新行)这是一个新行。新行将包含标准 \r\n 组合。
  • @JLRishe:文本将从 Textarea 存储(像往常一样),如果按下回车键(段落),可能包含一对 \r\n。现在,当我从 XSL 渲染它时,&amp;#10; 无法被 IE9 正确识别,它会将每个单词的行拆分为新行(同样我说“分解句子的每个单词”)。意味着它将句子的每个单词与&amp;#10; 或''我可以解释一下吗?
  • 现在这个问题已经通过这个解决方案中的例子解决了link

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


【解决方案1】:

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

【讨论】:

  • 我发现的解决方案是我必须使用 而不是 对于 IE
猜你喜欢
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2011-06-07
  • 2015-02-17
  • 2011-08-24
  • 2012-06-05
  • 2012-03-27
相关资源
最近更新 更多