2018年6月29日星期五

XML 教學、技術入門及應用 (1)

XSLT (Extensible Stylesheet Language Transformation )?
Web service?
AJAX ( Asynchronous JavaScript and XML )?

全都是 XML 衍生出來的技術,所以先了解 XML,才能解說上述技術怎用。因為組合眾多技術而成,所以有不明白的地方,先記著,回頭再看的時候就會突然想通。

XML 是甚麼︰


XML全名是可延伸標記式語言 ( Extensible Markup Language ),「可延伸」是甚麼?「標記式」是甚麼?先放一邊,由 XML 語法及基礎說起才能理解。

XML 除了給「人」看,還要給「電腦」看,電腦看得懂,能做的事變得更多,例如用程式處理 XML。

XML_1.png

語法詳細請看參考資料。用 notepad 制作 XML 時,需注意副檔案名、存檔類型及編碼。

XML Syntax Rules
https://www.w3schools.com/xml/xml_syntax.asp

XML_2.png

XML 檔可以用 Chrome 開啟。

———————————簡易的分隔線————————————

XML 基礎 1︰


  • XML documents must have a root element
  • XML elements must have a closing tag
  • XML tags are case sensitive
  • XML elements must be properly nested
  • XML attribute values must be quoted

知道 XML 語法後,能明白甚麼?

  1. All elements must have a closing tag

    這個為甚麼很重要? 電腦處理速度快,但其實很笨,要根據「語法」去取出資訊,每項資訊以開始 tag <XXX> 包裹著資料,並以 </XXX> 結尾或者以單一 tag <XXX/> 結束,電腦只會跟「規則」辦事。

  2. XML Elements Must be Properly Nested

    同上,除了抽出資料,還有「資料結構」這東西。以上例子過於簡陋,無法說明,所以補上其他子。

XML_3.png

這個例子,由 guestbook 的 element 作為 root 包住整個 XML 資料結構,而每一個 guest 的 element 都包含 fname ( first name ) 及 lname ( last name ),這就是「資料結構」,層次分明。

View XML output from a database
https://www.w3schools.com/xml/guestbook.asp

知道 XML 「規則」及「資料結構」又能怎樣?


做轉換,把 XML 轉換成其他格式,例如用 XSLT 技術,把 XML 資料轉換成 HTML 網頁顯示資料等等。不用太深入研究 XSLT,還有很多技術能做到同樣效果。

XPath Tutorial
https://www.w3schools.com/xml/xpath_intro.asp

XSLT Example
https://www.w3schools.com/xml/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

曾經說過用程式處理 XML吧?Java 處理 XML,可選 JAXP ( Java API for XML Processing ) 或 JAXB ( Java Architecture for XML Binding ),跟據情況,取捨工具,參考以下網址,如果完全沒接觸過 XML API,建議直接由 JAXB 學起。

JAXB, SAX, DOM Performance
https://www.javacodegeeks.com/2011/12/jaxb-sax-dom-performance.html

XML 基礎 2︰


除了 「規則」及「資料結構」外,有沒有漏了甚麼?「資料格式」及「資料內容」也是可以做出定義及限制,這個時候到 DTD 或 XML schema 出場,這裡只簡介 XML schema 會跳過 DTD。XML schema 「規範」了甚麼?詳細看參考資料。

XML Schema Tutorial
https://www.w3schools.com/xml/schema_intro.asp

XSD How To?
https://www.w3schools.com/xml/schema_howto.asp

XSD Restrictions/Facets
https://www.w3schools.com/xml/schema_facets.asp

XML schema︰


參考資料沒看懂?<xs:pattern value="XXXXXX" /> 在做甚麼?先去學 Regular Expressions 再回來。對 XML 做出定義並給上限制有好處,可以減少處理錯誤資料及強制填上必要資訊。

下篇文章會用範例做 Validate XML,現在有個概念就好,別在意。

XML Validator
https://www.w3schools.com/xml/xml_validator.asp

另外,之前提過的 JAXB,可以把 XML 及 Java Object 互換,前提是 XML 資料要包含 XML schema 才可換成 Java,但反過來,只要是 Java Object 都能産出 XML schema + XML。

JAXB Architecture
https://docs.oracle.com/javase/tutorial/jaxb/intro/arch.html

———————————簡易的分隔線————————————

XML 其他應用︰


知道 XML「語法」及 XSD「規範」後,怎應用這門技術?關心不是技術本身,而是想知道現有甚麼技術搭上了 XML……

處理文件


xml_4.png

Microsoft Excel ( 副檔名.xlsx ) 及 OpenDocument 試算表 ( 副檔名.ods ) 只是個 zip 檔,解壓後能看到 xml 格式內容。

明白那是 XML 的話,研究一下「資料結構」,有可能做到 OpenDocument 轉換成 Microsoft Excel。

報稅

 xml_5.png

再進一步的話,政府可以發佈 WSDL,然後以公司系統直駁稅局系統,做到資料無縫交流。

香港稅務局 —— 僱主電子報稅
https://www.ird.gov.hk/chi/ese/erc.htm#a01

WebService


你想到的,想不到的,以 XML 為基礎,技術無處不在。

XML Web Services
https://www.w3schools.com/Xml/xml_services.asp

———————————簡易的分隔線————————————

總結︰


XML 的強大,在於它對資料確立標準,在標準之下,再定義細節或繼承其他 XML / XSD 作改造,所以才說「可延伸」,而「標記式」是為了給「電腦」看得懂才使用這方式。

之前說的「規則」,可以說成 XML schema,通過 Validate XML,可以分辨出資料是否符合要求,如果不符合,可以把料資打回頭,不作處理,只處理合要求資料,省了很多資料上的 error checking。

覺得概念很虛無飄渺?沒有實例?下篇文章有 XSD 及 XML 範例,配合 Eclipse,可以即時知道 XML 格式及資料是否合符「規則」,最後會有 Java 程式碼,展示如何 Validate XML。

下一回【XML 教學、技術入門及應用 (2)

沒有留言:

發佈留言

設有留言驗證及審查,檢閱後,才會顯示留言。
本人惰性很高,留言或許會石沉大海。