首頁 >後端開發 >XML/RSS教程 >XML—XML介紹與基本語法

XML—XML介紹與基本語法

黄舟
黄舟原創
2017-02-24 14:53:431387瀏覽

1.XML歷史

#gml(1969)->sgml(1985)->html(1993)- >xml(1998)

  • 1969 gml(通用標記語言),主要目的是要在不同的機器之間進行通訊的資料規格

  • 1985 sgml(標準通用標記語言)

  • 1993 html(超文本標記語言,www網)

html語言本身就是有一些缺陷的
 (1)不能自訂標籤
 (2)html本身缺乏意義
 (3)html沒有真正的國際化

有一個中間過渡語言,xhtml:
html->xhtml->xml

  • 1998 xml extensiable markup language 擴充標記語言

#2.為什麼需要XML

1.需求1
兩個程式間進行資料通訊?
2.需求2
給一台伺服器,做一個設定文件,當伺服器程式啟動時,去讀取它應當監聽的連接埠號,還有連接資料庫的使用者名稱和密碼?

在XML語言中,它允許使用者自訂標籤。一個標籤用來描述一段數據;一個標籤可以分為開始標籤和結束標籤,在開始標籤和結束標籤之間,又可以使用其他標籤來描述其他數據,以此來實現數據關係的描述。

3.XML常見應用

1.XML的出現解決了程式間資料傳輸的問題:
例如QQ之間的資料傳送,用XML格式來傳送數據,具有良好的可讀性,可維護性

2.XML可以做設定檔
XML檔案做設定檔可以說非常普遍,例如我們的Tomcat伺服器的server.xml ,web.xml。再來例如我們的structs中的structs-config.xml文件,和hibernate的hibernate.cfg.xml等等。

3.XML可以充當小型的資料庫
XML檔案可以做小型資料庫,也是不錯的選擇,我們程式中可能用到一些經常要人工配置的數據,如果放在資料庫中讀取不合適(因為這會增加維護資料庫的工作),則可以考慮直接用XML來做小型資料庫。這種方式直接讀取檔案顯然要比讀資料庫快。例如msn中保存用戶聊天記錄就是用XML檔。

入門案例:用XML記錄一個班級資訊。

<?xml version="1.0" encoding="gb2312"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

我們可以用瀏覽器開啟:

XML—XML介紹與基本語法

那麼我們的XML能不能像html一樣顯示在網頁上呢?也是可以的,它也可以用css來修飾,但我們不用,我們只需要使用XML來儲存資料。

在這個例子中,如果我們把第一行的編碼改為utf-8,再用瀏覽器打開會報錯,這是為什麼呢?

因為xml檔案的預設編碼是ANSI,也就是美國國家標準協會制定的編碼,它根據不同的國家和地區制定了不同的標準,那麼在中國就是GB2312,所以我們用GB2312編碼不會出錯,而用UTF-8會報錯。

解決方法就是將該XML檔案更改為UTF-8的編碼模式即可。

4.XML語法

一個XML檔案分為以下幾部分內容:
1. 文檔宣告
2.元素
3.屬性
4.註解
5.CDATA區、特殊字元
6.處理指令(processing instruction)

4.1.XML語法-文件宣告

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

XML宣告放在XML文件的第一行
XML宣告由以下幾個部分組成:

version –文件符合XML1.0規範,我們學習1.0
 encoding –文檔字元編碼,例如”GB2312”或”UTF-8”
 standalone –文件定義是否獨立使用
 standalone=”no”為預設值。 yes代表是獨立使用,而no代表不是獨立使用

4.2.XML語法-元素(或稱為標記、節點)

( 1)每個XML文件必須有且只有一個根元素

  • 根元素是一個完全包含文件中其他所有元素的元素

  • 根元素的起始標記要放在所有其他元素的起始標記之前

  • #跟元素的結束標記要放在所有其他元素的結束標記之後

(2)XML元素指的是XML檔案中出現的標籤,一個標籤分為開始標籤和結束標籤,一個標籤有以下幾種書寫方式,例如

  • 包含標籤體:

#
<a>www.sohu.com</a>
  • 不含標籤體的:

<a></a>,简写为:<a/>

(3)一個標籤中也可以嵌套若干子標籤。但所有標籤必須合理地嵌套,絕對不允許交叉嵌套,例如

<a>welcome to <b> www.sohu.com </a></b>

這種情況肯定是要報錯的。

(4)对于XML标签中出现的所有空格和换行,XML解析程序都会当做标签内容进行处理。例如下面两段内容的意义是不一样的。

<stu>xiaoming</stu>

和如下:

<stu>
    xiaoming</stu>

(5)由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,要特别注意。

(6)命名规范:一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守以下规范:

  • 区分大小写,例如,元素P和元素p是两个不同的元素

  • 不能以数字或下划线”_”开头

  • 元素内不能包含空格

  • 名称中间不能包含冒号(:)

  • 可以使用中文,但一般不这么用

4.3.XML语法-属性

<student id="100">
    <name>Tom</name></student>

(1)属性值用双引号(”)或单引号(’)分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML有5个预定义的实体字符,如下:

