7月 29, 2011

XML XQuery DOM

[ XML, eXtensible Markup Language ]

一個容易理解閱讀,同時也能讓電腦進行解析辨識的語言。

整個XML文件可以視為一個樹狀結構的文件,文件實體(document entity)視為根節點
加上其他的宣告與標籤稱之為此XML文件的物質結構(Physical Structures),其中須
注意其根節點與根標籤是不同的。

XML的前身是SGML,但是SGML是一種非常嚴謹的檔案描述法,導致過於龐大複雜,
難以理解和學習,進而影響其推廣與應用。

專家們使用SGML精簡製作,並依照HTML的發展經驗,產生出一套使用上規則嚴謹,
但是簡單的描述資料語言:XML

XML被廣泛用來作為跨平台之間互動數據的形式,主要針對數據的內容。
XML設計用來傳送及攜帶資料資訊,不用來表現或展示資料,HTML語言則用來表現資料,
所以XML用途的焦點是它說明資料是什麼,以及攜帶資料資訊。

[ XHTML, eXtensible HyperText Markup Language ]

表現方式與超本文標記語言(HTML)類似,不過語法上更加嚴格。
HTML語法要求比較鬆散,這樣對網頁編寫者較方便,但對於機器來說,語言的語
法越鬆散,處理起來就越困難。

XHTML是一個基於XML的置標語言,看起來與HTML有些相象,本質上說,
XHTML是一個過渡技術,結合了XML(有幾分)的強大功能及HTML(大多數)的簡單特性。
XHTML 就是一種XML應用。它採用XML的DTD文件格式定義


當XML越來越成為一種趨勢,就出現了這樣一個問題:
「如果我們有了XML,我們是否依然需要HTML?」

結論是:需要。因為大量的人們已經習慣使用HTML來作為他們的設計語言。
而 XHTML是一種為適應XML而重新改造的HTML。

XHTML 解決HTML語言所存在的嚴重制約其發展的問題:
HTML 發展到今天存在三個主要缺點:
1. 不能適應現下越多的網路設備和應用的需要,比如手機、PDA。
2. 由於HTML代碼不規範,瀏覽器需要足夠智能和龐大才能夠正確顯示。
3. 數據與表現混雜,這樣你的頁面要改變顯示,就必須重新製作HTML

XHTML的優點是,嚴謹:
當前網路上的 HTML 的糟糕情況讓人震驚,早期的瀏覽器接受私有的HTML標籤,
所以人們在頁面設計完畢后必須使用各種瀏覽器來檢測頁面,看是否兼容。



[ XML DOM , Document Object Models ]

XML DOM 是用於獲取、更改、添加或刪除 XML 元素的標準。
DOM 讓您以程式設計方式讀取、操作和修改 XML 文件。
XML 文檔中的每個成分都是一個節點。

[XQuery]

XQuery 相對於 XML,等同於 SQL 相對於數據庫。XQuery 被設計用來查詢 XML 數據。
XQuery 是用來從 XML 文件找尋、提取元素及屬性的語言。

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

doc("books.xml") ... 用於打開 "books.xml" 文件

XQuery 使用 XPath 來選取 XML 文檔中的節點或節點集。

下面的路徑表達式用於在 "books.xml" 文件中選取所有的 title 元素:
doc("books.xml")/bookstore/book/title ,執行結果:

<title lang="en">Everyday Italian</title>
<title lang="en">Learning XML</title>

在 XQuery 中提供了 FLWOR 語法,讓查詢功能更強大

FLWOR 是 "For, Let, Where, Order by, Return" 字母縮寫。

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title

for 語句把 bookstore 元素下的所有 book 元素提取到名為 $x 的變量中。
where 語句選取了 price 元素值大於 30 的 book 元素。
order by 語句定義了排序次序。將根據 title 元素進行排序。
return 語句規定返回什麼內容。在此返回的是 title 元素。
let 針對特定反覆運算的給定變數指派值 (此例中未用到)

沒有留言:

張貼留言