概念
-
xml
的目的是:传输和存储数据,而html
是为了展示数据用 -
html
与xss
很相似,不同的地方在于HTML
标签不能自定义,XML
标签可以自定义HTML
语法要求不严格;XML
语法要求极其严格,必须是成对标签- 目的不同
-
xml
的用途-
程序之间的数据传输通讯
PHP
->APP->JAVA -
配置文件
config.xml
-
存储数据,充当小型数据库
data.xml
-
规范数据格式,使数据具有结构性,易读,易处理
-
-
XML指的是可拓展性标记语言
-
XML
的标签必须自定义,但是写标签名要有含义 -
XML
必须要有一个root
节点
XML基本语法
书写要点
-
XML必须有根节点
根节点就是其他所有结点的父节点
<root> <user>abc</user> <msg>abc</msg> </root>
-
XML头声明
<?xml version="1.0" encoding="utf-8"?>
这种头声明实际上是可有可无的
-
XML中的标签需要正确嵌套
-
XML中的标签对大小写敏感
-
注释,与
html
一致<!-- XXX -->
-
HTML
会将多个连续的空格字符合并为1个而
XML
中,文档中的空格不会删减 -
XML
以LF
存储换行 -
特殊字符使用实体转义
在
XML
中需要转义的字符有<
< less than >
> greater than &
& ampersand '
’ apostrophe "
" quotation mark
属性
与html
的语法规则一样
<man>
<name age="38" gender="?">张三</name>
</man>
- 一个标签可以有多个属性,属性的值必须使用引号引起来
- 命名规则:数字字母下划线,数字不能开头
属性就是表示标签自身的一些额外信息;
XML
中属性其实比较鸡肋
CDATA
XML
文档中的所有文本均会被解析器解析
只有CDATA
区段中的文本会被解析器忽略
PCDATA-被解析的字符数据
XML 解析器通常会解析 XML 文档中所有的文本。
当某个 XML 元素被解析时,其标签之间的文本也会被解析:
<message>**This text is also parsed**</message>
解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个实例中,其中的
<name><first>Bill</first><last>Gates</last></name>
而解析器会把它分解为像这样的子元素:
<name> <first>Bill</first> <last>Gates</last> </name>
解析字符数据(PCDATA)是 XML 解析器解析的文本数据使用的一个术语。
CDATA-(未解析)字符数据
术语 CDATA 是不应该由 XML 解析器解析的文本数据。
像 “<” 和 “&” 字符在 XML 元素中都是非法的。
“<” 会产生错误,因为解析器会把该字符解释为新元素的开始。
“&” 会产生错误,因为解析器会把该字符解释为字符实体的开始。
某些文本,比如 JavaScript 代码,包含大量 “<” 或 “&” 字符。为了避免错误,可以将脚本代码定义为 CDATA。
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由 “” 结束:
<script><![CDATA[function matchwo(a,b){if (a < b && a < 0) then{return 1;}else{return 0;}}]]></script>
在上面的实例中,解析器会忽略 CDATA 部分中的所有内容。
关于 CDATA 部分的注释:
CDATA 部分不能包含字符串 “]]>”。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 “]]>” 不能包含空格或换行。
命名空间
当两个不同的文档使用相同的元素名的时候就会发生命名冲突
避免方法
-
使用前缀来避免命名冲突
<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>
-
xmlns属性
当在 XML 中使用前缀时,一个所谓的用于前缀的命名空间必须被定义。
命名空间是在元素的开始标签的 xmlns 属性中定义的。
命名空间声明的语法如下。xmlns:前缀=“URI”。
验证
拥有正确语法的 XML 被称为"形式良好"的 XML。
通过 DTD 验证的XML是"合法"的 XML。
DTD
的目的是定义XML
文档的结构,使用一系列合法的元素来定义文档结构
<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>