什么xml使用约束? 使用约束xml文档 --- 元素内容格式更加规范
如果企业中xml没有使用约束 ------ 通过程序生成xml和解析xml时,不使用约束,代码更加简单
DTD
1、编写数据xml --- books.xml
<?xml version="1.0" encoding="UTF-8"?> <books> <book> <name>java高效编程</name> <price>85</price> </book> </books>
2、编写dtd文件
* 为文档每一个元素(不同名称) <!ELEMENT
语法 <!ELEMENT 元素名称 子元素>
元素内部文本 #PCDATA
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT books (book)> <!ELEMENT book (name,price)> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)>
3、将xml文件与dtd文件关联起来
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE books SYSTEM "books.dtd"> <books> <book> <name>java高效编程</name> <price>85</price> </book> </books>
DTD与xml关联三种方式
1、内部DTD ----- 语法 <!DOCTYPE 根元素 []>
2、外部DTD (引用本地DTD) ----- 语法 <!DOCTYPE 根元素 SYSTEM "本地DTD文件位置" >
3、公共DTD (引用网络上DTD) <!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
* 公共DTD 使用 名称 W3C规范官方组织规定的
元素(ELEMENT)定义
* 内容特点符合含义
() 子元素、分组
, 代表子元素顺序
+ * ? ---- 正则表达式 + 1到多个 、* 任意个(0到多个)、 ? 0或者1个
| 多选一
特殊元素内容:文本类型内容 #PCDATA 子元素内容如果为空 EMPTY
属性(ATTLIST)定义
语法:<!ATTLIST 元素名称 属性列表 >
属性列表:
属性名称 类型 约束
属性名称 类型 约束
属性名称 类型 约束
属性名称 类型 约束
属性类型
1、CDATA 文本类型属性
2、(值1|值2|值3 ) 三个值选一个
3、ID 表示属性值唯一
约束
1、#REQUIERD 属性必须
2、#IMPLIED 属性可选
3、fixed value 属性值固定
4、default 默认值
实体(ENTITY)定义
对于xml数据内容重复,可以抽取实体
语法:<!ENTITY 实体名称 "实体内容" >
<?xml version="1.0" encoding="UTF-8"?> <!-- 使用内部DTD约束XML [] 内部编写DTD内容--> <!DOCTYPE books [ <!ELEMENT books (book+)> <!ELEMENT book (name,(number|price),publish)> <!ELEMENT name (#PCDATA)> <!ELEMENT price EMPTY> <!--ID属性 不能以数字开始 --> <!--ID 必须且唯一--> <!--author 金庸古龙二选一,默认金庸--> <!ATTLIST book bid ID #REQUIRED author (金庸|古龙) "金庸" > <!ELEMENT publish (#PCDATA) > <!-- 将公共的重复内容 提取实体--> <!ENTITY itcast "传智播客 JavaEE" > ]> <books> <book bid="b100" author="古龙"> <name>java</name> <price /> <publish>&itcast;</publish> </book> <book bid="b200"> <name>java</name> <price /> <publish>&itcast;</publish> </book> </books>
运行结果: