XML

 

一、瞭解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)>

發佈了42 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章