DTD文档---总格式:
<!DOCTYPE 根元素[
元素、属性、实体的定义
]>
元素的定义:
<!ELEMENT 元素名字 (原始类型)>
元素类型:
子元素类型:
#PCDATA:字符串
EMPTY:空元素 注意:没括号
ANY:表示任何字符数据或者定义的子元素类型
#PCDATA和ANY的区别:
ANY表示任何字符数据或者子元素类型 #PCDATA只能表示字符串
混合类型:(#PCDATA/子类型)
如:<!ELEMENT students (#PCDATA|student)*> *
就可以在根标记后 添加字符串 <students> aa
?:表示该元素可以出现0次或者1次
+:表示该元素可以出现1次或者多次
*:表示该元素可以任意次
,:表示顺序出现
():分组
|:表示两者选其一
没有任何符号修饰表示必须出现并且只能出现一次
<!--
DTD中属性的定义:
格式:
<!ATTLIST 属性所在的元素 属性的名字 属性的类型 默认值类型>
属性的类型:
ID:表示该元素唯一 类型为ID的属性 在文档中是唯一的
如果属性类型是ID 则不能以数字开头
CDATA:表示字符数据 (最常用)
枚举类型:将所有可以出现的情况列举出来 如:(男|女)
NMTOKEN:是CDATA一个子类 表示该属性的值只能包括:字母 数字 句号 _ 中间不能包括空格
默认值类型:
#REQUIRED 表示该属性必须出现
#IMPLIED 表示该属性可以出现
#FIXED 表示该属性的值是固定的 不能够改变
实体:
内部实体:
<!ENTITY 实体的名字 "实体中的内容">
引用实体方式: &实体名称
外部实体:
<!ENTITY 实体名称 SYSTEM "资源路径">
-->
DTD的属性:
我最喜欢的方式
下面的三个 XML 文档包含完全相同的信息:
第一个例子中使用了 date 属性:
<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第二个例子中使用了 date 元素:
<note>
<date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第三个例子中使用了扩展的 date 元素(这是我的最爱):
<note>
<date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>