XML教學手冊 - 企業運籌與電子化中心

Download Report

Transcript XML教學手冊 - 企業運籌與電子化中心

經濟部工業局電子化人才培訓課程
清華大學工業工程與工程管理學系
課程名稱:電子商務管理與技術
eXtensible Markup Language
(XML)
1
主題
•1.XML基礎
•2.建立XML文件
•3.XML語法檢查(DTD/XML Schema)
•4.XSLT、XPath轉換XML文件
•5.XML Document Object Model
2
1.XML基礎
3
文件資料的物件化
•一份電腦文件如Word檔案,資料內容本身是一
份沒有結構性的文件。一份文件若能夠轉換成
一個樹狀結構資料,我們就可以如同資料庫一
般撰寫程式進行資料的排序、 搜尋。(如圖書
產品型錄)
•如果所有的文件都可以使用相同的樹狀結構進
行分析,如此文件的格式就可以統一,電腦間的
檔案資料交換也更加的容易。
4
Root element -> Nested elements -> Hierarchical structure
5
What is XML?
•
XML: eXtensible Markup Language defines an
universal standard for electronically exchanging data
for the Internet and Web applications and is supported
by major IT vendors.
• XML在書寫上非常類似HTML,注重資料的內容而不
是如何顯示,沒有如HTML的預設標籤,並非取代
HTML。
• 使用者必須自行定義描述資料所需的各種標籤以
傳輸有結構性的資料,即須注意良好格式(Well6
Formed)和資料驗證(Validity)。
XML用途
•XML儲存HTML顯示文件內容:使用XML技術動態
產生所需的HTML網頁。
•XML可以作為資料交換的格式
•XML應用在電子商務:在企業間 (B2B) 電子商
務交易,XML將是資料交換企業整合的重要技術
與標準。
7
• XML can take large chunks of information and
consolidate them into an XML document - meaningful
pieces that provide structure and organization to the
information.
8
XML相關技術關聯圖
9
文件資料驗證
•所謂的驗證即是定義一組規則,這套規則可以
檢查XML文件的架構和標籤是否合乎規則。
•DTD(Document Type Definition):為SGML之語
法檢查,能幫助XML剖析器來解譯XML文件內容。
•XML Schema的架構就是一份XML文件,所以在使
用上和撰寫一份XML文件一般,不用像DTD需要
學習另一種語法。
10
顯示輸出和文件轉換
• XSL(Extensible Stylesheet Language)的功能有兩項:
一為顯示XML的內容,另一就是文件轉換,也就是XSLT。
使用XSLT可以將XML的樹狀結構轉換成另一架構,如純
文字文件或HTML文件。
• XSL屬於一種樣式程式語言,其提供比CSS(Cascading
Style sheets)更加強大的XML文件顯示的功能。CSS主
要用來支援簡單的XML架構,而XSL則是使用於複雜的
XML架構。
11
XML軟體需求
• XML剖析器(Parser):所謂剖析為依照標籤解讀文件。
電腦本身雖看不懂XML文件內容,但是透過標籤幫助,剖
析器就可以分析文件的內容取出所需的資訊。MSXML
Parser 為微軟附在IE的剖析器,只要5.x版就擁有XML剖
析器。
• XML驗證工具:通常XML編輯和瀏覽亦會提供驗證。
• XML編輯工具:UltraEdit、 XML Notepad、XML Spy。
• XML瀏覽工具:IE 5.x可以如同瀏覽HTML文件一般瀏覽
XML文件。
12
2.建立XML文件
13
XML文件組成因子
• 元素(Element):XML元素為整個文件的主要架構,為一完整
的項目,包含了標籤、屬性、開始標籤、結尾標籤和其中
的文字。
• 屬性(Attribute):開始標籤名稱後可為標籤加上屬性名稱
和屬性值,且值要用雙引號括起來。
• 實體參考(Entity Reference):由於標籤語言本身有一些
保留符號,此時會用到實體參考。
• 註解(Comment):由<!-- -->表示
• CDATA Section和PCDATA:在Tag中包含的文字為PCDATA;
如果XML有CDATA Section,則告訴Parser不要處理此區塊
的內容。CDATA Section位於<![CDATA[
]]>之間,通
常是用來儲存程式碼的資料。
• PI(Processing Instructions):PI允許文件包含應用程式
的指令,這些資訊告訴XML剖析器如何處理XML文件,並將這
些資訊送給應用程式。其基本格式以<? name ?>表示。
14
標準XML注意事項
• 根標籤:所有XML文件都需要一對標籤來定義文件的根
元素,其它元素都屬於此根元素之子元素。
• XML標籤可以使用中文,但英文大小寫不同
• 所有元素需要有結尾標籤
• 巢狀XML元素不可重疊
• 屬性值必須要有雙引號
15
Rules for Well-Formed XML
• Mandatory Closing Tag
– The set of tags are unlimited but all container
tags must have end tag, e.g., <tag>…</tag>.
• Example:
•
•
•
•
•
<number>kj9876_34</number>
<due>1/12/98</due>
<bill_to>MTB1</bill_to>
<ship_to>MTO1</ship_to>
<selling_party>AC987</selling_party>
16
Rules for Well-Formed XML (cont.)
• Proper Element Nesting
– All tags must be nested correctly. Like HTML,
XML can intermix tag, but tags may not
overlap each other.
• Legal XML
Illegal XML
<PRODUCT>
<PRODUCT>
<ID>721</ID>
<ID>
<NAME>PENTIUM 11 300</NAME>
<NAME>PENTIUM 11 300<NAME>
<PRICE>5000</PRICE>
<PRICE>5000</PRICE>
</PRODUCT>
</PRODUCT>
</ID>
17
Rules for Well-Formed XML (cont. 2)
• Double-quote value delimiters
– All attribute values must be enclosed in single
or double quotation marks.
• Legal:
– <tag attribute=“value”>
• Illegal:
– <font size = 6>
<XML>
<xml>
are different
18
Rules for Well-Formed XML (cont. 3)
• Single tag element
– Singleton tag (called empty element or tags without
content) must be written in an abbreviated form using
special XML syntax.
• Legal:
– <BR/>
• <TITLE></TITLE> is equivalent to <TITLE/>
19
XML範例 (product.xml)
<?xml version="1.0" encoding="Big5"?>
<!--product.xml edited by jack-->
<PRODUCTLIST>
<PRODUCT>
<ID>721</ID>
<NAME>PENTIUM 100</NAME>
<PRICE>1000</PRICE>
</PRODUCT>
<PRODUCT>
<ID>722</ID>
<NAME>PENTIUM 11 300</NAME>
<PRICE>5000</PRICE>
</PRODUCT>
</PRODUCTLIST>
20
Exercise
1.booklist含有子元素book兩個
2.book含有子元素code title author price
3.Tag中包含的文字自訂
Hint:<?xml version=“1.0” encoding=“Big5”?>
21
XML文件的名稱空間(Namespace)
• 如果XML文件需要引用其它XML架構或元素,或是與其它
XML文件進行資料交換,我們必須要在XML文件宣告名稱空
間,以避免標籤名稱重複的問題。
• 為了取得唯一的標籤名稱,名稱空間使用網址的名稱和路
徑,我們稱為 URI (Universal Resource
Identifier) 。例<PRODUCT xmlns = http://www.company.com/ >
• 標籤的完整名稱: <名稱空間字頭:標籤名稱>
例如: <bk:title>
<jb:title>
亦即前面的名稱空間不同,就屬於不同的標籤。
22
名稱空間範圍
<?xml version="1.0" encoding="Big5" ?>
<booklist>
<book xmlns="http://www.company.com/">
<title>abc123</title>
<authorlist>
<author>jack</author>
<jobxmlns:jb="http://www.ebec.com.tw/">
< companyname > ebec </companyname>
<title>student</title>
</job>
</authorlist>
</book>
</booklist>
23
3.XML語法檢查
(DTD/XML Schema)
24
DTD (Document Type Definition)
• Schema是一種XML文件內容驗證機制,主要是定義文件出現
的元素、 屬性和整份文件的架構,也就是元素擁有哪些子
元素的內容模型(Content Models) 。
• 一旦XML文件定義好DTD,在使用編輯工具建立XML文件時,
編輯工具就可以依據DTD檢查XML是否為合法的內容。
• XML1.0版的Schema預設為DTD,而XML Schema是由MS所提出,
其目的就是要取代DTD成為下一代的XML驗證機制。
25
內部DTD
<booklist>
<?xml version="1.0" encoding="Big5"?>
<book sales="Y">
<!--XML文件內部的DTD-->
<code>F0001</code>
<!DOCTYPE booklist [
<title> abc </title>
<!ELEMENT booklist (book+)>
<authorlist no="1">
<!ELEMENT book (code, title, authorlist,
<author>jack1</author>
price)>
</authorlist>
<!ATTLIST book sales (N | Y) #REQUIRED>
<price>580</price>
<!ELEMENT code (#PCDATA)>
</book>
<!ELEMENT title (#PCDATA)>
<book sales="N">
<code>F0002</code>
<!ELEMENT authorlist (author+)>
<title> def </title>
<!ELEMENT author (#PCDATA)>
<authorlist no="1">
<!ATTLIST authorlist no CDATA #REQUIRED
<author>jack2</author>
>
</authorlist>
<!ELEMENT price (#PCDATA)>
<price>550</price>
]>
</book>
</booklist>
26
XML Schema
• XML Schema本身屬於一份XML文件,其基本的架構和驗證的XML
文件並沒有什麼不同,通常我們將XML Schema驗證的XML文件
稱為Instance文件;而XML Schema文件稱為Schema文件。
• 基本架構如下所示:
<? xml verson =“1.0” encoding= “Big5” ?>
<xsd:schema xmlns:xsd=http://www.w3.org/1999/XMLSchema>
……………………
</xsd:schema>
27
XML Schema (cont.)
• 元素Schema間之子元素就是在定義Instance文件的XML
元素,常用的XML元素如下表所示:
元素
schema
simpleType
Element
說明
XML Schema文件的根元素
使用者自己定義的資料型態
宣告XML元素
complexType 宣告XML子元素
attribute
宣告元素屬性
28
XML Schema (cont. 2)
• 通常我們將XML Schema獨立存成一個Schema文件檔案,副檔名
為.xsd,然後在XML的Instance文件指定使用的Schema檔案。
<booklist xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xsi:noNamespaceSchemaLocation= abcd.xsd">
• XML Schema支援多達四十種以上的資料型態,而且允許使用者
自定資料型態,這些資料型態是使用在XML元素和內容。例如
string、boolean、float、double等。
29
XML Schema (cont. 3)
(1) 0<= OrderQuality <= 100
<simpleType name = “OrderQuality”base= “integer”>
<minInclusive value= “1”/>
<maxInclusive value= “100”/>
</simpleType>
(2)列舉清單
<simpleType name= “color”base= “string”>
<enumeration value= “red”/>
<enumeration value= “white”/>
<enumeration value= “blue”/>
<enumeration value= “black”/>
</simpleType>
(3)正規語法
<simpleType name = “PhoneNumber”base= “string”>
<length value= “11”/>
<pattern value= “\d{2}-\d{8}”/>
</simpleType>
ps: \d代表為數字
30
4.XSLT、XPath
轉換XML文件
31
XSL(eXtensible Style Language)
• XML文件本身只是在定義資料的內容,如果需要顯示XML元素的
資料,我們需要描述XML元素如何被顯示,這種語言稱為樣式語
言。 CSS只是其中一個選擇,XSL才是配合XML的樣式語言。
• XSL主要功能分為兩部分:
1.轉換XML文件:將XML文件架構轉換成另一個XML架構的文件,
或是HTML文件。(稱為XSLT;XSL Transformations)目前支援
XML的瀏覽程式不多,所以XSLT的角色即相當重要。
2.格式化XML文件:格式化元素內容樣式,以便顯示出XML文件。
32
XSLT是如何工作?
• XSLT簡單的說,即是將一棵來源為XML的樹,套用XSLT轉
換範本樹,修改一些節點結構,最後產生另一棵不同架
構的樹狀結構。
33
XPath Language
• 因為XSLT屬於一種範本驅動的轉換,也就是說需要在
XML文件正確描述XML元素的位置。XML文件能夠轉換成
為一個樹狀結構,如何找到指定節點的定位指令就是
XPath的目的。
• Xpath之位置路徑:
例: /glossary/item/title
/glossary/item/title[1]
/glossary/item/title@version
//title
/glossary/item/*
34
XSLT基本架構
<?xml version="1.0" encoding="Big5"?>
<xsl:stylesheet version="1.0"
xmlns:xsl ="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
………………………
………………………
</xsl:template>
</xsl:stylesheet>
35
XSLT常用的元素
XSLT元素
說明
<xsl:stylesheet>
XSLT Script之根標籤
<xsl:template>
XSLT的範本,每一個xsl:template元素內涵指定
元素的轉換規則。
<xsl:call-template> 呼叫犯範本函數,使用<xsl:with-param>傳入函數的
參數
<xsl:value-of>
取出選擇XML元素或屬性內容
<xsl:for-each>
XSLT的迴路元素,元素的內容可以依迴路條件處
理所有符合條件的子元素。
<xsl:if>
XSLT的條件元素,當條件成立時,才處理指定的
範本規則
<xsl:choose>
<xsl:when>
<xsl:otherwise>
這三個元素就是建立多條件範本規則,如同
VBScript的Select Case
36
XSLT範例1 (test.xsl)
<?xml version="1.0" encoding="Big5"?>
<xsl:stylesheet version="1.0"
xmlns:xsl ="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>測試XSLT</title>
</head>
<body>
<xsl:value-of select="hello"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
37
XSL範例2
(Student)
38
XSL範例3
(Query HP Printer)
39
4.XML Document
Object Model
40
XML Document Object Model
XML DOM屬於XML文件程式設計的介面
物件,XML文件視為樹狀結構的節點,程式設
計者能夠透過XML DOM瀏覽XML文件、新增、
刪除和修改節點的資料。
41
XML DOM範例1
(Query HP Printer)進階版
(使用XML文件,建立商品清單的文字資料庫,
然後建立查詢商品的ASP程式,這就是網路
商店的產品瀏覽和查詢功能。)
42
References
• XML的入門與應用
– http://www.hpdiy.com.tw/xml.htm
• 實戰XML
– http://www.softchina.com.tw
• XML IE5
– http://webdev.wrox.co.uk/books/1576/
• XML-Data standard
– http://www.w3.org/TR/NOTE-XML-data/
• XSL standard
– http://www.w3.org/TR/NOTE-XML-data/
43
XML網站推薦
• IBM網站
– http://www.ibm.com/developer/xml/
• 微軟網站
– http://msdn.microsoft.com/xml/default.asp
• Free XML software
– http://www.stud.ifi.uio.no/~lmariusg/linker/XMLtools.html
– http://www.stud.ifi.uio.no/~lmariusg/linker/xmltools/by-platform.html
44