XML关联XSL样式表无效求助:浏览器未渲染预期页面
XML关联XSL样式表不生效的问题解决
问题描述
每次创建关联对应XSL样式表的XML文件,网页都未应用该样式表。Firefox、Chrome、Microsoft Edge等主流浏览器均出现此问题:
- 预期显示:
Student List - 实际显示:
First Name Last Name
示例文件
XML文件
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="student.xsl" version="2.0"?> <class> <student> <firstname>First Name</firstname> <lastname>Last Name</lastname> </student> </class>
XSL文件
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>Student List</h2> </body> </html> </xsl:template> </xsl:stylesheet>
问题原因
主流浏览器仅支持XSLT 1.0,你在XML和XSL文件中都指定了version="2.0",导致浏览器无法识别并加载样式表,直接回退显示XML的纯文本内容。
解决步骤
修改XML文件的样式表指令:
移除version="2.0"属性,或改为version="1.0",修改后的代码:<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="student.xsl"?> <class> <student> <firstname>First Name</firstname> <lastname>Last Name</lastname> </student> </class>修改XSL文件的版本声明:
将xsl:stylesheet标签的version="2.0"改为version="1.0",修改后的代码:<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>Student List</h2> </body> </html> </xsl:template> </xsl:stylesheet>验证文件路径:
确保XML和XSL文件放在同一目录下,浏览器打开XML时能正常读取到XSL文件。
验证结果
修改后重新用浏览器打开XML文件,即可看到预期的Student List标题。
内容的提问来源于stack exchange,提问作者Mocking Bird
相关产品推荐
相关产品推荐

