前言: 好记性不如烂笔头,对于零碎的知识最好可以记录和总结,方便以后查看。不然,总是从头学习,浪费时间。
一 XML是什么
XML(eXtensible Markup Language,可扩展的标记语言),主要用于保存数据。、
二、XML和HTML的异同点
相同点:都是标签;
不同点:xml无预定义标签,反之html有许多预定义标签 (注:html也可以自定义标签,点击查看如何定义);html用于显示信息,xml用于保存数据、传输数据等;
(了解内容)针对xml保存数据的作用,展开来说,有以下用途:
(1)java程序的配置描述文件
(2)用于保存程序产生的数据
(3)用于网络间数据传输(例如soap协议,作用应该是类型http的报文)
三 XML文档结构
1. 第一行必须是XML声明
说明XML文档的基本信息,包含版本号和字符集,如下所示:
<?xml version=1.0 encoding="UTF-8?>
version属性说明了xml的版本是1.0(值还可以是1.1,区别点击这里查看)
encoding属性说明了xml文档的编码。
2. 有且仅有一个根节点
3 标签书写规则同html
四、XML标签书写规则
- 合法的标签名
使用英文单词,单词之间用连字符“-”, - 适当的注释和缩进
- 合理使用属性
- 特殊字符与CDATA标签
有些字符的使用,如“<”、“>”等,会破坏文档结构,需要使用实体引用;
实体引用 | 对应符号 |
---|---|
< | < |
> | > |
& | & |
' | ’ 单引号 |
" | "双引号 |
如果有大量特殊字符,可以使用CDATA标签,表示标签中未纯文本数据,使用如下:
<![CDATA[
<h1> hello world</h1>
]]>
- 有序的子元素
五、XML语义约束
语义约束定义了XML中标签的“语义”,即可以出现哪些标签、标签有哪些属性、标签可以定义的子标签有哪些及子标签的数量、标签的内容是子标签还时文本等等。可以这样理解,html是官方预定义标签,而xml通过语义约束自定义标签。使得xml是有效的。
语义约束有两种,DTD和Schama
1. DTD语义约束
DTD(Document Type Definition 文档类型定义) 是一种简单易用的语义约束方式。其文件扩展名是.dtd。hr.dtd
<!ELEMENT hr (employee+)> 定义跟hr元素至少包含一个employee元素;
<!ELEMENT employee(name,age,salary,department)>
<!ATTLIST emplayee no CDATA">
<!ELEMENT name(#PCDATA)>
hr(empleyee) 包含一个employee元素
hr(employee+)包含一个或者多个,即至少一个
hr(employee*) 包含0个或者多个
hr(employee?)包含0个或者一个
XML文档中引用DTD文件的方式
本地文件,dtd位于本地
<DOCTYPE 根结点 SYSTEM “文件名,包含路径”>
hr.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!-- 人力资源管理系统-->
<hr>
<employee>
<name>Bob</name>
<age>18</age>
<salary>3000</salary>
<department>
<dname>dev</dname>
<address>WuHan</address>
</department>
</employee>
</hr>
本地DTD约束,可以从声明看出dtd文件也属于xml
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT hr (employee*)>
<!ELEMENT employee (name, age, salary, department)>
<!ATTLIST employee no CDATA "000">
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT department (dname, address)>
<!ELEMENT dname (#PCDATA)>
<!ELEMENT address (#PCDATA)>