XML语法
XML语法
XML文档结构
-
<?xml version="1.0" encoding="GB2312" standalone="yes"?> <!--Prolog区还包含指令 --> <note type="message"> <to>lvqi</to> <from>pingdu</from> <heading>reminder</heading> <body> dont forget eat grass!</body> </note> <!-- 第一行XML声明 --> <!-- 1.前面不要有任何其他的信息(包括空行 !格式良好) 2.encoding : 指定编码格式(字符集),可以省略,默认UTF-8; 其他字符集:GBK , GB2312,Big5,UTF-16 3.Stangdalong:指定该文档是否需要引用其他资源 值:yes 或 no (DTD) <note>: 元素 ,由起始标签和结束标签组成,中间可以包含文本信息和其他子元素 四个子元素 to from heading body 最后一行: 结束标签</note> 先有反斜杠 --> <!-- 1.文档必须包含一个根元素 2.所有的元素构成一棵文档树 3.在这个树中 元素和元素之间的关系:父子、兄弟 -->
-
语法:
1.所有元素都有起始标签和结束标签
2.大小写敏感(区分大小写),标签命名也是敏感的
-
- <Message>和<message>是不同的 是两个标签 - 错: <Message>hello</message>
3.嵌套要正确
-
错: <a><b><a><b> 正确: <a><b></b></a>
4.有且只有一个根元素 称为 父元素 其他称为 子元素
5.属性值一定使用英文引号括起
<!--<note data=2021/03/01> --> <!--错误--> <note data="2021/03/01"> </note>
6.实体引用 ‘<’:< 和 ‘>’:>
单引号:' &(括号)apos;
双引号:" &(括号)quot;
& : &apm;
7.注释:
8.空格保留()
-
元素和标记
-
元素:从起始标签开始到结束标签所包含到部分 可以包含其他元素,文本 或者两者的混合
-
元素命名规则:
1.字母 、数字和其他符号
2.不能以数字和标点符号开始
3.不能”XML“开始
4.不能包含”空格“ (属性值里可以)
-
-
最佳实践:使用有描述含义的单词或短语 ,多个单词使用”_“连接
<book_id> <title_of_book>
注意:不能使用"-"(减号)连接 (与API的解析有关)
-
空元素:
或
==================================================================
属性
<students>
<student id="1"><name>zhangsan</name></student>
<student id="2"><name>lisi</name></student>
<student id="3"><name>wangwu</name></student>
</students>
zhangsan lisi wangwu是数据 id不是数据是属性
属性:提供元素的额外(附加)信息。通常不是数据的一部分
<students>
<student><id>101</id><name>zhangsan</name></student>
<student><id>102</id><name>lisi</name></student>
<student><id>103</id><name>wangwu</name></student>
</students>
现在id成为里数据(元素)
属性的值必须加引号(单引号或双引号)
<student id="3"></student>
<student id='3'></student>
错:<student id=3></student>
特殊符号
<student id='1"31'></student> 1 "3" 1
<student id="1'0'3"></student> 1 '0' 3
<student id="1'0'3"
子元素和属性的使用规则
在XML中,尽可能使用元素,少使用属性(为什么?)
因为元素具有可扩展性
不建议
<note date='2021/3/1'>
</note>
使用元素
<note >
<data>2021/3/1</data>
</note>
推荐的方式:
<note >
<data>
<yy>2021</yy>
<mm>3</mm>
<dd>1</dd>
</data>
</note>
<note >
<data>
<yy>2021</yy>
<mm>3</mm>
<dd>1</dd>
<hh>13</hh>
</data>
</note>
避免使用属性来表示数据:
1.属性不能表示多重值
2.属性不能表示数据的层次(树状)关系
<data>
<yy>2021</yy>
<mm>3</mm>
<dd>1</dd>
</data>
3.属性不易扩展
4.属性不易处理(程序)
5.属性不便阅读理解
CDATA节
在CDATA节中,所有的文本都是纯字符数据,解析器不会解析CDATA中的任何符号和标记
<![CDATA[
无特殊含义,只是数据的一部分
]]
指令
作用:向应用程序传递信息。
指令的位置:prolog序言中写XML声明之后
语法格式:<? 指令 ?(括号)>
指令就是一系列属性(键值对)
<? xml-stylesheet type="text/css" href="mystyle.css" ?>
mystyle.css
date{}
to,from{}
使用指令的原则:
1.不鼓励使用(太多,限制就太多,SGML的老路)