百度百科上:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
一、什么是可扩展标记语言?
-
可扩展标记语言是一种很像超文本标记语言的标记语言。
-
它的设计宗旨是传输数据,而不是显示数据。
-
它的标签没有被预定义。您需要自行定义标签。
-
它被设计为具有自我描述性。
-
它是W3C的推荐标准。
二、一个最基本的xml具有:
- a) 声明信息, 用于描述 xml 的版本和编码方式<?xml version="1.0" encoding="UTF-8"?>
- b) xml 有且仅有一个根元素
- c) xml 是大小写敏感的
- d) 标签是成对的, 而且要正确嵌套
- e) 属性值要使用双引号
<?xml version="1.0" encoding = "UTF-8"?>
<!-- 这里是注解 -->
<books>
<book id = "01">
<name> 疯狂java </name>>
<author> 王五</author>>
<price> 50.2</price>>
</book>
<book id = "02">
<name> c语言教程</name>>
<author> 李四</author>>
<price> 40.2</price>>
</book>
</books>
<?xml version="1.0" encoding="UTF-8"?>就是声明信息
<!-- -->是注释格式
<books> </books> 是根元素
<book></book>是根元素的子元素
<name></name> <author></author> <price></price> 是<book></book>的3个子元素
<book id = "01">中的id就是元素book的属性
<name></name>文本信息或字符串是消息内容
有没有发现逻辑上很像一棵树????
这样一层一层的在嵌套。
三、格式优良的xml——对xml的写法进行规范(DTD)
DTD 简介
- a) DTD, Document Type Definition, 文档类型定义
- b) DTD 用于约束 xml 的文档格式, 保证 xml 是一个有效的xml.
- c) DTD 可以分为两种, 内部 DTD, 外部 DTD
内部DTD:
DTD语法格式如下:
<!DOCTYPE 根元素名称[
<!ELEMENT 子元素名称(#PCDATA)>
]>
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- 内部DTD -->
<!DOCTYPE datum[
<!ELEMENT datum (student+)>
<!ELEMENT student (name, course, score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
]>
<datum>
<student id="1">
<name>小李</name>
<course>数学</course>
<score>98</score>
</student>
<stdent id="2">
<name>王五</name>
<course>语文</course>
<score>88</score>
</stdent>
</datum>
就是对其元素的属性,个数等等进行约束,以上面xml为例。
- <!ELEMENT datum (student+)> 意思根元素下有若干个student元素(和正则表达式里面一样 +: 表示出现 1 次或多次, ?: 表示出现 0 次或 1 次 *: 表示出现任)
- <!ELEMENT student (name, course, score)> 意思student下有3个元素
- <!ATTLIST student id CDATA #REQUIRED> student必须有id( 默认值: #REQUIRED, 表示必须出现
#IMPLIED, 表示不是必须的) - <!ELEMENT name (#PCDATA)> #PCDATA:文本
- <!ELEMENT course (#PCDATA)>
- <!ELEMENT score (#PCDATA)>
外部DTD:
就是让内部DTD内容独立:
<?xml version = "1.0" encoding = "UTF-8"?>
<!ELEMENT datum (student+)>
<!ELEMENT student (name, course, score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
aas.dtd是上面DTD的文件名
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE datum SYSTEM "aas.dtd">
<datum>
<student id="1">
<name>小李</name>
<course>数学</course>
<score>98</score>
</student>
<stdent id="2">
<name>王五</name>
<course>语文</course>
<score>88</score>
</stdent>
</datum>