第3章 DTD详解
上一章已经介绍了XML文档的基本文档规则,如果只是按那些基本的文档规则来编写XML文档,那该XML文档将仅仅是格式良好的XML文档,不能算有效的XML文档。如果希望一份XML文档成为有效的XML文档,则必须为其定义语义约束。语义约束可以规定XML文档中允许出现哪些元素,各元素之间的父子关系,以及每个元素内部可以出现哪些子元素、可以支持哪些属性等。如果提供更先进的语义约束,还可约束XML文档内各元素和各属性的数据类型等。
目前有两种为XML文档定义语义约束的方式,一种是采用DTD作为语义约束,另一种是采用XML Schema作为语义约束。DTD语义约束简单易用,但功能相对较弱,而XML Schema语义约束采用XML文档定义,支持更详细的约束规则,功能更加强大,但使用起来也相对较复杂。
早期绝大部分XML文档都会考虑使用DTD来定义语义约束,比如Servlet 2.3规范、Spring 1.x和Hibernate等。但随着XML Schema的广泛应用,现在越来越多的XML文档开始使用XML Schema作为语义约束了。
本章将全面介绍DTD语义约束的相关语法,下一章将重点介绍XML Schema语义约束的相关知识。
本章要点
XML语义约束的概念和作用
DTD和XML Schema语义约束
在XML文档中引入DTD的方式
DTD文档的基本结构
通过DTD验证XML文档的有效性ê在DTD中定义元素
定义混合内容的子元素
为元素定义有序的子元素
为元素定义无序的子元素
将多个子元素编成一组
为元素定义属性
DTD支持的常用属性类型
定义普通实体
定义参数实体
定义外部实体
定义符号
定义和使用未解析实体
使用XMLSpy执行DTD相关操作