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">
....
©right;
實體定義--->參數實體
如果大家掌握了這些知識,就可以讀懂struts的.dtd文件了