在xml文件内编写DTD: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
]>
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
...
</书架>
<!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">
例如: <!DOCTYPE 书架 SYSTEM “book.dtd”>。在xml文件中手写一下。
<!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 元素名称 元素类型>
<!ELEMENT 书架 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>
+: 一次或多次 (书+)
?: 0次或一次 (书?)
*: 0次或多次 (书*)
<!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>
属性定义:
<!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
……
>
<!ATTLIST 商品
类别 CDATA #REQUIRED
颜色 CDATA #IMPLIED
>
<商品 类别="服装" 颜色="黄色">…</商品>
<商品 类别="服装">…</商品>
直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。
举例:
<!ATTLIST页面作者 姓名 CDATA #IMPLIED 年龄 CDATA #IMPLIED 联系信息 CDATA #REQUIRED 网站职务 CDATA #FIXED "页面作者" 个人爱好 CDATA "上网" >
常用属性值类型:
<?xml version = "1.0" encoding="GB2312" standalone="yes"?>
<!DOCTYPE 购物篮 [
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">
]>
<购物篮>
<肉 品种="鱼肉"/>
<肉 品种="牛肉"/>
<肉/>
</购物篮>
属性值类型ID :
&实体名称;
<!ENTITY copyright “I am a programmer"> …… ©right;
参数实体:
<!ENTITY % 实体名称 "实体内容" >
%实体名称;
<!ENTITY % TAG_NAMES "姓名 | EMAIL | 电话 | 地址"> <!ELEMENT 个人信息 (%TAG_NAMES; | 生日)> <!ELEMENT 客户信息 (%TAG_NAMES; | 公司名)>
<!ENTITY % common.attributes " id ID #IMPLIED account CDATA #REQUIRED " > ... <!ATTLIST purchaseOrder %common.attributes;> <!ATTLIST item %common.attributes;>