一:XML约束概念
xml约束:可以编写一个文档来约束xml文件的书写规范。
xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束。
二:常用的xml约束技术
1:DTD,document type definition
2:校验xml文件正当性
a:使用解析工具
b:使用ide工具,如:eclipse
books.html
<?xml version="1.0" ?>
<!DOCTYPE bookstore SYSTEM "book.dtd">
<bookstore>
<book>
<name>Thinking in java</name>
<author>Tom</author>
<price>105.0</price>
</book>
<book>
<name>Thinking in c</name>
<author>Jack</author>
<price>85.0</price>
</book>
</bookstore>
books.dtd
<!ELEMENT bookstore(book+)>
<!ELEMENT book(name,author,price)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT author(#PCDATA)>
<!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约束文件
<!DOCTYPE CATALOG [ <!ENTITY AUTHOR "John Doe">
<!ENTITY COMPANY "JD Power Tools, Inc.">
<!ENTITY EMAIL "jd@jd-tools.com"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT
(SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
<!ATTLIST PRODUCT
NAME CDATA #IMPLIED
CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
PARTNUM CDATA #IMPLIED
PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)>
<!ATTLIST SPECIFICATIONS
WEIGHT CDATA #IMPLIED
POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)>
<!ATTLIST OPTIONS
FINISH (Metal|Polished|Matte) "Matte"
ADAPTER (Included|Optional|NotApplicable) "Included"
CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)>
<!ATTLIST PRICE
MSRP CDATA #IMPLIED
WHOLESALE CDATA #IMPLIED
STREET CDATA #IMPLIED
SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)> ]>
2:根据dtd写的CATELOG.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE CATALOG SYSTEM "dtd/catelog.dtd">
<CATALOG>
<PRODUCT>
<SPECIFICATIONS>water</SPECIFICATIONS>
<PRICE>3.5</PRICE>
</PRODUCT>
</CATALOG>