<!--
1、每一个xml,有且只有一个根标签,所有xml标签必须写在根标签中
2、标签必须要有合闭
3、xml格式是否正确,可以通过浏览器打开xml。来校验xml格式是否正确
4、xml是区别大小写的
5、xml书写标签名时,不要出现空格等特殊字符
6、标签命名时不要以数字开头
7、在书写标签中时不要乱嵌套或相互嵌套 <name><age></name></age>
-->
特性:
1、具有平台无关性,是一门独立的标记语言。
a:系统无关性,不管是在Windows电脑上,还是苹果电脑上,解析出来的效果都是一样的
b:语言无关性,不管用java还是c或者是其他语言进行解析,显示出来的效果都是一样的。
2、具有自我描述性。
XML语法格式
1、xml文档声明
<?xml version="1.0" encoding="UTF-8"?>
2、标记(元素/标签/节点)
xml文档,是由一个个标记组成
语法:开始标记:<标记名称>
结束标记:</标记名称>
3.一个xml文档里面,有且仅有一个根标记
4.标记名称是允许重复
<persons>
<person>
<name> 李四 </name>
<length>180cm</length>
</person>
<person>
<name> 李四 </name>
<length>200cm</length>
</person>
</persons>
5.标记除了开始和结束,还有属性,在标记开始时描述,由属性名和属性值组成。
格式:可以包含0-n个属性,每一个属性都是一个键值对!
属性值必须要用引号引住。
6.注释
注释不能写在文档声明前
注释不能嵌套注释
格式:
注释开始:<!--
注释结束:-->
XML基本语法
xml: 可扩展的标记语言
1.文档声明
XML文件的后缀为.xml;
XML文本要求文件有一个头部声明(用来告诉解析器一些相关信息);
<?xml version="1.0" encoding="UTF-8"?>
头部声明是给解析器看的,表明当前文件是xml文件,XML版本为1.0,文件内容使用的字符编码为UTF-8。
注意:要小心在系统中这个xml文件保存时候的编码,是否和文件内容中设置的编码一致;
头部声明可以省略,如果不写,会默认加上<?xml version="1.0"?>。
注意:
XML语法很严格,只要有问题,浏览器就无法正常显示;
如果文件的保存格式不对,无法显示;
如果文件格式上有任何问题,也无法显示。
元素命名规则
一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:
a. 区分大小写,例如,<P>和<p>是两个不同的标记。
b. 不能以数字开头.
c. 不能包含空格。
注意,XML语法十分严格,以上提到的点,任何一点出问题都不能在浏览器中正常显示。
3.属性
属性出现在 起始标签内部,和标签名用空格隔开。
它的基本格式为:
<元素名 属性名1="属性值" 属性名2="属性值" ...>
注意:
a. 一个元素可以有多个属性;
b. 属性值用双引号(")或单引号(')括起来;
c. 特定的属性名称在同一个元素标记中只能出现一次;
b. 属性值不能包括<, >, &等特殊字符。
例如:
<student id="100">
<name>TOM</name>
</student>
4.实体 ENTITY
xml文件中有些特殊的字符是不能直接表示出来的,例如:大于号,小于号,单引号、双引号等等,为了表示它们,我们可以借助实体完成。
实体可以分为两类:预定义实体、自定义实体。
a.预定义字符实体,由XML规范预先定义好了
< <
> >
& &
" "
' '
注意:使用实体的格式是 &实体名字;
b.自定义实体 ENTITY
定义格式:
<!DOCTYPE 根元素名称[ //其他字符串也可以,并不必须是根元素名称
<!ENTITY 实体名1 "实体内容">
<!ENTITY 实体名2 "实体内容">
...
]>
eg:
<!DOCTYPE courses[
<!ENTITY company "昆山杰普软件科技有限公司">
]>
其中:company为实体名称;
"昆山杰普软件科技有限公司"是实体内容;
实体的使用 &company;
4.注释
<!-- 这是一个注释 -->
注意:
a. 注释内容中不要出现--;
b. 不要把注释放在标记内部;
<Name <!-- the name -->>TOM</Name> 是不合适的
c. 注释不能嵌套;
d. 可以在除标记以外的任何地方放注释;
命名规则
在XML中,可以使用自己需要的元素来扩展标记语言。
命名基本规则:
- 元素名称不能以数字或特殊字符开头
- 可以包含字母,数字,下划线等
- 不能以字符串“XML”作为开头
- 不能包含空格
- 尽量不要包含特殊字符
- 区分大小写
在 XML 中,空格会被保留
HTML 会把多个连续的空格字符裁减(合并)为一个:
HTML: | Hello Tove |
输出结果: | Hello Tove |
在 XML 中,文档中的空格不会被删减。
XML语法-属性
<student id="100"> <name>Tom</name> </student>
(1)属性值用双引号 " 或单引号 ' 分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML 有 5 个预定义的实体字符,如下:
(2)一个元素可以有多个属性,它的基本格式为:
<元素名 属性名1="属性值1" 属性名2="属性值2">
(3)特定的属性名称在同一个元素标记中只能出现一次
(4)属性值不能包括 <,>,&,如果一定要包含,也要使用实体
XML 命名规则
XML 元素必须遵循以下命名规则:
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母 xml(或者 XML、Xml 等等)开始
- 名称不能包含空格
可使用任何名称,没有保留的字词。
最佳命名习惯
使名称具有描述性。使用下划线的名称也很不错:<first_name>、<last_name>。
名称应简短和简单,比如:<book_title>,而不是:<the_title_of_the_book>。
避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为您想要从 first 里边减去 name。
避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。
避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。
XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。
在 XML 中,éòá 等非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时可能出现的问题。
XML 元素是可扩展的
XML 元素是可扩展,以携带更多的信息。
请看下面的 XML 实例:
<note> <to>Tove</to> <from>Jani</from> <body>Don't forget me this weekend!</body> </note>
让我们设想一下,我们创建了一个应用程序,可将 <to>、<from> 以及 <body> 元素从 XML 文档中提取出来,并产生以下的输出:
MESSAGE To: Tove Don't forget me this weekend! |
想象一下,XML 文档的作者添加的一些额外信息:
<note> <date>2008-01-10</date> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
那么这个应用程序会中断或崩溃吗?
不会。这个应用程序仍然可以找到 XML 文档中的 <to>、<from> 以及 <body> 元素,并产生同样的输出。
XML 的优势之一,就是可以在不中断应用程序的情况下进行扩展。
空元素 (empty element)
空元素
空元素在 XML 文档中可以有两种格式:
- <element/>
- <element></element>
如果一个 XML 元素没有内容,比如,<site></site>
我们称其为空元素 (empty element)。
空元素有一种特殊的写法,以 <
开始,然后是元素名称,然后以 />
结束。比如,<site />
。
xml 中的元素(标签)也 分成 单标签和双标签:
单标签
格式: <标签名 属性=”值” 属性=”值” ...... />
双标签
格式:< 标签名 属性=”值” 属性=”值” ......>文本数据或子标签</标签名>
单标签和双标签(重点)
单标签是由一个标签组成,用/>结尾,是一种简写。
双标签由开始标签和结束标签组成;双标签可以替换所有的单标签
xml的标签分为两种 单标签 和双标签 在xml中要求所有的标签必须闭合
单标签的格式:<标签/> 双标签:<标签> </标签>
双标签在内部添加元素:
<book id="SN15151545454">
<author>作者</author>
<name>安徒生的童话</name>
<price>939</price>
</book>
单标签整合为一条XML标签:
<book id="SN15151545454" name = "安徒生童话"/>