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

时间:2023-03-09 05:37:07
javaweb学习总结八(xml约束DTD)

一:XML约束概念

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

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

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

二:常用的xml约束技术

1:DTD,document type definition

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

2:校验xml文件正当性

a:使用解析工具

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

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文件内编写。

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

a:在XML文件内编写DTD

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

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

b:外部引入DTD

<!DOCTYPE 书架 "books.dtd">

4:引用DTD约束

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

三:DTD约束语法细节

1:元素、属性、实体

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

2:元素定义

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

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

3:属性定义

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

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

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

4:常用的属性值类型

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

a:ENUMERATED,枚举

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

b:ID

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

c:ENTITY,实体

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

引用实体:

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

参数实体:

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

四:案例分析

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>