單元1-3: XML基本語法與結構 王豐緒 銘傳大學資訊工程學系
單元目標 了解XML的語法與結構 能夠撰寫一份合乎語法的XML文件 能夠驗證XML文件的合法性
標記語言的學習 該如何學習一套標記語言呢? 如何區分標記和內容? 哪些標記是被允許的? 哪些標記是必須的? 不同標記(示)的意義是什麼?
一個XML文件範例 <?xml version = “1.0” ?> <!-- Intro.xml --> <!-- Simple Introduction to XML markup --> <myMessage> <message>Welcome to XML! </message> </myMessage> XML標示 註解標示 標記(元素) 資料
剖析(Parse)XML文件 驗證XML文件:最簡單的方式是利用IE瀏覽器 請將下列兩個例子分別用IE瀏覽器打開看看 範例 2 範例 1 <?xml version = “1.0” ?> <!-- Intro.xml --> <!-- Simple Introduction to XML markup --> <myMessage> <message>Welcome to XML! </message> </myMessage> 範例 2 範例 1 <?xml version = “1.0” ?> <!-- Intro.xml --> <!-- Simple Introduction to XML markup --> <myMessage> <message>Welcome to XML! </message> </myMESSAGE>
所以了解XML標記的相關規範 才能寫出正確的XML文件! 範例 2 範例 1 所以了解XML標記的相關規範 才能寫出正確的XML文件! <?xml version = “1.0” ?> <!-- Intro.xml --> <!-- Simple Introduction to XML markup --> <myMessage> <message>Welcome to XML! </message> </myMESSAGE>
XML的語法 元素(就是標記)(Element) 屬性(Attribute) 處理指令(Processing Instruction) 註解(Comment) 文字資料 實體參用(Entity Reference) 內建實體字元(Built-in Entities) CDATA段(CDATA Section)
元素(Element) 元素(又稱標記)是資料的收納器(container) 元素的內容可以包含 語法 字元資料 (字元內容) 其他元素或標示(註解, PIs, 實體參照)(元素內容) 字元與其他元素 (混合內容) 語法 <開始標記>… </結束標記> 空元素:<標記名稱/> 沒有內容但可以有屬性
一些元素的例子 只有包含文字的元素 只有包含元素的元素 包含混合內容的元素 空元素 例子:<作者>李四端</作者> 只有包含元素的元素 例子:<作者><姓>李</姓><名>四端</名></作者> 包含混合內容的元素 例子:對<段落>元素而言, <段落> <發明人>李四端</發明人>發明了一種<發明物>語言翻譯機</發明物>可以<用途>跟外星人溝通</用途> </段落> 空元素 <生日 /> 那生日的資訊可以如何表達呢?屬性
元素的命名規則 名稱須以「字母」 、冒號(:) 、或底線「_」為首 其餘文字可以用「字母」、「數字」、底線「_」、連字符號「-」以及句點「.」組成 不能使用空白 元素有分大小寫
正確的元素命名範例 <Person> <_Person> <Home_City> <Id-Number> <Id.Number> <Class2938> <書籍>
錯誤的元素命名範例 <Home City> <.X509> <-Person> <2938Class> <Id#Number> <Id^Number>
屬性(Attribute) 每個元素可以附帶一些屬性跟屬性值 語法 同樣的屬性(不管值是否相同)不可重複出現在同一元素中 attr_name = “attr_value” attr_name = ‘attr_value’ 例子:<生日 年=“59” 月=“09” 日=“30” /> 同樣的屬性(不管值是否相同)不可重複出現在同一元素中 例如:<img src=“a.jpg” src=“b.jpg” />
處理指令(Processing Instruction) 透過剖析器可以傳遞資訊給特定的應用程式 語法 <?target …instruction data here … ?> target:有效的XML名稱 Instruction data: 任何有效字元的字串 例子: <?xml-stylesheet type=“text/xsl” href=“test.xsl” ?> IE瀏覽器透過其內建的xml剖析器,可以知道該xml文件要用test.xsl來進行轉換
註解(Comments) <!-- … comments here … --> 註解規則 註解的內容不會被剖析器處理 註解可以跨列使用 註解可以包含標籤 註解不可以放在文件的第一行 註解不可以被包含在標籤之中 註解中不可以有「--」字串
字元集(Character Set) XML文件除了可以包含英數字元, CR, LF等字元外, 還可以包含Unicode字元 XML文件的內容需要分辨標記文字(markup text)與一般字元資料 (character data) 標記是由<與>所含括的文字,例如<xyz>,</xyz>
Unicode字元參照 以10進位或16進位輸入特殊字元 10進位: 16進位: 範例 &#NNNNN; &#xhhhh; ©, © © ®, ®
內建實體字元 元素或屬性值的文字內容 不可包含<, >, “, ‘, & 解決方案一 &, <, >, “, ‘:必須以實體參照方式輸入: &: & <: < >: > “: " ‘: ' 解決方案二 使用CDATA段
CDATA段 (section) 讓所包含的文字字元被視為純粹文字內容, 而不會被進一步處理 語法 例子 <![CDATA[ for (i=1; i < 10; i++) ]]> 注意:CDATA段也是屬於文字資料,所以以下資料是相同的: for (i=1; i < 10; i++)
XML文件的結構 XML文件 前言(prolog) 主體(body) 結語(epilog) <?xml version=“1.0” ?> <!-- …..comments … --> <!DOCTYPE books SYSTEM “http://xxx.xxx.xxx/books.dtd > <!... Other comments and processing instruction allowed here > 主體(body) <books> <book category=“reference” > <author>XXXX</author> </book> …. </books> 結語(epilog) <!... Other comments and processing instruction allowed here >
再談XML文件的剖析
XML文件的剖析 XML 剖析器 XML結構樹 XML文件 XML文件 前言(prolog) <?xml version=“1.0” ?> <!-- …..comments … --> <!DOCTYPE books SYSTEM “http://xxx.xxx.xxx/books.dtd > <!... Other comments and processing instruction allowed here > 主體(body) <books> <book category=“reference” > <author>XXXX</author> </book> …. </books> 結語(epilog) 文件實體 (document entity) 前言 文件元素 element) 元素樹 (element tree) 結語 Only one! XML 剖析器 XML結構樹 XML文件
XML文件結構樹 文件實體 (document entity) 前言 文件根元素只能有一個! 文件根元素 (root element) 子元素樹 (element subtree) 結語
文件元素樹 根元素 (root element) 子元素是有順序的 屬性是沒有順序的 元素 屬性 (element) (attributes) 子元素 (sub- element) 文字字元 (characters) 處理指令 (PI) CDATA字元 (CDATA) 註解 (comments)
XML文件樹範例 書籍資料 名稱=“XML程式設計” 書本 作者 王小明 <書籍資料> <作者>王小明</作者> <章 順序=“第一章” 名稱=“XML的用途”> <節 順序=“1-1” 名稱=“XML簡介” > <節 順序=“1-1-1” 名稱=“XML意義與特色” /> <節 順序=“1-1-2 “ 名稱=“XML語法與結構” /> <節 順序=“1-1-3” 名稱=“XML的應用” /> </節> </章> <章 順序=“第二章” 名稱=“XML文件資訊架構” > <節 順序=“2-1” 名稱=“DTD” /> <節 順序=“2-2” 名稱=“XML Schema” /> … </書本> </書籍資料> 順序=“第一章” 名稱=“XML的用途” 章 順序=“1-1” 名稱=“XML簡介” 節 順序=“1-1” 名稱=“XML意義與特色” 節 順序=“1-2” 名稱=“XML語法與結構” 節 順序=“1-3” 名稱=“XML的應用” 節
Well-Formed XML 格式正確的XML文件 可以通過XML剖析器的均稱為格式正確的XML文件 只有一個根元素
單元複習 在本單元中,我們提到了 XML的語法與結構 如何撰寫一份合乎語法的XML文件 如何利用IE瀏覽器,檢閱XML文件的合法性 文件剖析:從文件變成文件樹 如何撰寫一份合乎語法的XML文件 如何利用IE瀏覽器,檢閱XML文件的合法性