Java Web程序设计 —— XML基础(一)
先放上思维导图:

XML概述
什么是XML
- XML 指可扩展标记语言(EXtensible Markup Language)类似于HTML。所谓可扩展,指的是用户可以按照XML规则自定义标记。
用途
- 作为系统与系统之间传输数据的格式
- 作为项目的配置文件
- 保存有结构关系型的数据
例:
<?xml version="1.0" encoding="utf-8"?>
<china name="中国">
<province name="甘肃">
<city>兰州</city>
<city>天水</city>
</province>
<province name="海南">
<city>三亚</city>
<city>海口</city>
</province>
</china>
第1行代码是XML的文档声明(下面会详细讲解),<china> 和 </china> ,<provcince> 和 </province>,<city> 和 </city>都是用户自己创建的标记,它们称为元素,且必须成对出现。
在XML中通过元素的嵌套关系可以很准确的描述具有树状层次结构的复杂信息。
XML与HTML的比较
- HTML用来显示数据,XML为了传输和存储数据
- HTML不区分大小写,XML严格区分大小写
- HTML可以有多个根元素,XML有且只能有一个根元素(即上述代码中的
<china name="中国">) - HTML中空格自动过滤,XML中空格不会自动格删除
- HTML的标记是预定义的,XML中的标记可以随意扩展
XML语法
文档声明
语法格式
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
说明 :
- version属性表示XML的版本,最常用的XML版本是1.0
- encoding属性表示XML文档所使用的编码方式,默认情况下是UTF-8
- standalon属性表示这个文档是否是独立的文档,默认情况下属性值为no,表示依赖于外部文档
注意:该声明必须位于文档的第一行,且"<“和”?","?“和”>"之间不能有空格
元素定义
XML文档都是通过元素标记,由开始标记、属性、文本和结束标记组成。且标记可以嵌套。
例:
<province name="甘肃">
<city>兰州</city>
<city>天水</city>
</province>
属性定义
属性是对元素的进一步描述和说明。在一个元素中,可以有多个属性,并且每个属性都有自己的名称和取值
例如:<售价 单价="元">79</售价>
注释
XML注释和HTML注释写法基本一致
<!--注释信息-->
注:
XML的标记不能以数字或者“_”下划线开头。比如<1a>内容</1a>,<_a>内容</_a>
XML的标记不能以xml或者XML(大小写都不可以)等开头
XML的标记里不能包含空格等特殊符号。比如<a a>内容</a a>,<a:b>内容</a:b>
DTD约束
什么是约束
简单的来说,约束就是规定了XML文件中可以写什么,不可以写什么。如果标记随意写,在解析XML文件时,程序员就不清楚XML文件中的标记具体表示什么含义,所以用约束规范XML文件的书写。
什么是DTD
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可作为一个外部引用。
语法
<!DOCTYPE 根元素 [元素声明]>
例:
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
- 第1行中,使用 <!ELEMENT ...>定义一个元素,其中“书架”是元素名称,(书+)表示有很多书,“+”表示出现一次或多次
- 第2行中,“书”是元素名称,“(书名,作者,售价)”表示元素包含书名,作者,售价,且按顺序依次出现
- 第3-5行中,“书名”、“作者”、“售价”都是元素名称,“(#PCDATA)”表示元素中嵌套的内容是普通文本字符串
DTD的引入
在XML文档中引入外部DTD文件有以下方式
1.直接在XML文件中,引入DTD约束
例:
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
]>
2.外部引入方式:
<!DOCTYPE 根元素名称 SYSTEM "外部DTD文件的URI">
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "外部DTD文件的URI">
- 第1种用来引用本地的DTD文件
- 第2种用来引用公共DTD文件,其中"URI’指DTD文件的存放位置
DTD语法
元素定义
基本语法
<!ELEMENT 元素名称 元素内容>
“元素名称”是自定义的名称,它用于定义被约束XML文档中的元素
“元素内容”是对元素包含内容的声明,包括数据类型和符号两部分,它有如下几种形式:
- 普通的文本:#PCDATA
- 子元素:比如
<!ELEMENT 书 (书名,作者,售价)> - EMPTY:表示该元素既不含字符数据,也不包含子元素,比如
<!ELEMENT br EMPTY>,其中,br是一个没有内容的空元素 - ANY:代表任意内容,可以是普通文本,也可以是子元素,比如
<!ELEMENT 联系人 ANY>
注意,定义元素时,可以包含一些符号: - ?:表示该对象可以出现0次或1次
- *:表示该对象可以出现0次或多次
- +:表示该对象可以出现1次或多次
- |:表示在列出的对象中选择1个
- ,:表示对象必须按照指定的顺序出现
- ():用于给元素进行分组
属性定义
语法格式:
<!ATTLIST 元素名
属性名1 属性类型 设置说明
属性名2 属性类型 设置说明
......
>
属性类型:
- CDATA:最常见,表明属性类型是字符数据,与元素内容说明中的#PCDATA相同
- Enumerated(枚举类型):属性值必须是枚举列表中的一个
- ID:属性值必须是唯一的,并且属性值不能以数字开头。一个元素只能有一个ID类型的属性
- IDREF:属性值必须是ID属性的值
255

被折叠的 条评论
为什么被折叠?



