【XML总结】—DTD、Schema

DTD与Schema

【XML总结】—DTD、Schema

DTD
  • 定义XML文件的结构
  • 为XML文件提供语法与规则
  • 内容既可以定义在XML文件中,也可以定义在XML文件外
  • 使用XML进行数据交换的行业或组织可定义自己的DTD
  • DTD对于XML是可选的内容

DTD元素
  • 在DTD中,元素声明语法:
<!ELEMENT 元素名称 类别>或者<!ELEMENT 元素名称(元素内容)>
例子:
<!ELEMENT书名 (#PCDATA)>
<!ELEMENT计算机书记 (书名,价格,简要介绍>

  • 空元素通过关键字EMPTY进行声明:
<!ELEMENT 元素名称 EMPTY >、
例子:
DTD中:<!ELEMENT br EMPTY>
  • 声明之出现一次的元素
<!ELEMENT 元素名称 (子元素名称)>
例子:<!ELEMENT 书籍列表(计算机书籍)>
  • 声明最少出现一次的元素
<!ELEMENT 元素名称 (子元素名称+)>
例子:<!ELEMENT 书籍列表(计算机书籍+)>
  • 声明出现零次或多次的元素
<!ELEMENT 元素名称 (子元素名称*)>
例子:<!ELEMENT 书籍列表(计算机书籍*)>
  • 声明出现零次或一次的元素
<!ELEMENT 元素名称 (子元素名称?)>
例子:<!ELEMENT 书籍列表(计算机书籍?)>
  • 声明混合型内容
<!ELEMENT 子元素名称 (#PCDATA|子元素名称 )*>
例子:<!ELEMENT 书籍列表(#PCDATA|计算机书籍*>

DTD属性
  • 在DTD中,属性通过ATTLIST进行声明
  • 语法
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
例子:
DTD文件中:
<!ATTLIST  payment tyoe CDATA "cash">

XML文件中:
<payment type="cash"/>
<payment/>

Schema
  • Schema也称:XML Schema Dedinition(XSD)
  • Schema描述XML文档的结构
  • Schema是基于XML的DTD替代者
  • 比DTD更强大

Schema与DTD的异同
  • Schema会在将来取代DTD

  • 更完善,功能更多

  • Schema基于XML编写,不必学习新的语言,可使用XML编辑,解析Schema文件

  • Schema支持数据类型

 DTD只能把内容类型定义为一个字符串,而XML Schema允许把内容类型定义为整形、浮点型、布尔型等等,而无须重定义。
  • Schema可针对需求进行扩展

  • 能捕获错误信息