XML簡單介紹,DTD詳解

           Extensible Markup Language可擴展標記語言。XML技術是W3C組織發佈的,目前推薦遵循的是W3C組織於2000發佈的XML1.0規範。XML出來的目的其實就是爲了替換掉html,只是它失敗了。

            在XML語言中,它允許用戶自定義標籤。一個標籤用於描述一段數據;一個標籤可以分爲開始標籤和結束標籤,在開始標籤和結束標籤之間,又可以使用其他標籤描述其他數據,以此來實現關係的描述。如圖:

XMl技術除了用於保存數據以外,它還經常用作軟件配置文件,用於描述程序模塊之間的關係。

在一個軟件系統中,爲提供系統的靈活性,它所啓動的模塊通常由其配置文件決定。

例如:一個軟件在啓動時,它需要啓動A、B兩個模塊,而A、B這兩個模塊在啓動時,又分別需要A1、A2和B1、B2模塊的支持,爲了準確地描述這種關係,此時使用XML文件最爲合適不過。

在編寫XML文檔時,需要先使用文檔聲明,聲明XML文檔的類型。

最簡單的聲明語法:

<?xml version="1.0"?>

用encoding屬性說明文檔的字符編碼:

<?xml version="1.0" encoding="GB2312" ?>

用standalone 屬性說明文檔是否獨立:

<?xml version="1.0" encoding="GB2312" standalone="yes" ?> yes獨立的文檔,不依賴其他文檔,設置爲no,依賴其它文檔,不過IE瀏覽器依然可以打開no的文檔,是因爲IE沒有關注它這個文檔是否獨立。


XMl元素指XML文件中出現的標籤,一個標籤分爲開始標籤和結束標籤,一個標籤如下幾種書寫形式,

例如:

包含標籤體:<a>www.itcast.cn</a>

不包含標籤體:<a></a>,簡寫爲:<a/>

格式良好的XMl文檔必須有且僅有一個根標籤,其它標籤都是這個根標籤的子孫標籤。

對於XML標籤中出現的所有空格和換行,XMl解析程序都會當做標籤內容進行處理。

<網址>hao123.com</網址>  合格 

<網址>

hao123.com

</網址>不合格

XMl標籤屬性:

一個標籤可以有多個屬性,每個屬性都會有他的自己的名稱和值,例如:

<input name="text">

 聲明XMl屬性的時候,屬性值一定要由雙引號“或者單引號'引起來

定義屬性必須遵循與標籤相同的命名規則

多學一招:在XML技術中,標籤屬性所代表的信息,也可以被改成子元素的形式來描述,例如:

<input>

          <name>text</name>

</input>


CDATA區

在編寫XML文件時,有些內容可能不想讓解析引擎解析執行,而是當做原始數據處理。

遇到這種情況,可以把這些內容放入CDATA區裏,對於CDATA區域中的內容,XML解析程序不會處理,而是直接原封不動的輸出。

語法:<![CDATA[內容]]>

<![CDATA[

        <itcast>

                   <br/>

        </itcast>

]]>


處理指令:簡稱PI(processing instruction)。處理指令用來指揮解析引擎如何解析XML文檔內容。


例如:在XML文檔中可以使用xml-stylesheet指令,通知XML解析引擎,應用css文件顯示xml文檔內容。

<?xml-stylesheet type="text/css" href="1.css" ?>

處理指令必須以"<?"作爲開頭,以"?>"作爲結尾,XML聲明語句就是最常見的處理指令。



XMl約束概念

在XML技術裏面,我們可以編寫一個XMl文檔的書寫規範,這稱之爲XMl約束。

爲什麼需要XMl約束?

一般的框架XML文件都是規範好了書寫,不能讓你瞎填。

常用約束技術:

XML DTD(Document Type Definiction),全稱爲文檔類型定義。XML Schema

什麼時候需要去寫DTD,做框架的時候。

編寫DTD約束的兩種方式:DTD約束即可以作爲一個單獨的文件編寫,也可以在XML文件內編寫。

當引用的文件在本地時,採用如下方式:

<!DOCTYPE文檔根節點SYSTEM"DTD文件的URL">

