26
XML 簡簡 Extensible Markup Language 人人 人人人人人人人人人 XML 人人人人 人人人 人人人人 data 人人人人人 人人人人人人人人人

XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

Page 1: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

XML簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性

跨平台 提供長期 data 保存的格式

理想的檔案交換格式

Page 2: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

XML v.s. HTML

XML 有嚴格的語法規定 HTML 因長期使用而存在太多不合規定的語法

<p>(</p>)

XML 的標籤表達文件結構及語意 HTML 的標籤表達文件的版面配置

Xml <store></store> Html <td></td>

Page 3: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

XML的組成 由標籤組成

<?xml version = “1.0”?>

<!- - 這裡是註解 - ->

<message id=“8942020”>

<data>Hello! XML!!</data>

</message>

沒有固定的 tag 和 elements <java></java> < 爪哇 ></ 爪哇 >

Page 4: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Parsers and Well-Form XML Documents

Parser 是用來解析 XML 文件的軟體 Well-formed :滿足 XML 語法,能順利被

parser 解讀 Html 存在太多不合規定的寫法,設計瀏覽器的程

式設計師必須花很多心力處理這種情況 <p>

XML 文件必須格式正確, Parser 才能順利解讀

Page 5: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Well-formed XML

每個起始標籤一定要有個相對應的結束標籤 ex: <data></data> 空元素 <br/> <br></br>

元素不可以重疊 Ex: <a><b></a></b>

屬性值必須加引號 Ex:<person id=“8942020”>purplesea</person>

元素或屬性裡不能有沒有跳脫的 < 或 & 符號 <SA&D></SA&D> <SA&amp;D> </SA&amp;D>

Page 6: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

XML標籤語法 < 元素 > character data </ 元素 > 大小寫差異性 空元素 Well-formed

Page 7: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

XML Tree

<person>

<name>

<first_name>purplesea</first_name>

<last_name>Huang</last_name>

</name>

<profession>programer</profession>

</person>

Page 8: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

CDATA & 註解 之間的東西會被視為字元資料

<![CDATA & 第一行 & 第二行 ]]>

不可在標籤內使用” ]]>” 字元 因其為結束符號註解寫法:

<!-- 這裡是註解 - -> 不可用 ---> 當作結束符號

Page 9: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Namespaces

EX:

<subject>Math</subject>

<subject>Thrombosis</subject>

目的:解決名稱衝突 用 URI 確保相同名稱產生的混淆

<rdf:RDF xmlns:rdf=“http://www.w3.org/TR/REC-rdf-syntax#”>

修改 :

<rdf:subject ></rdf:subject>

<medical:subject></medical:subject>

Page 10: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Document Type Definition(DTD)

XML 除了 well-formed ,必須搭配著 DTD 清楚定義文件的格式。在資料互相傳送的過程中, parser 可以根據 DTD 瞭解格式是否確 。

Page 11: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

如何使用 DTD

開始 <! DOCTYPE 結尾 >

1.internal subset *在xml裡<? xml verdion=”1.0” encoding=”Big5” ?>

