xml
xml定义 来自百度百科
可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。
它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
1998年2月,W3C正式批准了可扩展标记语言的标准定义,可扩展标记语言可以对文档和数据进行结构化处理,从而能够在部门,客户,和供应商之间进行数据交换,实现动态内容生成,企业集成和应用开发。可扩展标记语言可以使我们能够更准确的搜索,更方便的传送软件组件,更好的描述一些事物。例如电子商务交易等。
一、什么是可扩展标记语言?
可扩展标记语言是一种很像超文本标记语言的标记语言。
它的设计宗旨是传输数据,而不是显示数据。
它的标签没有被预定义。您需要自行定义标签。
它被设计为具有自我描述性。
它是W3C的推荐标准。
二、可扩展标记语言和超文本标记语言之间的差异
它不是超文本标记语言的替代。
它是对超文本标记语言的补充。
它和超文本标记语言为不同的目的而设计:
它被设计用来传输和存储数据,其焦点是数据的内容。
超文本标记语言被设计用来显示数据,其焦点是数据的外观。
超文本标记语言旨在显示信息,而它旨在传输信息。
对它最好的描述是:它是独立于软件和硬件的信息传输工具。
3、可扩展标记语言是W3C的推荐标准
XML 于 1998 年 2 月 10 日成为 W3C 的推荐标准。
4、可扩展标记语言无所不在
目前,它在Web中起到的作用不会亚于一直作为Web基石的超文本标记语言。
XML 是各种应用程序之间进行数据传输的最常用的工具。
标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据
处理细节的电脑文字编码。当今广泛使用的标记语言是超文本标记语言(HyperText Markup Language,
HTML)和可扩展标记语言 (eXtensible Markup Language,XML)。标记语言广泛应用于网页和网
络应用程序。
1) 超文本标记语言 HTML(Hyper Text Markup Language)
? 写法格式: <a href="link.html">link</a>
? 关注数据的展示不用户体验
? 标记是固定的,丌可扩展(如 <a></a>表示超链接)
2) 可扩展的标记语言 XML(eXtensible Markup Language)
? 写法格式: 同 html 样式 <a>link</a>
? 仅关注数据本身
? 标记可扩展,可自定义
3) Xml 和 Html 语言由同一种父语言 SGML(Standard Generalized Markup Language,标准通
用标记语言)发展出来的两种语言。
4) 解析器
? 与用解析器(比如:XML SPY 与用于解析 XML 文件)
? 浏览器
? MyEclipse
5) W3C(World Wide Web Consortium)
? W3C: 开源的语言协会,万维网联盟(World Wide Web Consortium)
? HTML 和 XML 都是 W3C 制定的语言规则
? 官网:www.w3.org
? 学习网站:http://www.w3school.com.cn/
案例1: (错误演示)
语法规则:
1:
xml 的声明必须写在文件第 1 行
Encoding(字符集)属性可以省略,默认的字符集是 utf-8
常见错误
:
"?"和 xml 之间不能有空格
不要多写空格(Java 程序员的习惯)
标记
诸如 <书名></书名> 这样格式的被称为标记,标记成对出现
标记包括开始标记和结束标记
元素
元素(Element)
1) 元素: 元素包括标记和其中的内容
2) 根元素: 最外层的元素叫根元素
3) 叶子元素: 最里层的(没有子元素的)元素叫叶子元素
4)空元素:没有内容的元素叫空元素,比如<a></a>,可以简写为:<a />
5)元素必须遵循的语法规则
? 所有的标记都必须有结束
? 开始标记和结束标记必须成对出现
? 元素必须正确嵌套
<a><b>c</b></a> (正确)
<a><b>c</a></b> (错误)
? 标记的大小写敏感 Hello 和 hello 不是同一个标记
? 有且只能有一个根元素
. 实体引用(转义字符)
1) 小于号(<): less than --> <
2) 大于号(>): great than --> >
3) And 符号(&): &
4) 双引号(“): "
5) 单引号(‘): '
注意这些转义字符都是以&开头,以;结尾的
属性(定义在开始标记中的键值对)
1) 格式:属性="属性值"
2) 要求:
属性必须有值
属性值必须用引号引起来,单引号或双引号都可以,但必须一致
CDATA 类型的数据:特殊标签
1) 格式: < ! [ CDATA [ 文本内容 ] ] >
2) 特殊标签中的实体引用都被忽略,所有内容被当成一整块文本数据对待
1) 必须有唯一的根元素
2) xml 标记大小写敏感
3) 标记必须配对出现,有开始有结束
4) 元素必须被正确嵌套
5) 属性必须有值,值必须用引号引起来
6) 如果遵循所有的规则,称作格式良好的 xml 文件(well-formed)
早期属性文件描述数据的方式
url = jdbc:mysql://localhost:3306/wode
dbUser = root
dbPwd = admin
2) 现在使用 xml 表示方式
<datasource id="db_mysql">
<property name="url">jdbc:mysql://localhost:3306/wode</property>
<property name="dbUser">root</property>
<property name="dbPwd">admin</property>
</datasource>
DTD/Schema
1) DTD / Schema: 用来规范 XML 的标记规则
2) 有效的 xml 文件(valid xml file) = 格式良好的 xml 文件 + 有 DTD 或 Schema 规则 + 遵循
DTD 或 Schema 的规则
行业交换数据时要求 xml 文件格式相同,所以需要大家遵守规范的 xml 文件格式,比如两仹 xml
文件要有相同的元素嵌套关系、相同的属性定义,相同的元素顺序,元素出现相同的次数等。
\
文档类型定义 DTD(Document Type Difinition)
1) DTD 文档用来定义 XML 文件的格式,约束 XML 文件中的标记规则
2) DTD 类型
PUBLIC(行业共用的)
SYSTEM(小范围自定义的)
<!DOCTYPE books[
<!ELEMENT books (java*,javascript*,(phone|email)*)>
<!ELEMENT java (name,author,price)>
<!ELEMENT javascript (name,author,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
]>
必须列出所有节点,一个都不能少
* 0-n
至少有 1 个作者,多则不限
2) "+"加号表示出现 1-n 次
简介有没有都可以
2) "?"问号表示出现 0 或 1
错误演示
1) 书籍列表和"("间少空格
2) 全角的逗号“,”
3dtd 定义的“作者”和“书名”的顺序和 xml 文件中出现的顺序不一致
dtd 规则_属性(Attribute)
1) <!ATTLIST 标记名称 属性名称 属性类型>
2) BookNo CDATA #REQUIRED: 表示 BookNo 属性是必须的
3) BookNo CDATA #IMPLIED: 表示 isbn 属性不是必须的
---------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books[
<!ELEMENT books (java*,javascript*,(phone|email)*)>
<!ELEMENT java (name,author,price)>
<!ELEMENT javascript (name,author,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST java bookNo CDATA #REQUIRED>
]>
<books>
<java bookNo='1001'>
<name>think in java</name>
<author>张三</author>
<price>18</price>
</java>
</books>
---------------------------------------------
把 xml 文件和 DTD 分离
1 步骤 1:新建 book.dtd,把 DTD 部分保存在此文件中
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (java*,javascript*,(phone|email)*)>
<!ELEMENT java (name,author,price)>
<!ELEMENT javascript (name,author,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST java bookNo CDATA #REQUIRED>
2:xml 文件改为指定 DTD 文件为 book.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "book.dtd">