XML—XML介紹與基本語法

(2)一个元素可以有多个属性,它的基本格式为:

<元素名 属性名1="属性值1" 属性名2="属性值2">

(3)特定的属性名称在同一个元素标记中只能出现一次
 (4)属性值不能包括,&,如果一定要包含,也要使用实体

4.4.XML语法-注释

XML的注释类似于HTML中的注释:

<!--这是一个注释-->

(1)注释内容不要出现--
 (2)不要把注释放在标记中间;
 (3)注释不能嵌套
 (4)可以在除标记以外的任何地方放注释

4.5.XML语法-CDATA节

假如有这么一个需求,需要通过XML文件传递一幅图片,怎么做呢?其实我们看到的电脑上的所有文件,本质上都是字符串,不过它们都是特殊的二进制字符串。我们可以通过XML文件将一幅图片的二进制字符串传递过去,然后再解析成一幅图片。那么这个字符串就会包含大量的,&或者“等一些特殊的不合法的字符。这时候解析引擎是会报错的。

所以,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,用于把整段文本解释为纯字符数据而不是标记。这就要用到CDATA节。

语法如下:

<![CDATA[
    ......
]]>

CDATA节中可以输入任意字符(除]]>外),但是不能嵌套!

如下例,这种情况它不会报错,而如果不包含在CDATA节中,就会报错:

<stu id="001">
    <name>杨过</name> 
    <sex>男</sex>
    <age>20</age>
    <intro><![CDATA[ad<<&$^#*k]]></intro></stu>

4.6.XML语法-处理指令

处理指令,简称PI(processing instruction)。处理指令用来指示解析引擎如何解析XML文件,看下面一个例子:

比如我们也可以使用css样式表来修饰XML文件,编写my.css如下:

name{    
font-size:80px;    
font-weight:bold;    
color:red;
}
sex{    
font-size:60px;    
font-weight:bold;    
color:blue;
}
sex{    
font-size:40px;    
font-weight:bold;    
color:green;
}

我们在xml文件中使用处理指令引入这个css文件,如下:

<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet href="my.css" type="text/css"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

这时候我们再用浏览器打开这个xml文件,会发现浏览器解析出一个带样式的视图,而不再是单纯的目录树了:

XML—XML介紹與基本語法

但是XML的处理指令不要求掌握,因为用到的很少。

5.格式正规的XML文档-小结

语法规范

1.XML声明语句
2.必须有一个根元素
3.标记大小写敏感
4.属性值用引号
5.标记成对
6.空标记关闭
7.元素正确嵌套

1.XML历史

gml(1969)->sgml(1985)->html(1993)->xml(1998)

  • 1969 gml(通用标记语言),主要目的是要在不同的机器之间进行通信的数据规范

  • 1985 sgml(标准通用标记语言)

  • 1993 html(超文本标记语言,www网)

html语言本身是有一些缺陷的
 (1)不能自定义标签
 (2)html本身缺少含义
 (3)html没有真正的国际化

有一个中间过渡语言,xhtml:
 html->xhtml->xml

  • 1998 xml extensiable markup language 可扩展标记语言

2.為什麼需要XML

1.需求1
兩個程式間進行資料通訊?
2.需求2
給一台伺服器,做一個設定文件,當伺服器程式啟動時,去讀取它應當監聽的連接埠號,還有連接資料庫的使用者名稱和密碼?

在XML語言中,它允許使用者自訂標籤。一個標籤用來描述一段數據;一個標籤可以分為開始標籤和結束標籤,在開始標籤和結束標籤之間,又可以使用其他標籤來描述其他數據,以此來實現數據關係的描述。

3.XML常見應用

1.XML的出現解決了程式間資料傳輸的問題:
例如QQ之間的資料傳送,用XML格式來傳送數據,具有良好的可讀性,可維護性

2.XML可以做設定檔
XML檔案做設定檔可以說非常普遍,例如我們的Tomcat伺服器的server.xml ,web.xml。再來例如我們的structs中的structs-config.xml文件,和hibernate的hibernate.cfg.xml等等。

3.XML可以充當小型的資料庫
XML檔案可以做小型資料庫,也是不錯的選擇,我們程式中可能用到一些經常要人工配置的數據,如果放在資料庫中讀取不合適(因為這會增加維護資料庫的工作),則可以考慮直接用XML來做小型資料庫。這種方式直接讀取檔案顯然要比讀資料庫快。例如msn中保存用戶聊天記錄就是用XML檔。

入門案例:用XML記錄一個班級資訊。

<?xml version="1.0" encoding="gb2312"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

我們可以用瀏覽器開啟:

XML—XML介紹與基本語法

那麼我們的XML能不能像html一樣顯示在網頁上呢?也是可以的,它也可以用css來修飾,但我們不用,我們只需要使用XML來儲存資料。

在這個例子中,如果我們把第一行的編碼改為utf-8,再用瀏覽器打開會報錯,這是為什麼呢?

因為xml檔案的預設編碼是ANSI,也就是美國國家標準協會制定的編碼,它根據不同的國家和地區制定了不同的標準,那麼在中國就是GB2312,所以我們用GB2312編碼不會出錯,而用UTF-8會報錯。

解決方法就是將該XML檔案更改為UTF-8的編碼模式即可。

4.XML語法

一個XML檔案分為以下幾部分內容:
1. 文檔宣告
2.元素
3.屬性
4.註解
5.CDATA區、特殊字元
6.處理指令(processing instruction)

4.1.XML語法-文件宣告

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

XML宣告放在XML文件的第一行
XML宣告由以下幾個部分組成:

version –文件符合XML1.0規範,我們學習1.0
 encoding –文檔字元編碼,例如”GB2312”或”UTF-8”
 standalone –文件定義是否獨立使用
 standalone=”no”為預設值。 yes代表是獨立使用,而no代表不是獨立使用

4.2.XML語法-元素(或稱為標記、節點)

( 1)每個XML文件必須有且只有一個根元素

  • 根元素是一個完全包含文件中其他所有元素的元素

  • 根元素的起始標記要放在所有其他元素的起始標記之前

  • #跟元素的結束標記要放在所有其他元素的結束標記之後

(2)XML元素指的是XML檔案中出現的標籤,一個標籤分為開始標籤和結束標籤,一個標籤有以下幾種書寫方式,例如

  • 包含標籤體:

#
<a>www.sohu.com</a>
  • 不含標籤體的:

<a></a>,简写为:<a/>

(3)一個標籤中也可以嵌套若干子標籤。但所有標籤必須合理地嵌套,絕對不允許交叉嵌套,例如

<a>welcome to <b> www.sohu.com </a></b>

這種情況肯定是要報錯的。

(4)對於XML標籤中出現的所有空格和換行,XML解析程式都會當作標籤內容來處理。例如下面兩段內容的意義是不一樣的

<stu>xiaoming</stu>

和如下:

<stu>
    xiaoming</stu>

(5)由於在XML中,空格和換行都被當作原始內容被處理,所以,在寫XML檔時,要特別注意。

(6)命名規範:一個XML元素可以包含字母、數字以及其它一些可見字符,但必須遵守以下規範:

  • 區分大小寫,例如,元素P和元素p是兩個不同的元素

  • 不能以數字或底線”_”開頭

  • 元素內不能包含空格

  • 名稱中間不能包含冒號(:)

  • #可以使用中文,但一般不這麼用

4.3.XML语法-属性

<student id="100">
    <name>Tom</name></student>

(1)属性值用双引号(”)或单引号(’)分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML有5个预定义的实体字符,如下:

XML—XML介紹與基本語法

(2)一个元素可以有多个属性,它的基本格式为:

<元素名 属性名1="属性值1" 属性名2="属性值2">

(3)特定的属性名称在同一个元素标记中只能出现一次
 (4)属性值不能包括,&,如果一定要包含,也要使用实体

4.4.XML语法-注释

XML的注释类似于HTML中的注释:

<!--这是一个注释-->

(1)注释内容不要出现--
 (2)不要把注释放在标记中间;
 (3)注释不能嵌套
 (4)可以在除标记以外的任何地方放注释

4.5.XML语法-CDATA节

假如有这么一个需求,需要通过XML文件传递一幅图片,怎么做呢?其实我们看到的电脑上的所有文件,本质上都是字符串,不过它们都是特殊的二进制字符串。我们可以通过XML文件将一幅图片的二进制字符串传递过去,然后再解析成一幅图片。那么这个字符串就会包含大量的,&或者“等一些特殊的不合法的字符。这时候解析引擎是会报错的。

所以,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,用于把整段文本解释为纯字符数据而不是标记。这就要用到CDATA节。

语法如下:

<![CDATA[
    ......
]]>

CDATA节中可以输入任意字符(除]]>外),但是不能嵌套!

