XML是Extensible Markup Language的缩写,它是一一种类似于HTML的标记语言,称为可扩展标记语言。所谓可扩展,指的是用户可以按照XML规则自定义标记。
HTTP是HyperText Transfer Protocol的缩写,即超
文本传输协议。它是一种请求/响应式的协议,客户端在与
服务器端建立连接后,就可以向服务器端发送请求,这种
请求破称作HTTP请求,服务器端接收到请求后会做出响
应,称为HTTP响应,客户端与服务器端在HTTP下的交互过程
DTD约束是早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD文件。
在一个DTD文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义以及实体符号的定义
DTD 语法在编写 XML 文档时,需要掌握 XML 语法。同理,在编写 DTD 文档时,也需要遵循一定的语法。DTD 的结构一般由元素类型定义、属性定义、实体定义、记号(Notation)定义等构成一个典型的文档类型定义会把将来要创建的 XML 文档的元素结构、属性类型、实体引用等预先进行定义。接下来,针对 DTD 结构中所涉及的语法进行详细讲解。(1)元素定义元素是 XML 文档的基本组成部分,在 DTD 定义中,每一条<IELEMENT…>语句用于定义-个元素,其基本的语法格式如下所示。<!ELEMENT 元素名称元素内容>在上面元素的定义格式中,包含了“元素名称”和“元素内容”。其中,“元素名称”是自定义的名称,它用于定义被约束 XML 文档中的元素;“元素内容”是对元素包含内容的声明,包括数据类型和符号两部分,它共有 5 种内容形式,具体如下。1 )#PCDATA:表示元素中嵌套的内容是普通文本字符串,其中,关键字 PCDATA 是 ParsedCharacter Data 的简写。例如,<!ELEMENT 书名(#PCDATA)>表示书名所嵌套的内容是字衔串类型。2)子元素:说明元素包含的元素。通常用一对圆括号()将元素中要嵌套的一组子元素括起来例如,<!ELEMENT 书(书名,作者,售价)>表示元素书中要嵌套书名、作者、售价等子元素。3)混合内容:表示元素既可以包含字符数据,也可以包含子元素。混合内容必须被定义看个或多个,例如,<IELEMENT 书(#PCDATAI书名)*>表示书中嵌套的子元素书名包含零个乳多个,并且书名是字符串文本格式。4)EMPTY:表示该元素既不包含字符数据,也不包含子元素,是一个空元素。如果在文科中元素本身已经表明了明确的含义,就可以在 DTD 中用关键字 EMPTY 表明空元素。例如,,其中,br是一个没有内容的空元素。5)ANY;表示该元素可以包含任何的字符数据和子元素。例如,<IELEMENT 联系人 ANYh表示联系人可以包含任何形式的内容。但在实际开发中,应该尽量避免使用 ANY,因为除了机元素外,其他使用 ANY 的元素都将失去 DTD 对 XML 文档的约束效果。需要注意的是,在定义元素时,元素内容中可以包含一些符号,不同的符号具有不同的作用
<?xml version="1.0" encoding="UTF-8"?>
<中国>
<河北>
<城市>张家口</城市>
<城市>石家庄</城市>
</河北>
<山西>
<城市>太原</城市>
<城市>大同</城市>
</山西>
</中国>
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!-- 外部引入DTD -->
<!DOCTYPE 书架 SYSTEM "book.dtd">
<!-- 内部引入DTD
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
]>
-->
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>58.00元</售价>
</书>
<书>
<书名>EJB3.0入门经典</书名>
<作者>黎活明</作者>
<售价>39.00元</售价>
</书>
</书架>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 购物篮 [
<!ELEMENT 购物篮 ANY>
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 品种 (鸡肉|牛肉|猪肉|鱼肉) "鸡肉">
]>
<购物篮>
<肉 品种="鱼肉"/>
<肉 品种="牛肉"/>
<肉/>
</购物篮>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE 联系人列表[
<!ELEMENT 联系人列表 ANY>
<!ELEMENT 联系人 (姓名,EMAIL)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ATTLIST 联系人 编号 ID #REQUIRED>
]>
<联系人列表>
<联系人 编号="id1">
<姓名>张三</姓名>
<EMAIL>zhang@itcast.cn</EMAIL>
</联系人>
<联系人 编号="id2">
<姓名>李四</姓名>
<EMAIL>li@itcast.cn</EMAIL>
</联系人>
</联系人列表>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE 联系人列表[
<!ELEMENT 联系人列表 ANY>
<!ELEMENT 联系人 (姓名,EMAIL)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ATTLIST 联系人
编号 ID #REQUIRED
上司 IDREF #IMPLIED>
]>
<联系人列表>
<联系人 编号="id1">
<姓名>张三</姓名>
<EMAIL>zhang@itcast.org</EMAIL>
</联系人>
<联系人 编号="id2" 上司="id1">
<姓名>李四</姓名>
<EMAIL>li@itcast.org</EMAIL>
</联系人>
</联系人列表>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library[
<!ELEMENT libarary (books,records)>
<!ELEMENT books (book+)>
<!ELEMENT book (title)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT records (item+)>
<!ELEMENT item (data,person)>
<!ELEMENT data (#PCDATA)>
<!ELEMENT person EMPTY>
<!ATTLIST book bookid ID #REQUIRED>
<!ATTLIST person name CDATA #REQUIRED>
<!ATTLIST person borrowed IDREFS #REQUIRED>
]>
<library>
<books>
<book bookid="b0101">
<title>Java就业培训教材</title>
</book>
<book bookid="b0102">
<title>Java Web开发内幕 </title>
</book>
<book bookid="b0103">
<title>Java开发宝典</title>
</book>
</books>
<records>
<item>
<data>2013-03-13</data>
<person name="张三" borrowed="b0101 b0103" />
</item>
<item>
<data>2013-05-23</data>
<person name="李四" borrowed="b0101 b0102 b0103" />
</item>
</records>
</library>
在这里插入代码片