将改变我们生活的xml有关的这些应用,你知道多少?
xhtml 1.0 [w3c 推荐标准]基本上是对 html 4 的改写,使其成为结构良好的 xml。html 是一种 sgml 应用,当 xml 作为对 sgml 在 web 应用上的简化和规范化开发出来的时候,html(本身是 web 上的通用语言)就成为采用 xml 的首选目标。于是出现了 html 的一种变体,称为 xhtml。xhtml 研究的目标是一种更容易解析(因为 xml 的语法更加严格)的 html 语言。xhtml 很容易用现成的 xml 工具处理,力求更好地分离内容与表示。xhtml 是最古老的 xml 应用之一,有许多利益集团在不同的部分和版本中起过作用。我将尽力对其中的大部分加以概括。
与三种html 4 dtd——strict、transitional 和 frameset 对应,xhtml 1.0 定义了不同的 dtd 和名称空间。modularization of xhtml [w3c 推荐标准]提供了一个框架,把 xhtml 分解成单独的模块,作为不同的 dtd 定义。比如,用于定义列表的所有元素和属性组成一个模块,而和表示有关的元素类型则放在另一个模块中。这样,就可以通过增加、减少和修改通用的独立模块开发和重新定义 xhtml。沿着这条路线,第一步就是 xhtml basic [w3c 推荐标准],它定义了任何作为 xhtml 的语言都必须具有的最小 xhtml 模块集。xhtml basic 本身可以作为 web 客户的内容语言,如移动电话、pda、寻呼机和置顶盒。xhtml 1.1 [w3c 推荐标准]基本上就是使用模块框架分解的 xhtml 1.0 strict dtd。
xhtml 2.0 [开发中]是对 xhtml 的重写,没有考虑与 html 的向后兼容。这种想法差不多就是为 web 编写一种全新的内容语言,学习过去的经验而又不束缚于过去。其中大的变化有:
取消了 <br/>、 <img/> 以及其他认为过于面向表示的元素
取消 html 风格的表单,改为支持 xform(本系列文章前已述及)
取消 html 风格的链接改为 hlink(本系列文章中前已述及)
用 xml event 代替许多 &#106avascript 驱动的动态任务
用 xframe 代替 html 风格的框架
更重要的是,xhtml 2.0 做了许多扩展,增强了作者表达内容结构和含义的能力。打破向后兼容性引起了争议。一些评论者认为保持 (x)html 的名称只修改版本号会造成混乱。其他人则说这些修改非常必要,而 xhtml 实际上仍然是一种可扩展超本文标记语言,因此保留原来的名称非常合适。
xhtml 常常和其他嵌入格式一起使用,如 mathml、rdf、svg、smil 和 voicexml(后面都将予以介绍)。这种混合文档称为多模的或者非单体的。w3c、iso 以及其他组织正投入巨大的努力鼓励对这种文档的强力支持。
docbook 原来是一种流行的 sgml 格式,用于编纂书籍和文档,尤其是带有较多技术特性的文档。后来增加了一个 xml 版本,docbook xml v4.2 [oasis 委员会规范]是最新的成果。docbook 非常流行,得到了许多工具的支持,其中很多工具非常成熟。它作为避免混合表示问题与内容格式的一个范例而受人尊敬。最近,一些开发人员开始抱怨它从过去的版本继承了太多的负担,纷纷讨论(甚至包括它的主要开发者 norm walsh)为这种格式重新开发一种新的、不向后兼容的版本。
text encoding initiative (tei) 甚至比 docbook 更古老,这种文档格式在某种程度上与 docbook 的应用范围类似,区别在于它通常处理的是人文学科的文本而非技术文本。tei 本身不是一种 sgml 或 xml 应用,而是一组用于构造语言(dtd)的指导原则。最常用的 tei 变体是 tei lite [社区标准]。tei 以其复杂性驰名,这在一定程度上限制了它被大量采用,但是它得到了很好的维护,并在一些社区中有狂热的用户。
extensible stylesheet language formatting objects (xsl-fo) [w3c 推荐标准]是一种使用 xml 定义的表示语言。(注意,链接规范的标题是 "extensible stylesheet language (xsl)",但内容事实上只包括 xsl 的格式化对象方面。)xsl-fo 是一种 xml 格式,可被任何用户代理用于按照开发人员给定的精确规范呈现内容。它的角色类似于 web 用户界面中的 xhtml, 但是更加复杂,以便表达适用于打印形式的格式化细节。这些细节和级联样式表(css——本系列文章前已述及)中所规定的没有什么不同,但是在 xsl-fo 中,这些细节构成了这种标记语言本身的一个实例,而不是呈现单个标记的指令。
xsl-fo 常用作 xslt(本系列文章前已述及)的输出格式。事实上,最初 xslt 和 xsl-fo 是一个系统,称为 xsl,但是工作组明智地将这两个部分分成了两个不同的规范。有多种开放源代码的或者商业化的工具可以将 xsl-fo 转化成 tex、adobe 的 pdf 以及其他适于打印和排版的(非 xml)输出格式。这种应用模式使 xsl-fo 非常流行,但是 xsl-fo 一直希望成为 wysiwyg 工具或者类似工具的原生呈现格式,它的这种应用也开始受到推动。xsl-fo 1.1 [开发中]是这种语言的升级,增加了注释、索引、书签之类的特性,并增强了图像的处理能力。