Chrome与Firefox中XSLT渲染<br>数量不一致,哪种显示合规?
内嵌XSLT的XML渲染差异合规性分析
问题中的XML代码
<?xml-stylesheet type="text/xml" href="#style1"?> <!DOCTYPE message [ <!ATTLIST xsl:stylesheet id ID #REQUIRED> ]> <message> <xsl:stylesheet id="style1" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="html"/> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <body> line 1 <br/> line 2 </body> </html> </xsl:template> </xsl:stylesheet> </message>
问题描述
该XML语法合规,但Chrome渲染后DOM中会出现两个<br>标签,Firefox仅显示一个<br>标签,需判断哪种行为符合规范。
合规性分析
根据XSLT 1.0规范,当output method设为html时,处理器需严格按照模板定义输出元素:
- 模板内仅明确声明了一个
<br/>元素,符合规范的输出HTML中应仅包含一个<br>标签。 - Chrome出现两个
<br>的情况,属于其内置XSLT处理器对模板中空白文本节点(换行、空格)的错误转换,违反了XSLT对元素输出的精确性要求。
结论
Firefox的显示结果符合规范。
内容的提问来源于stack exchange,提问作者hbghlyj
相关产品推荐
相关产品推荐

