为何浏览器不获取含多个查询参数的XSLT样式表?
为什么XML处理指令中XSLT的href带多个查询参数时浏览器不加载样式表?
问题根源
XML语法里,&是特殊字符,专门用于定义实体引用(比如&对应普通的&符号)。当你在xml-stylesheet处理指令的href属性里直接写style.xsl?foo=1&bar=2时,XML解析器会把&bar当成一个未定义的实体,触发解析错误。浏览器遇到这种无效的处理指令,会直接忽略它,自然不会发起样式表的请求。
解决方法
把href里的&转义为XML标准实体&,修改后的处理指令如下:
<?xml-stylesheet href="style.xsl?foo=1&bar=2" type="text/xsl"?>
这样XML解析器能正确识别查询参数的分隔符,浏览器就会正常请求并加载样式表了。
补充说明
单个查询参数时没有问题,是因为不需要用到&,也就不会触发实体解析错误。这个问题和服务器、浏览器类型无关,是XML语法的硬性规则导致的。
内容的提问来源于stack exchange,提问作者David A. Ventimiglia
相关产品推荐
相关产品推荐