<! DOCTYPE mybook [ <! ELEMENT mybook(#PCDATA)>

]><mybook>java</mybook>

Page 12: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

2.external subset將 DTD 存到一個副檔名為 .dtd 的存文字檔中* 在 xml 裡<? xml verdion=”1.0” encoding=”Big5” ?>

<! DOCTYPE myMessage SYSTEM “mybook.dtd”>

<myMessage>

<message>welcome to xml</message>

</myMessage>

* 在 mybook.dtd 裡 <! ELEMENT myMessage (message)>

<! ELEMENT message(#PCDATA)>

Page 13: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

3. 同時使用 internal and external subset

* 在 xml 裡<? xml version=”1.0” encoding=”Big5” ?><! DOCTYPE books SYSTEM “myMessage.dtd”[

<! Element title (#PCDATA) >

]>

…….

Page 14: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Element Type Declarations

element 之後放的是元素名稱,接著是內容* 在 dtd 裡<! ELEMENT book (title,price,author)>

<! ELEMENT title (#PCDATA)>

<! ELEMENT price (#PCDATA)>

<! ELEMENT author (#PCDATA)>

Page 15: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

1.#PCDATA

<! ELEMENT title (#PCDATA)>1.1 指的就是 Parsable Character Data 是指可以

讓解析器去解讀 1.2 如果遇到需要在裡面使用 < > & 需要 跳脫 ,要使用 &lt ; &gt ; &amp

Page 16: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

2. 子元素2.1comma( , )

<! ELEMENT book (title,price,author)>

2.2pipe( | )

<! ELEMENT classroom (teacher | student)>

2.3 元素出現的數量 ? * +

( + ) 一個到無限多個<! ELEMENT album (song+)>

( * ) 零個到無限多個<! ELEMENT library (book*)>

( ? ) 可以有零個或一個 <! ELEMENT seat (person?)>

Page 17: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

2.4mixed

* 在 dtd 裡<! Element myMessage(#PCDATA|message)>

<! Element message (#PCDATD)>

* 在 xml 裡<myMessage>Here is some text,some

<message>other text</message>and

<message>even more text</message>.

</myMessage>

Page 18: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

2.5empty

* 在 dtd 裡 <! Element image Empty>

* 在 xml 裡 <image></image> 或是 <image/>

2.6any

* 在 dtd 裡 <! Element book ANY>

Page 19: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Attribute Declarations

* 在 dtd 裡 <!ELEMENT X (#PCDATA)>

<!ATTLIST X Y CDATA #REQUIRED>

1.CDATA

指的是說可以包含任何一種文字除了 (<>& ‘ “)

* 和 XML 裡的 CDATA 些許不同

Page 20: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

2.#REQUIRED 是指必須提供一個屬性給 x

* 在 dtd 裡<! ELEMENT book (price)>

<! ELEMENT price (#PCDATA)>

<!ATTLIST price currency CDATA #REQUIRED>

* 在 xml 裡<book>

<price currency=“dollar”>java</price>

</book>

Page 21: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

3.#IMPLIED 是指不一定要提供屬性給ELEMENT

4.#FIXED 是指一定要使用原先所提供的值<! ATTLIST address zip #FIXED “804”>

Page 22: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Attribute Type

ID IDREF

IDREF的值一定要和 ID一樣ID的值一定不能是數字

<! ATTLIST shipping shipID ID #REQUIRED ><!ATTLIST book shippedBy IDREF #IMPLIED >

< shipping shipID=“suan” ><shipping shipID=“_123456”> 在數字之前加上底線<book shippedBy=“suan”>

Page 23: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Attribute Type

ENTITY 先宣告 ENTITY的值,然後在 attribute後面加上

ENTITY替代那個值。<! ENTITY city SYSTEM “tour.html” NDATA xtml >

<! ATTLIST company tour ENTITY #REQUIRD >

<company tour=“city”>…</company> O

<company tour=“country”>…</company> X

Page 24: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Attribute Type

NMTOKEN(name token) 允許屬性的值有特殊的符號,例如 --<! ATTLIST sportClub phone NMTOKEN #REQUIRED >

< sportsClub phone = “555-111-2002” >

Enumerated Attribute Types 列舉<! ATTLIST person gender ( M|F ) “F” >

<! ATTLIST person gender ( M|F ) #IMPLIED >

<! ATTLIST data day ( 1 | 2 | 3 | 4….| 31 ) #REQUIRED>

Page 25: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Conditional Sections INCLUDE IGNORE判斷是要用哪一個 element現在是用 include的這個

<! [ INCLUDE [<! ELEMENT message (approved, signature) >

]]><! [ IGNORE [

<! ELEMENT message (approved,reason, signature) >]]>

<message><approved flag=“true” /><signature>Chairman</signature>

</message>

Page 26: XML 簡介 Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式

Whitespace Characters

Whitespace 處理空白鍵DTD

<! DOCTYPE whitespace [<! ELEMENT whitespace (hasDATA, hasID, hasNMTOKEN, hasEnumeration, hasMixed )><! ATTLIST hasCDATA cdata CDATA #REQUIRED >

XML

<whitespace><hasCDATA cdata=“ simple cdata “ /><hasID = “ i20” />

…</whitespace>