XML----eXtensible Makeup Language
XML是用來建立描述結構化資料標示語言的語言,與資料無關的格式,可以幫助伺服器,瀏覽器,以及應用程式之間的資料傳輸也可以經由建立DTD(Document Type Definition,文件類別定義),可用來定義其他領域(如:數字\化學\音樂等等)相關的語言,XML是由SGML經過Web最佳化之後,產生的子集合,XML也允許在Web上自訂及驗證文件格式的標籤,事實上,XML是以標籤的型態來撰寫結構化文件的架構,XML也可以自行建立標示語言的文法或規則,用於描述資料,其重點在於資料內容的組織
小小介紹一下XML基本的規則
1. 必須以XML文件宣告為起始
2. 唯一的根節點
3. 所有的起始標籤一定相對出現結束標籤
4. 大小寫一致性
5. 正確的巢狀標籤
6. 所有的屬性值必須以引號包覆
總的來說XML就是一種標籤語言,可以根據自己的項目特點隨意涉及xml的結構,方便顯示。這次報告好像也有使用XML的技術,當然XML也不是說那麼容易在短時間內學起來的,希望自己也可以略懂一點,大家一起加油!
資料參考來源:http://andypony.mis.stut.edu.tw/teach/xml_html/xmlteach2_1.htm
我覺得大家可能會走近的誤區:
把他們放在一個水平線上比較
但這並不奇怪,有人把它比做 ASCII 標準,他們是一切一切的基礎,但並沒有
(也不需要)取代什麼。(但是就如同 ASCII 取代了一些沒有成大器的字元集定義,
XML 也會取代你在應用中自己定義的一些資料傳輸規範,但沒有什麼特別主流的東西。)
- 如果你的應用非常簡單,用它不一定方便,不一定用了效果還會更差。
- 和其他實際東西比如資料庫,MTS,Web Server比起來,它更像是一個概念,一種方法
- 項目越大,它的發揮餘地越大,作用越大。
- 一旦真正理解後,哪怕不用 xml parser,也不妨礙你使用這個概念,如同可以拋開特定語言使用 OO。
- ......
那就隨便舉個例子。比如你本來想在 bbs 應用中的兩個模組之間傳一些資料:
- 密碼
- 標題
- 內容
- 表情符號
等等
所以最簡單的方法是把他們合併起來作為一個參數傳遞給函數。
在有 xml 之前,你可能會使用分隔符號:
str = "發言人=張三;密碼=**;標題=abc;內容=xyz"
到 server 那邊使用 dictionary 或 collection 或 split 等等方法把他們拆開。
(當然可以自己定義物件啦,結構啦等等,但多數情況下還得是純字串--比如另一個模組不是自己開發的。)
2. 是平面的,沒有層次型結構
再寫些函數做一下字元轉義,再寫些函數製造出層次性的效果...
- XML 讓這些資料有了結構 -- 一個樹型結構
- xml 有全套的操作這種結構的方法
- xml 規範(或者說的實際點,xml parser)幫你確定你創建的字串是合法的
- xml 規範(或者說的實際點,xml parser)中有辦法驗證這個合法性
- 對於拿到這個字串的 server component 來說,可以用 xml 中現成的方法來操作它,
這就是 xpath, pattern,類似於 T-SQL 語句。(但記住 xml 是樹型結構的)
- XSLT 使用 xpath 對 xml 進行轉換(類似於 DTS),其中一種特例是把 XML 轉換成 HTML 輸出。
*XML語法入門
包含了標籤漢字串
。控制標籤命名
例:<Personal>Mary</Personal>
"<" 開始 中間放標籤名稱 ">"結束
開始標籤和結束標籤中間放實體名稱
註:空標籤不用結束標籤
#標籤命名規則
1.名稱必須以字母或"_"為首
2.其餘文字可以用字母, 數字, _, 連字符號-, 句點.
3.不能使用空白
4.標籤有分大小寫
#控制標籤必須成對
#空標籤
在XML中沒有單獨的標籤存在, 空標籤在定位上我們看成是開始與結束標籤的結合
<Person></Person> => <Person/>
例:<hr width="120"/>
#屬性設定
在開始標籤裡我們可以加入屬性,他跟標籤所描述的實體是分離的。
例:<Birthday year="1988">10/17</Birthday>
在他的生日中加入年的屬性
註:標籤不可有兩個同樣的屬性
屬性有分大小寫
#標籤註解
例:<!-- 這是註解 -->
"<!--" 做為開頭 "-->"作為結束
註:註解不可放文件第一航
註解中不可有"--"字串
註解不可以被包含在標籤中
註解可以跨列使用
註解可以包含標籤
XML
訂定的標準
很多平台都可兼容
可延伸出許多語言
valid
符合DTD & Schema的架構之文件
well formed
符合基本XML基本語法
但不強制使用
<!--*******-->
文件commen標示之處
標示的時要用引號或雙引號框選起來
Namespaces
克服在同一層級下不能取同一個名字
在空間中選定default,之後沒選擇的都以此為標準
Markup
標定的元素
不可與Character放在一起
(PI)與外部指令做連結
White space
在一般情況上來說都是直接將所有空白簡略為一個空白
Entity References
特殊字元若要顯示要給予變數名稱
<(less then) == <
>(great then) == >
& == &
" == "
' == '
&#num == 顯示萬用字原
*XML初體驗
。編寫工具
#一般文字編輯器
Windows的WordPad
#XML專用編輯器
XML Spy : 這程式的主要強大功能在於可以驗證你的文件,其介面分成四個空間,讓所有的資訊一目了然。此為其下載處(試用的, 非免費) http://www.xmlspy.com/download.html
XML NotePad : 是一個較為簡潔的編輯器,對於小型XML文件尤其適合,提供XML樹狀結的顯示和條列式的輸入介面。(適合初學者)此為其下載處 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxml/html/xmlpaddownload.asp
。剖析器(Parser)
XML對文件結構的規範,使用者往往會忘記檢查而忽視掉一些規範,而造成文件的錯誤。
剖析器依據XML的語法,替使用著檢查文件,若發生錯誤,則會回傳對應的錯誤給使用者,替使用者省下不少檢查功夫。
因此很多專門的編輯器會將剖析器的功能融入編輯器中。
#Internet Explorer
。XML相關技術
#XML Namespace : 有時同一份文件中,會出現同一個標籤,但這兩個標籤因為應用的領域不同,代表的意義當然不同,電腦解讀文件時便會無法辨認此兩標籤到底是屬於哪一個領域,因此在標籤前面多個獨特的辨識碼,透過再會發生混淆的最外層標籤來宣告,一般都採用網址。
#Xlink:類似HTML裡的超鏈結(Hyper Link),但實際上它的功能卻是比超鏈結強大許多。 詳細介紹可參考 http://www.w3.org/TR/xlink/
#XPointer:它的鏈結可指向XML文件的任何部分。依實際需求的不同,提供了多種方法方便使用者進行搜尋定址的動作。詳細介紹可參考 http://www.w3.org/TR/xptr
XML簡介
-----------------------------
XML它是一九八六年國際標準組織(International Standards Organization, ISO)公佈的一個名為「標準通用標示語言」(Standard Generalized Markup Language, SGML)的精簡版/子集合。一九九八年二月,美國W3C組織正式公佈XML的Recommendation 1.0版語法標準。XML掌握了SGML其延展性、檔案自我描述特性、以及其強大的檔案結構化功能,但XML卻摒除了SGML過於龐大複雜以及不易普及化的缺點。字面上來看XML是一種標示語言,但嚴格來說它和SGML一樣是一種「元語言」(meta-language)。換言之,XML是一種用來定義其它語言的語法系統。這正是XML功能強大的主因。它可促進各專業機構、不同產業界、學術界和特定應用領域發展各自標準的檔案和訊息,以利資訊的交換、處理和相關衍生性資料加值服務。
XML檔案和訊息的主要特色在於它是結構以及資訊內容導向。結構化檔案和訊息編碼方法的主要精神在於它可供其它電子資料傳遞、檔案出版系統、電腦輔助設計或製造、資料庫管理等系統,在處理重複和共享的資料時,能有效提升其效率和效能,節制資訊系統的開發建置和管理營運成本。這種方法將資訊內容、結構和格式等不相同的檔案要素予以區分。它儲存了檔案的資料和結構(有助於原始資料的回溯),可是卻不指出檔案的呈現格式,如是格式的解析應在資料最後傳遞時,才依據使用者需求進行最佳化之處理。XML技術本質上的優勢和特色,使商務資訊流電子化產生根本上的改變,並在應用上提供更多維的可能性。
一、 XML和EDI之比較
富含特色的商務互動行為必定包含了大量的資訊,傳統上在論及電子商務資訊流時,言必出「電子資料交換」(Electronic Data Interchange, EDI)。EDI是一種快速可靠的檔案資料交換方式,它主要被用於不同公司間不同電腦系統的商業檔案交換,特別是上下游工廠(供應鏈)或是交易企業間的資料交換。它藉由電腦的資料處理及通訊功能,傳達一標準格式的電子資料檔案,將交易往來的商業檔案,如訂單、訂單回覆、請款對帳單或付款明細表等,透過相關轉換機制和系統,傳達至對方的資料庫或MIS系統,以便進一步處理。早期的EDI屬於專屬封閉的系統,建置成本高,因此造成一般中小企業的進入障礙。此外,早期的EDI系統僅能改善和處理片段的作業流程,但網際網路世代的來臨,卻改變和衝擊傳統的EDI生態。相較於EDI,XML的主要優勢在於:
只要資料結構、語意和資料值能夠統一,XML的檔案對應用程式來說具有自我定義(self-defining)的特性,亦即XML檔案不必像EDI訊息一樣需要預先設定的特殊格式和結構。
XML檔案內容的標籤元素基本上與通訊協定獨立。因此,XML檔案特別適合在網際網路和全球資訊網的環境中流通傳輸。
相較於EDI,XML在編輯器、中介軟體以及應用工具上擁有更多的選擇。這些差異性,將使XML的標準化和匯入歷程不會像EDI走得那樣艱辛。
二、XML和HTML之比較
現今的HTML-based全球資訊網是"呈現導向"(presentation-oriented),換句話說,HTML語法是用來指定檔案在瀏覽器上的呈現方式,這意味了人類可輕易地瞭解HTML的檔案內容,但電腦軟體本身卻無法瞭解HTML檔案資料的內容和意義為何。雖然HTML的簡單輕便,助長了全球資訊網的迅速普及,但隨著全球資訊網平台上之多媒體及編排上的多樣化殷切需求,以及強調效率和精準的電子商務的興起,HTML語法已逐漸顯露其捉襟見肘的窘態。雖然許多程式設計人員利用自定的HTML標籤以及專屬的軟體來擷取網頁中的資訊內容,但此法卻無法滿足普及化的需求,且造成各行其事的紛亂局面。若資訊本身未經過語意化和結構化來表達,許多的軟體以及搜尋引擎將無法更有效地善用這些資訊。在XML的架構下,結構化的資料以及具有意義的資料標籤,將使電腦和軟體得以理解和利用網頁或檔案和訊息內的資訊,再透過代理程式以及其它自動化程式,電子商務資訊流的自動化將可有效地提升,並從本質上轉變電子商務的環境。
hxxp://www.xml.org.tw/Plan/XML.htm
XML精神: 與HTML類似,但不同的地方在於它可讓彼此相關的人士自行定義標記語言,來達
到語言的擴展性,有點類似pseudo code
DTDs(Document Type Definitions): 型態定義,可用來看XML語法對不對,其中所採用的
rule為EBNF (Extended Backus-Naur Form) grammar,
但不能定義element是要為何種型態ex:int
DTD(Document Type Declaration): 1.引進DTDs到XML document中
2.<!DOCTYPE 開始
3.> 關閉
DTD格式:<!ELEMENT myElement ( #PCDATA1)>
↑ ↑
宣告的東西 宣告的內容
//在內容後面可標上出現的頻率: Plus sign ( + ) : 一次或以上
Asterisk ( * ) : 零次或以上
Question mark ( ? ): 只限定出現零次或一次
//任何東西在DTD裡面沒被明確定義的就算是不合法的document
pipe( | ): 例子 <! ELEMENT dessert (iceCream | pastry)>
//意義是我的dessert只能從iceCream跟pastry中選一個
schema: 定義XML document's structure(副檔名為.xsd)
schema V.S. DTD: schema可定義資料型態,DTD不行,DTD只是有架構罷了
註: 由DTDs及schema來定義XML的東西,好讓它能在不同系統上運行
註: Document應要包含XML所宣告的版本,假若沒有的話將會自動選擇為最新版本,但其
code不為最新版時,可能就會發生錯誤
註: 在XML所宣告的前面有任何字(空格也算)的話都會算錯
註: XML中element name是空格的話會發生錯誤
註: 若要從外部匯入DTD的話,該要匯入的附檔名為.dtd
註: 其實XML不一定需要DTDs,只是用DTDs的話可以確保其為最合適的結構
namespace: 取用外部東西的一種方法,所要取用的東西有大小寫之分
URI(uniform resource identifier):
Validator: 用來判定出全部語法是否有錯,有點類似compiler的味道
//validation = DTD + schema
comment:<!--comment-->
minus & plus: 形成巢狀外面包的那層的頭會有minus(-)的標記,一按下去就會把巢狀內
容物收起來,此時頭的minus就變成plus(+),反之按下plus後內容物就出現
CDATA: <![CDATA[ 內容 ]]> 內容可以為javascript之類的,在這裡面用很多個空格
不會被消成只剩一個空格,而且可以直接用 > & <等東西
repositories: 把組織或個人所創的DTDs & schema用於廣泛應用範圍的收集
註: <img src =“img.gif”>這個在HTML中會對,但XML中要有/做收尾
XSL(eXtensible Stylesheet Language): 包有CSS所做成的schema
XSLT(XSL Transformation): 精神: 為一個有邏輯(語法)的文件,來處理(轉換)XML文件
也可做XSL的轉換ex:3D遊戲畫面呈現在2D螢幕上面
Xpath: 在XML樹中去去抓取所要的屬性
RSS:
aggregator: 把所訂閱好的東西給聚集起來,是個訂閱的集合(聚集RSS feed)
小常識: <: <
>: >
&: &
<?xml-stylesheet?> 這個在IE和FireFox瀏覽都不會有錯
<?xml:stylesheet?> 這個用FireFox瀏覽會有parsing error
XML是從1995年開始有其雛形,並向W3C提案,而在1998二月發佈為W3C的標準(XML1.0)。 XML的前身是SGML,是自IBM從1960年代就開始發展的 GML標準化後的名稱。而GML中的重要概念是它能明確的區隔tag與文章內容,以及所有的標示方法皆相同。
在1978年時,ANSI(美國標準化協會)將GML標準化並發布SGML,但SGML太過嚴謹而導致過於複雜,相當難以學習。在同時W3C也發現了HTML有不能解決所有解讀資料、效能過差、可讀性、擴充性、彈性均不佳等問題,於是專家們使SGML精簡製作並依照HTML,發展出了一套精簡易學但又嚴謹的資料描述語言,即XML。
而XML與HTML最大的不同在於XML用於傳輸數據、說明數據,而HTML單單只是表現數據而已。
*標記語言 Mark Language
目的:讓某些應用程式可以將其文件"結構性"的展現出來
分為"碼" 和 "標籤"
*XML (eXtensible Mark Language)
簡單來說, XML是一種以簡單、標準並可擴展的方式,將各種資訊如文字、表格,甚至圖形等以原始資料的方式儲存。
但儲存的過程中,加入一些可供辨識的標籤,藉此可辨識的標籤,在網路上伺服器或客戶端設備可將資訊內容坐進一步處理,得到所需的資訊。
XML融合SGML的資料相容性與HTML的簡單標記法,使得它得以提供一套簡單易懂又有效率的程式語法。
*XML的優勢
。延伸性
。簡單易懂
。不同平台間的資訊傳遞
。國際化
*XML和HTML的不同
。定位不同
#HTML的發展定位
1.用來設計網頁
2.力求簡單易學
3.達到廣泛接受
#XML的發展定位
1.簡化SGML的高複雜度
2.繼承SGML的優點
3.做為網路上資訊傳輸的媒介
XML是一種「中介標籤語言」(meta-markup language),可提供描述結構化資料的格式,這將有助於文件內容的宣告,並符合跨平台的搜尋作業,此外,XML也將是新一代網路資料呈現與運作的關鍵技術,在進一步介紹XML之前,我們還是先來看看,什麼是「標籤語言」吧!
什麼是標籤語言
所謂「標籤語言」,是由一些特殊字碼(code)或控制標籤(tag)所組成,它們單獨存在時並無任何的意義,而需要特殊的軟體經由一定的規則解讀後,再將文件輸出到螢幕或印表機...等輸出設備上,所以標籤語言可以使文件更具結構化,這樣的結構化使得應用程式能夠便於管理、解讀與運用文件中的資料,而標籤語言又可分為「特定標籤語言」與「一般化標籤語言」。
特定標籤語言:
特定標籤語言是針對某種特定軟體或特定用途所制定的,像我們所熟悉的HTML標籤語言,就是為了應用在Web上而制定的標籤語言,其它像微軟的文書處理軟體Word也是藉由標籤語言來顯示文字的字型、大小、粗細或是換行、換頁等文件格式。
通用標籤語言:
通用標籤語言通常只是用來描述文件的內容與結構,而不會去定義如何顯示或運用這些文件的內容,所以並不是為了特定的軟體而制定的,它可以讓許多不同的軟體解讀文件,至於解讀後的資料要如何運用,就視各種應用程式的需求而定了。也因為通用標籤語言是一種不受限於特定應用或是設備的文件描述方法,所以具有較佳的可攜帶性,像是已經通過ISO國際標準認可的SGML「標準通用標籤語言」,與其前身GML(Generalized Markup Language),都是我們所說的通用標籤語言。
XML可延伸標籤語言
XML是從SGML推演出來的,SGML其實是一套非常複雜的系統,因為它具有許多的機制,以便提供各種的語法,來解讀、編輯及保存內容龐大複雜且互相連結的技術文件,而XML則擷取了SGML中文件結構的核心部份,是SGML的一個子集合,其目的是為了擴充在網際網路上的應用,並靡補HTML的不足,讓SGML也能輕易地在網路上應用,所以XML肩負著使全球資訊網能夠傳輸或處理更豐富資訊的責任,雖然在一般情況之中,HTML或是JAVA的功能就已經相當足夠了,但隨著資訊的爆炸、資料量的激增與資料結構的複雜化,只用HTML就顯得捉襟見肘了,而JAVA又顯得太大才小用,也不易學習,現在有了XML與HTML的相輔相成,這些問題就都解決了,所以XML並不是用來取代HTML與SGML,或是廢除原有的標準,XML是用來制定新的標準、用來定義一種新的標籤語言,其自訂的範圍包括標籤及屬性的名稱,XML文件可以選擇性的包含文法描述的資料,以便應用程式可以檢查其完整性,而使用者可以藉由XML定義專屬的文件型態,程式設計師也能撰寫出便於管理文件的應用程式。
XML開發者是一群來自於SGML的設計者和應用者,他們已經在SGML上投入了大量的精力,但卻發現SGML並沒有完全發揮它的作用,而他們有其充分的理由相信,在這些方面XML帶來的影響可以算得上是一場革命。
節錄至http://tw.knowledge.yahoo.com/question/question?qid=1305090207399
原來XML功能那麼強可以結合的語言很多 對EDI的支持根對JAVA的技術幫助等等 我也想能搞懂XML對未來職場上一定很有幫助