J2EE複習(二)XML

XML(eXtensible Markup Language)簡介
XML 可擴展標記語言
XML是一種您能夠用來建立本身的標記的標記語言。
XML由萬維網協會(W3C)建立
   XML和Html比較
比較內容                     HTML                                                        XML

可擴展性                     不具備擴展性                                        是元標記言,可用於定義新的標記語言

側重點                         側重於如何表現信息                           側重於如何結構化地描述信息

語法要求                     不要求標記的嵌套、配對等,          嚴格要求嵌套、配對,並遵循DTD
                                      不要求標記之間具備必定的順序      的樹形結構

可讀性及可維護性    難於閱讀、維護                                    結構清晰,便於閱讀、維護

數據和顯示的關係    內容描述與顯示方式整合爲一體      內容描述與顯示方式相分離

編輯及瀏覽工具         已有大量的編輯、瀏覽工具              編輯、瀏覽工具
  XML優點
數據重用
數據和表示分離
可擴展性
語意信息
 
  XML 聲明 

 

XML聲明通常是XML文檔的第一行
XML聲明由如下幾個部分組成:
version - -文檔符合XML1.0規範
encoding - -文檔字符編碼,默認爲"UTF-8"網絡

遵循以下規則的XML文檔稱爲結構完整:
語法規範
1.必須有XML聲明語句工具

<?xml version="1.0" encoding=「GBK"?>

2.必須有且僅有一個根元素
3.標記大小寫敏感
4.屬性值用引號
5.標記成對
6.空標記關閉
7.元素正確嵌套
元素語法
1.名稱中能夠包含字母、數字或者其它字符
2.名稱不能以數字和"_"(下劃線)開頭
3.不能以XML/xml/Xml/…開頭
4.名稱中不能含空格
5.名稱中不能含冒號(注:冒號留給命名空間使用)編碼

文本內容PCDATA
XML支持Unicde字符集,所以能夠在文本中包含字母/數字/標點/符號等。
注意:由於XML使用<,>,和&界定標記,若是在文本中包含有這些字符,必須使用實體替代。spa

CDATA
1.在特殊的標記CDATA下,全部的標記、實體引用都被忽略,而被XML處理程序一視同仁地看成字符數據看code

待。CDATA的形式:〈![CDATA[文本內容]]〉
2.用於把整段文本解釋爲純字符數據而不是標記的狀況。包含大量<、>、&或者"字符。CDATA節中的全部xml

字符都會被看成元素字符數據的常量部分,而不是XML標記。
3.能夠輸入任意字符(除]]>外)
4.不能嵌套使用CDATA文檔

CDATA與PCDATA
PCDATA是被解析器解析的文本。文本內的標籤會被看成標記,實體會被展開。
CDATA是不被解析器解析的文本。文本內的標籤不會被看成標記,實體不會被展開。get

XML註釋
註釋內容中不要出現--;
不要把註釋放在標記中間;it

<Name <!--the name-->>TOM</Name>

註釋不能嵌套;
能夠在除標記之外的任何地方放註釋。io