例如:<!DOCTYPE書架SYSTEM"book.dtd">。

當引用的文件是一個公共的文件時,採用如下方式:

 <!DOCTYPE web-app PUBLIC"-//Sun Microsystems,Lnc//DTD" 

"http://java.sun.com/dtd/web-app_2_3.dtd">

 


在DTD文檔中使用ELEMENT聲明一個XML元素,語法格式如下所示:

<!ELEMENT  元素名稱 元素類型>

元素類型可以使元素內容、或類型

如爲元素內容:則需要使用()擴起來,如

<!ELEMENT 書架(書名,作者,售價)>

<!ELEMENT 書名 (#PCDATA)>

如爲元素類型,則直接書寫,DTD規範定義瞭如下幾種類型:

EMPTY:用於定義空元素,例如<br/><hr/>

ANY:表示元素內容爲任意類型。


DTD的語法細節:元素定義2

元素內容可以使用以下幾種方式,描述內容的組成關係

用逗號分隔,表示內容的出現順序必須與聲明一致。

<!ELEMENT MYFILE(TITLE,AUTHOR,EMAIL)>

用|分隔,表示任選其一,即多個只能出現一個

<!ELEMENT MYFILE(TITILE|AUTHOR|EMAIL)>

在元素內容中也可以使用+、*、?等符號表示元素出現的次數:

+:一次或多次(書+)

?:0次或多1次(書?)

*:0次或多次(書*)

(書)書至少要出來一次

也可使用圓括號()批量設置,例

<!ELEMENT MYFILE((TITILE*,AUTHOR?,EMAIL)* |COMMENT)>


屬性定義attribute:

XML文檔中的標籤屬性需通過ATTLIST爲其設置屬性

語法格式:

<!ATTLIST 元素名

屬性名1 屬性值類型 設置說明

屬性名2 屬性值類型 設置說明

......

>

屬性聲明舉例:

<!ATTLIST 商品

類別 CDATA #REQUIRED

顏色 CDATA #IMPLIED

>

對應XML文件:

<商品 類別=“服裝” 顏色=“黃色”>....</商品>

< 商品 類別=“服裝”>....</商品>


屬性定義

設置說明:

#REQUEST:必須設置該類型

#IMPLIED:可以設置頁不可以設置

#FIXED:說明該屬性的取值固定爲一個值,在XML文件中不能爲該屬性設置其它值。但需要爲該屬性提供這個值

直接使用默認值:在XML中可以設置該值也可以不設置該屬性值。若沒設置則使用默認值。


舉例:

<!ATTLIST  頁面作者

姓名 CDATA #IMPLIED

年輕 CDATA #IMPlIED

聯繫信息CDATA #REQUIRED

網站職務 CDATA #FIXED "頁面作者"

     個人愛好    CDATA "上網"

>

常用屬性值類型

CDATA:表示屬性值爲普通文本字符串。

ENUMERATED

ID

ENTITY(實體)


屬性值類型---->ENUMERATED

屬性的類型可以是一組取值的列表,在XML文件中設置的屬性值只能是這個列表中的某個值(枚舉)

<?xml version="1.0" encoding="GB2312" standalone="yes"?>

<!DOCTYPE 購物籃[

<!ELEMENT 肉 EMPTY>

<!ATTLIST 肉 品種 (雞肉 | 牛肉 |  豬肉 | 魚肉) "雞肉">

]>

<購物籃>

<肉 品種 =“魚肉”/>

<肉 品種 ="牛肉"/>

<肉/>

</購物籃>


屬性值類型--->ID

 


定義實體:

實體用於爲一段內容創建一個別名,以後在XML文檔中就可以使用別名引用這段內容了。

在DTD定義中,一條<!ENTITY...>語句用於定義一個實體。

實體可分爲兩種類型:引用實體和參數實體。


實體定義-->引用實體

引用實體主要在XML文檔中被應用

語法格式:

<!ENTITY 實體名稱 "實體內容" >:直接轉變成實體內容

引用方式:

&實體名稱:

舉例:

<!ENTITY copyright "I am a programmer">

....

&copyright;


實體定義--->參數實體



如果大家掌握了這些知識,就可以讀懂struts的.dtd文件了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章