一、瞭解XML
Extensible Markup Language,翻譯過來爲可擴展標記語言。Xml技術是w3c組織發佈的,目前推薦遵循的是W3C組織於2000發佈的XML1.0規範。
XML語言出現的根本目標在於描述上圖那種,在現實生活中經常出現的有關係的數據。
在XML語言中,它允許用戶自定義標籤。一個標籤用於描述一段數據;一個標籤可分爲開始標籤和結束標籤,在開始標籤和結束標籤之間,又可以使用其它標籤描述其它數據,以此來實現數據關係的描述。
<?xml version="1.0" encoding="UTF-8"?>
<中國>
<北京>
<海淀></海淀>
<豐臺></豐臺>
</北京>
<湖南>
<長沙></長沙>
<岳陽></岳陽>
</湖南>
<湖北>
<武漢></武漢>
<荊州></荊州>
</湖北>
</中國>
二、XML常見應用
1、XML技術除用於保存有關係的數據之外,它還經常用作軟件配置文件,以描述程序模塊之間的關係。
2、 在一個軟件系統中,爲提高系統的靈活性,它所啓動的模塊通常由其配置文件決定
例如一個軟件在啓動時,它需要啓動A、B兩個模塊,而A、B這兩個模塊在啓動時,又分別需要A1、A2和B1、B2模塊的支持,爲了準確描述這種關係,此時使用XML文件最爲合適不過。
三、XML 文檔規則
1、XML文檔的分類
1> 格式不良好(malformed)的xml文檔:完全沒有遵守xml文的基本規範的xml文檔。
2> 格式良好(well-formed)的但無效的xml文檔: 遵守xml文的基本規範,但沒有使用dtd或schema定義語義約束的xml文檔。
3> 有效(valid)的xml文檔:遵守xml文的基本規範,並使用dtd或schema定義語義約束,而且也完全遵守了dtd或schema定義語義約束的xml文檔。
四、XML語法
一個XML文件分爲如下幾部分內容:
文檔聲明、 元素、屬性、註釋、 CDATA區、特殊字符 、處理指令(processing instruction)
1、 文檔聲明
(1) 在編寫XML文檔時,需要先使用文檔聲明,聲明XML文檔的類型。
(2) 最簡單的聲明語法:
<?xml version="1.0" ?>
(3) 用encoding屬性說明文檔的字符編碼:
<?xml version="1.0" encoding="GB2312" ?>
(4) 用standalone屬性說明文檔是否獨立:
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
(5) 常見錯誤,見PPT下面的備註區
2、 元素
(1) 元素1
a) XML元素指XML文件中出現的標籤,一個標籤分爲開始標籤和結束標籤,一個標籤有如下幾種書寫形式,例如:
• 包含標籤體:<a>www.itcast.cn</a>
• 不含標籤體的:<a/>
b) 一個標籤中也可以嵌套若干子標籤。但所有標籤必須合理的嵌套,絕對不允許交叉嵌套,例如:
<a>welcome to <b>www.it315.org</a></b>
c) 格式良好的XML文檔必須有且僅有一個根標籤,其它標籤都是這個根標籤的子孫標籤。
(2)元素2
d) 對於XML標籤中出現的所有空格和換行,XML解析程序都會當作標籤內容進行處理。例如:下面兩段內容的意義是不一樣的。
第一段:
<網址>www.itcast.cn</網址>
第二段:
<網址>
www.itcast.cn
</網址>
e) 由於在XML中,空格和換行都作爲原始內容被處理,所以,在編寫XML文件時,使用換行和縮進等方式來讓原文件中的內容清晰可讀的“良好”書寫習慣可能要被迫改變。
(3)元素3-----命名規則
一個XML元素可以包含字母、數字以及其它一些可見字符,但必須遵守下面的一些規範:
區分大小寫,例如,<P>和<p>是兩個不同的標記。
不能以數字或"_" (下劃線)開頭。
不能以xml(或XML、或Xml 等)開頭。
不能包含空格。
名稱中間不能包含冒號(:)。
(1)英文名稱必須以英文字母或者下劃線開頭,中文名稱必須以中文文字或下劃線開頭。
(2)在使用默認編碼集的情況下,名稱可由英文字母、數字、下劃線、連接符(-)和點號(.)構成。在指定了編碼集的情況下,則名稱中除上述字符外,還可以出現該字符集中的合法字符
屬性:
一個標籤可以有多個屬性,每個屬性都有它自己的名稱和取值,例如:
<input name=“text”>
屬性值一定要用雙引號(")或單引號(')引起來
定義屬性必須遵循與標籤相同的命名規範
多學一招:在XML技術中,標籤屬性所代表的信息,也可以被改成用子元素的形式來描述,例如:
<input>
<name>text</name>
</input>
註釋:
Xml文件中的註釋採用:“<!--註釋-->” 格式。
注意:
XML聲明之前不能有註釋
註釋不能嵌套,例如:
<!--大段註釋
……
<!--局部註釋-->
……
-->
CDATA區:
在編寫XML文件時,有些內容可能不想讓解析引擎解析執行,而是當作原始內容處理。
遇到此種情況,可以把這些內容放在CDATA區裏,對於CDATA區域內的內容,XML解析程序不會處理,而是直接原封不動的輸出。
語法:<![CDATA[ 內容 ]]>
<![CDATA[
<csdn>
<br/>
</csdn>
]]>
轉義字符
對於一些單個字符,若想顯示其原始樣式,也可以使用轉義的形式予以處理。
處理指令
處理指令,簡稱PI (processing instruction)。處理指令用來指揮解析引擎如何解析XML文檔內容。
例如,在XML文檔中可以使用xml-stylesheet指令,通知XML解析引擎,應用css文件顯示xml文檔內容。 <?xml-stylesheet type="text/css" href="1.css"?>
處理指令必須以“<?”作爲開頭,以“?>”作爲結尾,XML聲明語句就是最常見的一種處理指令。
XML約束
在XML技術裏,可以編寫一個文檔來約束一個XML文檔的書寫規範,這稱之爲XML約束,常用的約束技術XML DTD 、XML Schema
DTD(Document Type Definition),全稱爲文檔類型定義。
文件清單:book.xml
<?xml version="1.0" ?>
<!DOCTYPE 書架 SYSTEM "book.dtd">
<書架>
<書>
<書名>Java就業培訓教程</書名>
<作者>redarmy</作者>
<售價>39.00元</售價>
</書>
<書>
<書名>JavaScript網頁開發</書名>
<作者>redarmy</作者>
<售價>28.00元</售價>
</書>
</書架>
文件清單:book.dtd (DTD文件應使用UTF-8或Unicode)
<!ELEMENT 書架 (書+)>
<!ELEMENT 書 (書名,作者,售價)>
<!ELEMENT 書名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售價 (#PCDATA)>
一、編程校驗XML文檔正確性
(1)IE5以上瀏覽器內置了XML解析工具:Microsort.XMLDOM,開發人員可以編寫javascript代碼,利用這個解析工具裝載xml文件,並對xml文件進行dtd驗證。
(2)創建xml文檔解析器對象
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
(3)開啓xml校驗
xmldoc.validateOnParse = "true";
(4)裝載xml文檔
xmldoc.load("book.xml");
(5) 獲取錯誤信息
xmldoc.parseError.reason;
xmldoc.parseError.line
二、編寫DTD約束的兩種方式
DTD約束即可以作爲一個單獨的文件編寫,也可以在XML文件內編寫。
******************在xml文件內編寫DTD************************
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 書架 [
<!ELEMENT 書架 (書+)>
<!ELEMENT 書 (書名,作者,售價)>
<!ELEMENT 書名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售價 (#PCDATA)>
]>
<書架>
<書>
<書名>Java就業培訓教程</書名>
<作者>redarmy</作者>
<售價>39.00元</售價>
</書>
...
</書架>
三、引用DTD約束
XML文件使用 DOCTYPE 聲明語句來指明它所遵循的DTD文件,DOCTYPE聲明語句有兩種形式:
當引用的文件在本地時,採用如下方式:
<!DOCTYPE 文檔根結點 SYSTEM "DTD文件的URL">
例如: <!DOCTYPE 書架 SYSTEM “book.dtd”>。在xml文件中手寫一下。
當引用的文件是一個公共的文件時,採用如下方式:
<!DOCTYPE 文檔根結點 PUBLIC "DTD名稱" "DTD文件的URL">
例如:<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
四、DTD約束語法細節
元素定義、屬性定義、實體定義
(一)元素定義
1、 元素定義1
在DTD文檔中使用ELEMENT聲明一個XML元素,語法格式如下所示:
<!ELEMENT 元素名稱 元素類型>
元素類型可以是元素內容、或類型
• 如爲元素內容:則需要使用()括起來,如
<!ELEMENT 書架 (書名,作者,售價)>
<!ELEMENT 書名 (#PCDATA)>
如爲元素類型,則直接書寫,DTD規範定義瞭如下幾種類型:
EMPTY:用於定義空元素,例如<br/> <hr/>
ANY:表示元素內容爲任意類型。
2、 元素定義2
元素內容中可以使用如下方式,描述內容的組成關係
用逗號分隔,表示內容的出現順序必須與聲明時一致。<!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>
用|分隔,表示任選其一,即多個只能出現一個
<!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>
在元素內容中也可以使用+、*、?等符號表示元素出現的次數:
+: 一次或多次 (書+)
?: 0次或一次 (書?)
*: 0次或多次 (書*)
也可使用圓括號( )批量設置,例
<!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>