XML屬性
1.屬性值用雙引號(")或單引號(')分隔(若是屬性值中有',用"分隔;有",用'分隔)
2.一個元素能夠有多個屬性,它的基本格式爲:<元素名 屬性名="屬性值">
3.特定的屬性名稱在同一個元素標記中只能出現一次
4.屬性值不能包括<, >, &

XML文檔中的屬性有兩個規則:
屬性必須有值
那些值必須用引號括起。
您可使用單引號,也可使用雙引號,但要始終保持一致。

命名空間---namespace
爲XML中的元素設定一個惟一的標識名稱
與URI結合來定義一個惟一標識
去除了XML文件中可能存在的元素名重疊的問題

DOCTYPE
文檔類型聲明,緊跟XML聲明以後,包含全部實體聲明語法:

<?xml version="1.0"?>
<!DOCTYPE  根元素標記名 [
    <!--實體聲明-->
]>

實體引用
爲了不把字符數據和標記中須要用到的一些特殊符號相混淆,XML還提供了一些有用的實體引用。
做用:避免重複輸入 ;

<!DOCTYPE Book(根元素)[     
<!ENTITY chapter1(實體名) "玄幻小說"(實體內容)>
<!ENTITY chapter2 "電影記錄">
]>

引用已定義的實體:&實體名;

內部的 DOCTYPE 聲明
假如 DTD 被包含在您的 XML 源文件中,它應當經過下面的語法包裝在一個 DOCTYPE 聲明中:

<!DOCTYPE 根元素 [元素聲明]>帶有 DTD 的 XML 文檔實例(請在 IE5 以及更高的版本打開,並選擇查看源代碼):

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

以上 DTD 解釋以下:
!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。

!ELEMENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"

!ELEMENT to (第四行)定義 to 元素爲 "#PCDATA" 類型

!ELEMENT from (第五行)定義 frome 元素爲 "#PCDATA" 類型

!ELEMENT heading (第六行)定義 heading 元素爲 "#PCDATA" 類型

!ELEMENT body (第七行)定義 body 元素爲 "#PCDATA" 類型
外部文檔聲明
假如 DTD 位於 XML 源文件的外部,那麼它應經過下面的語法被封裝在一個 DOCTYPE 定義中:

<!DOCTYPE 根元素 SYSTEM "文件名">這個 XML 文檔和上面的 XML 文檔相同,可是擁有一個外部的 DTD: (在 IE5 中打開,並選擇「查看源代碼」命令。)

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>


聲明一個元素
在 DTD 中,XML 元素經過元素聲明來進行聲明。元素聲明使用下面的語法:

 <!ELEMENT 元素名稱 類別>
 <!ELEMENT 元素名稱 (元素內容)>

空元素:經過類別關鍵詞EMPTY進行聲明:

 <!ELEMENT 元素名稱 EMPTY>

只有 PCDATA 的元素:經過圓括號中的 #PCDATA 進行聲明:

 <!ELEMENT 元素名稱 (#PCDATA)>

帶有任何內容的元素:經過類別關鍵詞 ANY 聲明的元素,可包含任何可解析數據的組合:

 <!ELEMENT 元素名稱 ANY>

帶有一個或多個子元素的元素:經過圓括號中的子元素名進行聲明:

 <!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>

<!ELEMENT note (to,from,heading,body)>當子元素按照由逗號分隔開的序列進行聲明時,這些子元素必須按照相同的順序出如今文檔中。在一個完整的聲明中,子元素也必須被聲明,同時子元素也可擁有子元素。

聲明只出現一次的元素

 <!ELEMENT 元素名稱 (子元素名稱)>
 <!ELEMENT note (message)>

上面的例子聲明瞭:message 子元素必須出現一次,而且必須只在 "note" 元素中出現一次。

聲明最少出現一次的元素

 <!ELEMENT 元素名稱 (子元素名稱+)>

聲明出現零次或屢次的元素

 <!ELEMENT 元素名稱 (子元素名稱*)>

 聲明出現零次或一次的元素

  <!ELEMENT 元素名稱 (子元素名稱?)>

聲明「非.../既...」類型的內容:

 <!ELEMENT note (to,from,header,(message|body))>

上面的例子聲明瞭:"note" 元素必須包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
聲明混合型的內容:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

上面的例子聲明瞭:"note" 元素可包含出現零次或屢次的 PCDATA、"to"、"from"、"header" 或者 "message"。

 

XML Schema 簡介
1.XML Schema 是基於 XML 的 DTD 替代者。
2.XML Schema 可描述 XML 文檔的結構。
3.XML Schema 語言也可做爲 XSD(XML Schema Definition)來引用。
4.XML Schema 是 DTD 的繼任者
XML Schema 很快會在大部分網絡應用程序中取代 DTD,理由以下:
1.XML Schema 可針對將來的需求進行擴展
2.XML Schema 更完善,功能更強大
3.XML Schema 基於 XML 編寫
4.XML Schema 支持數據類型
5.XML Schema 支持命名空間

<schema> 元素是每個 XML Schema 的根元素:

<?xml version="1.0"?>

<xs:schema>

...
...

</xs:schema>

相關文章
相關標籤/搜索