如何将XML文件与XSLT 3.0文件关联?附示例代码
如何关联XML与XSL文件并解决空白页面问题
一、正确的关联方式
你提到的<?xml-stylesheet?>指令是完全正确的关联方法,只需注意格式和路径细节:
- 将指令放在XML文件的最开头(若有XML声明,则紧跟其后)
- 确保
href路径指向正确的XSL文件(同目录下直接写文件名,子目录用相对路径如./xsl/xxx.xsl)
示例关联后的XML文件开头:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="your-stylesheet.xsl"?> <PERSONAE PLAY="OTHELLO"> <!-- 你的XML内容 --> </PERSONAE>
二、空白页面的原因及修正
你的XSL代码存在语法错误,导致浏览器无法解析,从而显示空白:
错误行:
<xsl:template match="PERSONA[count(tokenize(., ',') = 2]">
count()函数的括号未闭合,修正后应为:
<xsl:template match="PERSONA[count(tokenize(., ',')) = 2]">
另外,需注意浏览器对XSLT 3.0的支持有限(如Chrome仅部分支持)。若要在浏览器中直接运行,建议降级为兼容性更好的XSLT 1.0,改写相关语法:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:strip-space elements="PERSONAE"/> <xsl:template match="PERSONAE"> <html> <head> <title>The Cast of <xsl:value-of select="@PLAY"/></title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="TITLE"> <h1><xsl:value-of select="."/></h1> </xsl:template> <xsl:template match="PERSONA[contains(., ',')]"> <p><b><xsl:value-of select="substring-before(., ',')"/></b>: <xsl:value-of select="substring-after(., ',')"/></p> </xsl:template> <xsl:template match="PERSONA"> <p><b><xsl:value-of select="."/></b></p> </xsl:template> </xsl:stylesheet>
三、验证与排查
- 确认XML和XSL文件路径正确,文件名无特殊字符或空格(若有空格,
href需用引号包裹) - 修正语法错误后重新打开XML文件
- 若仍有问题,打开浏览器开发者工具(F12)查看控制台错误信息,定位具体问题
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

