Share via


Balisage 2009标识技术会议(三)

第一天(8/11/2009),中午

关键词:赤脚大仙,XML,命名空间(Namespace)

“大家都能认出Liam Quin,因为他赤着脚。”会议主持人这样介绍上午最后一个上台的演讲者。

我是几年前在德国海德堡的W3C印刷研讨会[1]上第一次认识Liam的,如果没有记错的话,当时他也光着脚走来走去,可见他多么会为他自己的私人技术咨询公司(Barefoot Computing)做广告(笑话而已)。之后我们只见过一次,而大部分时间就在每周一次的W3C XSL-FO工作组的例行电话会议上讨论交流。

Liam自从2001年起就全职为W3C工作[2],参加包括XML和XSL在内的很多技术标准的制定,我低头读了一下他讲座的标题“自动XML命名空间”(Automatic XML Namespaces)[3],不由暗地思量这又是什么新的idea呢?因为一直以来,业界对XML的命名空间就颇存争议,觉得它的本意是好的,但是现实状况表明对XML的使用者和对XML应用程序的开发者来讲,命名空间的使用和实现过于复杂。Liam在开始一段的演讲中也谈及在一个XML文件中使用多个命名空间的几个主要的困难:

  1. 需要记住一些冗长的URI[4],用户往往在拷贝、粘贴或是手工输入时发生错误,导致命名空间无法正确识别。
  2. 需要每个XML的使用者记住哪个XML的元素(Element)或属性(Attribute)属于哪个地址空间。但其实这样的记忆往往不必要。
  3. 在XSLT和XQuery的XPath处理中,花费太多时间来进行地址空间的比对,不够有效。

针对这些问题,Liam提出好的解决方案应具备以下几个条件:

  1. 无偿提供,解决方案应该是免费的
  2. 无偿实现,解决方案没有专利的束缚
  3. 使复杂的生活变简单(Makes life simpler)
  4. 易于开发者实现
  5. 与当前的万维网标准兼容
  6. 给XML的从业人员带来明显的益处

在考量了几个现有解决方案的优缺点以后,Liam最后提出了他自己的方案,即使用一个命名空间的文件来唯一标识一个元素或属性的命名空间。需要了解更对内容的读者可以在下面第三个参考文档链接中找到详细的说明。

这样的设计的确解决了现存的问题,但是我还是存有疑问:第一、这个设计和XML Schema[5]有没有重复?第二、这会不会造成一些注明命名空间的网上资源文件被过于频繁地索取,从而造成服务器的过载?有机会我会问Liam这两个问题。

网络参考文档:

  1. https://www.w3c.de/Events/2006/PrintSymposium_en.html
  2. https://www.holoweb.net/~liam/cv/
  3. Quin, Liam R. E. “Automatic XML Namespaces.” Presented at Balisage: The Markup Conference 2009, Montréal, Canada, August 11 - 14, 2009. In Proceedings of Balisage: The Markup Conference 2009. Balisage Series on Markup Technologies, vol. 3 (2009). doi:10.4242/BalisageVol3.Quin01. (https://www.balisage.net/Proceedings/vol3/print/Quin01/BalisageVol3-Quin01.html)
  4. https://labs.apache.org/webarch/uri/rfc/rfc3986.html
  5. https://www.w3.org/XML/Schema