MSXML XHTML DTDs——使互联网更美好

微软发布MSXML组件更新,改进XHTML资源解析过程中的DTD处理方式,避免因频繁访问W3C服务器导致的问题,如服务中断、维护负担加重及用户体验下降等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻译自Marcelo Lopez Ruiz的博客文章,点击这里阅读英文原文。

微软刚刚发布了一个新的Windows升级包以改善MSXML组件解析XHTML时对W3C服务器的访问。Windows Update自动更新服务应该已经向你推送了这个升级包,不过你也可以通过以下网页手动下载适合你的版本:

这个升级包究竟是干什么的呢?让我们来看看这么一个场景:网页通过AJAX访问远程主机上的XHTML资源,把内容读入XML文档,然后获取部分信息或者把信息追加到当前网页中。很常见的场景,对不对?

问题是,当你通过MSXML读取XHTML的时候,如果没有关闭DTD处理,那么XHTML中的DOCTYPE声明会指引MSXML读取XHTML DTD以便使用 之类的实体。可以想象,当许多人访问那些使用AJAX的热门网站时,会对DTD服务器产生多少的访问量。一旦DTD服务器过载而不再响应服务的时候,便会发生各种各样的问题,比如:网站由于无法访问资源而导致服务中断、W3C承担更多的维护工作、用户由于诡异的脚本错误而无法正常访问网站,等等。

这个升级包就是为了解决这个问题而发布的。升级以后的MSXML组件将那些XHTML DTD保存起来,当需要的时候直接返回保存起来的版本,以避免对W3C服务器的访问。这些被保存起来的XHTML DTD已经稳定发布好多年了,新的实体将会在其他的URL中发布,所以你不必担心DTD的使用会受到影响。

尝试着运行以下脚本:

如果你没有安装最新的升级包,你或许会遇到如下错误提示:

You have error The server did not understand the request, or the request was invalid.
Error processing resource 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'.

不过,如果你安装了最新的升级包,你将会欣喜地发现XML被成功读取并解析。更进一步,如果使用Fiddler监视网络流量,你更会惊喜地发现访问没有产生任何网络流量!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值