如下例,这种情况它不会报错,而如果不包含在CDATA节中,就会报错:

<stu id="001">
    <name>杨过</name> 
    <sex>男</sex>
    <age>20</age>
    <intro><![CDATA[ad<<&$^#*k]]></intro></stu>

4.6.XML语法-处理指令

处理指令,简称PI(processing instruction)。处理指令用来指示解析引擎如何解析XML文件,看下面一个例子:

比如我们也可以使用css样式表来修饰XML文件,编写my.css如下:

name{    
font-size:80px;    
font-weight:bold;    
color:red;
}
sex{    
font-size:60px;    
font-weight:bold;    
color:blue;
}
sex{    
font-size:40px;    
font-weight:bold;    
color:green;
}

我们在xml文件中使用处理指令引入这个css文件,如下:

<?xml version="1.0" encoding="gb2312"?><?xml-stylesheet href="my.css" type="text/css"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

这时候我们再用浏览器打开这个xml文件,会发现浏览器解析出一个带样式的视图,而不再是单纯的目录树了:

XML—XML介紹與基本語法

但是XML的处理指令不要求掌握,因为用到的很少。

5.格式正规的XML文档-小结

语法规范

  1. XML声明语句
    2.必须有一个根元素
    3.标记大小写敏感
    4.属性值用引号
    5.标记成对
    6.空标记关闭
    7.元素正确嵌套

 以上就是XML—XML介绍和基本语法的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn