DTD约束
DTD约束既可以作为一个单独的文件编写、也可以在XML文件内编写
XML文件使用DOCTYPE声明语句来指明它所遵循的DTD文件
(xml与dtd区分大小写)
关联方式:(使用内部DTD、使用外部DTD、使用公共DTD)
内部DTD:将约束文档书写在XML内部
<!DOCTYPE 根元素 【。。。具体规范内容。。。】 >
在xml文件第二行开始如下写:
<! DOCTYPE books [
<!ELEMENT books (book+)>
<!ELEMENT book (#PCDATA)>
]>
外部关联形式:
格式:<!DOCTYPE 文档根节点 SYSTEM "DTD文件的URL">
例如:<DOCTYPE books SYSTEM "book.dtd">
公共DTD:
引用的文件是一个公共的问价
格式:<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
例如:<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
DTD约束语法细节
元素(ELEMENT)
元素定义
在DTD中出现的第一个元素为根元素
<!ELEMENT 元素名称 元素内容声明>
要点:包含符号和数据类型两部分
属性(ATTLIST)
ATT是attribute的缩写
LIST 是集合的意思
格式:<! ATTLIST 元素名称
属性名 属性类型 约束
属性名 属性类型 约束
。。。。等等一些其他属性
>
举例:
<! ATTLIST 商品
类别 CDATA #REQUIRED
颜色 CDATA #IMPLIED
...............
>
约束: ( 非空 ) (可以为空) (确定值“不可改变”)(默认值“可以更改”)
实体(ENTITY)
实体是变量
是自定义的转义字符,用于引用普通文本或特殊符号的快捷方式的变量
实体:内部实体和外部实体
内部实体:引用实体和参数实体
引用实体主要在xml文档中被应用
语法格式:<!ENTITY 实体名称 "实体内容" >
引用方式:
&实体名称;
举例:<!ENTITY copyright "I am a programmer">
©right;
参数实体被DTD文件自身使用
语法格式:<!ENTITY % 实体名称 "实体内容" >
引用方式:
%实体名称;
举例:
<!ENTITY % TAG_NAMES "姓名 | EMAIL | 电话 | 地址">
<!ELEMENT 个人信息 (%TAG_NAMES; | 生日)>
<!ELEMENT 客户信息 (%TAG_NAMES; | 公司名)>
外部实体:
语法格式:<!ENTITY 实体名称 SYSTEM "URI/URL">
引用方式:&实体名称; (封号不能少)
举例:
<!ENTITY info SYSTEM "part.xml">
&info;