XML 簡介

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

description

XML 簡介. Extensible Markup Language 人類、機器皆可讀懂的標籤 XML 的可攜性 跨平台 提供長期 data 保存的格式 理想的檔案交換格式. XML v.s. HTML. XML 有嚴格的語法規定 HTML 因長期使用而存在太多不合規定的語法 < p>() XML 的標籤表達文件結構及語意 HTML 的標籤表達文件的版面配置 Xml Html . XML 的組成. 由標籤組成 - PowerPoint PPT Presentation

Transcript of XML 簡介

Page 1: XML 簡介

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

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

理想的檔案交換格式

Page 2: XML 簡介

XML v.s. HTML

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

<p>(</p>)

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

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

Page 3: XML 簡介

XML的組成 由標籤組成

<?xml version = “1.0”?>

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

<message id=“8942020”>

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

</message>

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

Page 4: XML 簡介

Parsers and Well-Form XML Documents

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

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

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

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

Page 5: XML 簡介

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 簡介

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

Page 7: XML 簡介

XML Tree

<person>

<name>

<first_name>purplesea</first_name>

<last_name>Huang</last_name>

</name>

<profession>programer</profession>

</person>

Page 8: XML 簡介

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

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

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

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

Page 9: XML 簡介

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 簡介

Document Type Definition(DTD)

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

Page 11: XML 簡介

如何使用 DTD

開始 <! DOCTYPE 結尾 >

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

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

]><mybook>java</mybook>

Page 12: XML 簡介

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 簡介

3. 同時使用 internal and external subset

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

<! Element title (#PCDATA) >

]>

…….

Page 14: XML 簡介

Element Type Declarations

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

<! ELEMENT title (#PCDATA)>

<! ELEMENT price (#PCDATA)>

<! ELEMENT author (#PCDATA)>

Page 15: XML 簡介

1.#PCDATA

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

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

Page 16: XML 簡介

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 簡介

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 簡介

2.5empty

* 在 dtd 裡 <! Element image Empty>

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

2.6any

* 在 dtd 裡 <! Element book ANY>

Page 19: XML 簡介

Attribute Declarations

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

<!ATTLIST X Y CDATA #REQUIRED>

1.CDATA

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

* 和 XML 裡的 CDATA 些許不同

Page 20: XML 簡介

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 簡介

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

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

Page 22: XML 簡介

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 簡介

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 簡介

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 簡介

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 簡介

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>