Transcript 投影片1
文件資料的物件化
文件的最基本資料就是字元,數個字元組合成一
個字,一些字組合成一個段落,數個段落組合成
一篇文件。
文件的內容就是一個樹狀結構,每一個文件內容
就是一個節點。
文件資料的樹狀結構
圖書產品目錄(BookList)的樹狀結構
一份圖書產品目錄(BookList)文件擁有很多本圖書
(Book)的資料,每一本圖書擁有下列基本項目
圖書編號(Code):圖書在出版社的編號。
圖書名稱(Title):圖書的書名。
圖書分類(Catalog):圖書所屬的分類。
作者清單(AuthorList):圖書的作者清單。
出版日(Pub_Date):圖書的出版日期。
價格(Price):圖書的定價。
作者清單是圖書作者,可能只有一位,也可能有很多位,每
一位作者的項目,如下所示:
作者(Author):圖書的作者,可能不只一位。
文件資料的樹狀結構
文件資料的樹狀結構
電腦間資料交換的種類
電腦儲存的資料,以內容來分可以分為兩種
結構性資料:資料本身已經是經過分析處理的,例如:資料
庫、專屬應用程式產生的交換檔案。例如:以分隔符號分隔
的文件內容。
非結構性的資料:非結構性的資料大都屬於文書處理建立的
文件檔案、電子郵件檔案和一些備忘錄的資料等。因為資料
內容並沒有一定的規則,這類資料在處理上有一些困難。
不論原來的資料格式是什麼,均能建立成樹狀結
構的資料,如此就有一種通用的標準進行資料的
交換,這就是XML文件。
HTML的基礎
「HTML」(HyperText Markup Language)標示語言
是一種文件編排語言,其主要的目的是編排文件
內容,以便漂亮的顯示文件內容。
HTML 使用的是SGML語法,(Standard Generalized
Markup Language)。
SGML是一種功能強大的文件標示、管理和編排語
言,早在1980年就已經公佈語言的草稿,在1986
年成為ISO標準的文件描述語言。
HTML的語法
HTML包含標籤和屬性,如下所示:
標籤(Tags):HTML標籤使用字串符號來標示文字內容需要使
用的編排格式,在標籤內的文字內容使用預設格式來進行編
排。
屬性(Attributes):每一個標籤可以擁有一些屬性,用來定義
文字內容的細部編排。
01: <HTML>
02: <HEAD>
03: <TITLE>一份電子郵件的內容</TITLE>
04: </HEAD>
05: <BODY>
06: <B>From: </B>[email protected]<BR>
07: <B>To: </B>[email protected]<BR>
08: <B>Subject: </B>測試郵件功能<BR>
09: <P>這是第一封郵件</P>
10: </BODY>
11: </HTML>
HTML的圖例
什麼是XML
「XML」(Extensible Markup Language)可擴展標示
語言也屬於一種標籤語言,XML 1.0版規格是在
1998年2月正式推出。
XML語法十分類似HTML,它屬於SGML的字集。
XML的目的並不是編排內容,而是用來描述資料。
它沒有預設標籤,使用者需要自己定義描述資料
所需的各種標籤。
01: <?xml version="1.0" encoding="Big5"?>
02: <email>
03:
<from>[email protected]</from>
04:
<to>[email protected]</to>
05:
<subject>測試郵件功能</subject>
06:
<body>這是第一封郵件</body>
07: </email>
XML文件的特點
XML文件擁有兩個特點如下所示:
良好格式(Well-Formed)
XML文件需要驗證(Validity)
XML命名的原則
XML名稱區分英文字母大小寫。
名稱可以是字母、「:」和「_」符號開頭,但是不能是數字
開頭的名稱。
除了名稱開頭字元外,名稱可以包含字母、數字、「-」、
「.」、「:」和「_」等特殊字元,只有XML的「<」、「>」、
「@」和「&」等特殊用途符號不可使用。
名稱不能包含空白字元,換句話說,名稱是一個連續字元的
字串。
XML的相關技術
文件資料驗證
DTD(Document Type Definition)
DTD就是SGML的語法檢查,XML 1.0版支援DTD驗證
DTD能夠幫助XML剖析器來解譯XML文件的內容
XML Schema Definition(XSD)
DTD雖然可以定義XML標籤和架構,不過它是使用和XML完全
不同的語法,而且缺乏擴充性。
軟體廠商Microsoft、Inso、ArborText和DataChannel提出一種
不同的檢查系統,也就是XML Schema。
顯示輸出和文件轉換
CSS(Cascading Style Sheets)
CSS並不是全新技術,HTML文件可以使用CSS重新定義標籤樣
式。在XML文件也一樣適用,可以用來定義XML標籤的顯示
樣式。
XSL/XSLT(Extensible Stylesheet Language)
XML預設的樣式語言是XSL,標準的樣式語言包含轉換和格式
化資料的功能,簡單的說,XSL包含轉換和格式化XML文件的
語法。
XML資料查詢
XPath(XML Path Language)
XPath語言和XQuery語言使用相同的資料模型(Data Model)。
Path本身就是XSLT技術的組成元素,而且在XQuery和XPointer
都會使用XPath位置路徑(Location Path)。
XQuery(XML Query Language)
XQuery是一種功能強大和容易使用的XML資料查詢語言,如
同關聯式資料庫提供的標準SQL查詢語言,XQuery就是XML資
料的查詢語言。
XML資源連結
XLink(XML Linking Language)
XLink是一種在XML文件建立超連結的語言,能夠連結一系列
XML文件的資源。
XML文件的任何元素都可以擁有XLink行為,用來連結URI資源,
URI可以是整份XML文件,或是使用XPointer指出的部分內容。
XPointer(XML Pointer Language)
XPointer能夠連結XML文件的指定部分,它不是用來查詢XML
文件,而是使用XPath位置路徑在XML文件內進行定址,以便
作為XLink連結部分內容的依據。
XML的軟體需求
XML剖析器(Parser)
剖析是指依照標籤解讀文件,電腦本身雖然看不懂XML文件
的內容,但是透過標籤的幫助,剖析器就可以分析文件的內
容來取出所需的資訊。
MSXML Parser、Apache Xerces、Oracle XML Parser
XML驗證工具
XML驗證工具能夠檢查XML文件是否是良好格式文件,並且
支援DTD或XML Schema來驗證XML文件
Online Xhtml Validator、Topologi Schematron Validator
XML的軟體需求
XML編輯工具
可以使用現有HTML編輯工具或Windows的記事本來編輯XML
文件。
XML Spy、Stylus Studio、XMLwriter、<oXygen/> XML Editor &
XSLT Debugger
XML瀏覽工具
XML瀏覽工具能夠顯示XML文件,並且配合XSLT和CSS技術輸
出顯示XML文件內容,微軟Internet Explorer可以如同瀏覽
HTML文件一般的瀏覽XML文件。
XML文件範例
01: <?xml version="1.0" encoding="Big5"?>
02: <!--網頁製作徹底研究系列-->
03: <booklist>
04:
<book>
05:
<code>F8915</code>
06:
<title>ASP網頁製作徹底研究</title>
07:
<authorlist>
08:
<author>陳會安</author>
09:
</authorlist>
10:
<price>580</price>
11:
</book>
12:
<book>
13:
<code>F8916</code>
14:
<title>ASP與IIS 4/5網站架設徹底研究</title>
15:
<authorlist>
16:
<author>陳會安</author>
17:
</authorlist>
18:
<price>550</price>
19:
</book>
20: </booklist>
XML文件結構
文件宣告:第1列就是XML文件的宣告,它定義
XML文件的版本和使用的字碼集,以此例為1.0版,
使用中文Big5字碼。
根標籤:第3列為XML文件的根標籤<booklist>,這
也就是樹狀結構的根節點。
子元素:在第4~19列就是根元素的子元素book,
而第5~10列和第13~18列為book元素的子元素code、
title、authorlist和price。
元素(Element)與標籤(Tag)
標籤(Tag):XML能夠自己定義標籤,一個標籤是
用來標示文件的部分內容,例如:標籤<code>、
<title>和<price>等,標籤分為開頭標籤<code>和
結尾標籤</code>。
元素(Element):XML元素為整個文件的主要架構,
元素的本身可以是標籤加上文字內容,或是元素
內包含有其它的元素,元素是一個完整的項目,
它包含標籤、屬性、開始標籤和結尾標籤內的文
字內容和結尾標籤。
元素(Element)
XML元素是由開始和結尾標籤構成,其中包含文
字內容,如下所示:
<code>F8915</code>
此外XML元素允許包含其它的子元素,如下所示:
<book>
<code>F8915</code>
<title>ASP網頁製作徹底研究</title>
<authorlist>
<author>陳會安</author>
</authorlist>
<price>580</price>
</book>
屬性(Attribute)
在開始標籤的標籤名稱後,可以替標籤加上屬性
名稱,每一個屬性都擁有屬性名稱和值,而且值
需要使用引號括起,如下所示:
<book code="F8915">
上述<book>標籤擁有code屬性。
實體參考(Entity Reference)
在XML有五個預先保留的實體參考
例如:
<order>書價 < 500</order>
標籤內容有「<」符號,我們需要使用實體參考
<order>書價 < 500</order>
實體參考
<
>
&
'
"
符號
<
>
&
'
"
註解(Comment)
XML的註解和HTML是一樣的,都是由「<!-」開始
和「-->」結尾,如下所示:
<!– The comments come here -->
註解並不屬於XML文件的內容,XML剖析器並不會
處理註解文字。
CDATA區塊(CDATA Section)與PCDATA
CDATA區塊告訴XML剖析器不用處理此區塊的內容,
它是位在「<![CDATA[」字串和「]]>」字串間的文
字內容,如下所示:
<script>
<![CDATA[
function add(a, b)
{
return a+b
}
]]>
</script>
PI(Processing Instructions)
PI允許XML文件包含應用程式的指令,例如:在
XML文件的開頭宣告就是一個PI,這些資訊告訴
XML剖析器如何處理XML文件,如下所示:
<?xml version="1.0" encoding="Big5"?>
上述PI如同註解一般並非XML文件的內容,不過不
同註解,XML剖析器會將這些資料送給應用程式。
使用IE瀏覽XML文件
XML文件的宣告
版本屬性version
<?xml version="1.0"?>
字碼集屬性encoding
<?xml version="1.0" encoding="Big5"?>
雖然Internet Explorer 支援Big5,但是並不是所有的XML工具都支援
Big5,此時可以使用UTF-8和UTF-16的「統一字碼」(Unicode) 。
獨立文件屬性standalone
standalone屬性設定是否同時使用外部的DTD檔案
<?xml version="1.0" encoding="Big5" standalone="no"?>
Standalone的屬性值:
Yes:不使用外部的DTD檔案。
No:使用外部的DTD檔案。
XML標籤
開始標籤
<tag_name attribute_name="attribute_value">
結尾標籤
</tag_name>
空元素(Empty Element)標籤
如果開始標籤和結尾標籤中並沒有任何的內容,我們稱為空
元素標籤,它有兩種寫法
<tag_name />
<tag_name></tag_name>
建立XML文件
XML文件需要有根標籤
XML的標籤大小寫不同
所有元素需要有結尾標籤
巢狀XML元素不可以重疊
屬性值需要有引號
正確的使用元素和屬性
屬性值不能包含多個值,但是元素可以。
屬性無法描述文件的結構,元素可以建立文件的
樹狀結構。
屬性在維護上和擴充上不如元素,過多的屬性將
造成維護上的困擾。
元素能夠建立成樹狀結構,在程式設計上比使用
屬性在處理上更為簡單。
名稱空間
名稱空間(Namespace)是為了解決標籤名稱重複的
問題,它提供標籤或屬性更進一步的辨識資訊。
XML文件標籤和屬性的完整名稱,如下所示:
<名稱空間字頭:標籤名稱>
標籤完整名稱分為名稱空間的「字頭名稱」
(Prefix),這是用來代替名稱空間字串「URI」
(Uniform Resource Identifier),和標籤名稱,雖然
後面標籤的名稱相同,只要前面的名稱空間不同,
它們就屬於不同的標籤,如下所示:
<bk:title>
<jb:title>
名稱空間的宣告
名稱空間的語法稱為URI,這是一個字串用來識別
抽象或實際的資源,例如:網頁或下載檔案的網
址。基本上URI擁有兩種格式:
URL(Uniform Resource Locator):這是使用網址名稱和路徑,
因為公司網址的網域名稱是唯一的,換句話說,名稱空間定
義的標籤,就成為獨一無二的標籤,如下所示:
http://www.company.com/
http://www.company.com/xml/
URN(Uniform Resource Names):URN宣告的名稱空間的格式,
如下所示:
urn:<名稱空間識別>:<名稱空間的特殊字串>
預設宣告(Default Declaration)
在同一個XML元素的範圍內,宣告預設的名稱空
間,只需在根元素宣告名稱空間,其格式如下所
示:
xmlns:prefix="URI“
指令格式在屬性xmlns後額外加上「:」號後的字
頭名稱,在XML文件根元素使用字頭名稱代替名
稱空間,其子元素都屬於同一個名稱空間。