javaweb学习总结八(xml约束DTD)

一:XML约束概念

xml约束:可以编写一个文档来约束xml文件的书写规范。

xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束。

二:常用的xml约束技术

1:DTD,document type definition

2:校验xml文件正当性

a:使用解析工具

b:使用ide工具,如:eclipse

books.html

 1 <?xml version="1.0" ?>
 2 <!DOCTYPE bookstore SYSTEM "book.dtd">
 3 <bookstore>
 4     <book>
 5         <name>Thinking in java</name>
 6         <author>Tom</author>
 7         <price>105.0</price>
 8     </book>
 9     <book>
10         <name>Thinking in c</name>
11         <author>Jack</author>
12         <price>85.0</price>
13     </book>
14 </bookstore>

books.dtd

1 <!ELEMENT bookstore(book+)>
2     <!ELEMENT book(name,author,price)>
3     <!ELEMENT name(#PCDATA)>
4     <!ELEMENT author(#PCDATA)>
5     <!ELEMENT price(#PCDATA)>

3:DTD约束有两种方式,一种作为单独的文件编写,也可以在XML文件内编写。

a:在XML文件内编写DTD

!DOCTYPE:定义约束  书架:根标签  

b:外部引入DTD

<!DOCTYPE 书架 "books.dtd">

4:引用DTD约束

三:DTD约束语法细节

1:元素、属性、实体

2:元素定义

3:属性定义

使用ATTLIST设置属性,#REQUIRED  为必须的,  IMPLIED  为可选的

4:常用的属性值类型

a:ENUMERATED,枚举

b:ID

c:ENTITY,实体

引用实体:

参数实体:

四:案例分析

1:dtd约束文件

 1 <!DOCTYPE CATALOG [
 2 
 3 <!ENTITY AUTHOR "John Doe">
 4 <!ENTITY COMPANY "JD Power Tools, Inc.">
 5 <!ENTITY EMAIL "jd@jd-tools.com">
 6 
 7 <!ELEMENT CATALOG (PRODUCT+)>
 8 
 9 <!ELEMENT PRODUCT
10 (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
11 <!ATTLIST PRODUCT
12 NAME CDATA #IMPLIED
13 CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
14 PARTNUM CDATA #IMPLIED
15 PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
16 INVENTORY (InStock|Backordered|Discontinued) "InStock">
17 
18 <!ELEMENT SPECIFICATIONS (#PCDATA)>
19 <!ATTLIST SPECIFICATIONS
20 WEIGHT CDATA #IMPLIED
21 POWER CDATA #IMPLIED>
22 
23 <!ELEMENT OPTIONS (#PCDATA)>
24 <!ATTLIST OPTIONS
25 FINISH (Metal|Polished|Matte) "Matte" 
26 ADAPTER (Included|Optional|NotApplicable) "Included"
27 CASE (HardShell|Soft|NotApplicable) "HardShell">
28 
29 <!ELEMENT PRICE (#PCDATA)>
30 <!ATTLIST PRICE
31 MSRP CDATA #IMPLIED
32 WHOLESALE CDATA #IMPLIED
33 STREET CDATA #IMPLIED
34 SHIPPING CDATA #IMPLIED>
35 
36 <!ELEMENT NOTES (#PCDATA)>
37 
38 ]>

2:根据dtd写的CATELOG.xml

1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE CATALOG SYSTEM "dtd/catelog.dtd">
3 <CATALOG>
4 <PRODUCT>
5         <SPECIFICATIONS>water</SPECIFICATIONS>
6         <PRICE>3.5</PRICE>
7     </PRODUCT>
8 </CATALOG>
原文地址:https://www.cnblogs.com/warrior4236/p/5724139.html