c9b05f607f006f9c6a426e61849267b2.ppt
- Количество слайдов: 44
經濟部 業局電子化人才培訓課程 清華大學 業 程與 程管理學系 課程名稱:電子商務管理與技術 e. Xtensible 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: e. Xtensible 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。 • 使用者必須自行定義描述資料所需的各種標籤 以 傳輸有結構性的資料 , 即 須注意良好格式 (Well-Formed)和 資料驗證 (Validity)。 6
XML用途 • XML儲存 HTML顯示文件內容 : 使用 XML技術 動態產生所需的 HTML網頁 。 • XML可以作為資料交換的格式 • XML應用在電子商務 : 在 企業間 (B 2 B) 電子 商務交易 , 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編輯 具 : Ultra. Edit、 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>kj 9876_34</number> <due>1/12/98</due> <bill_to>MTB 1</bill_to> <ship_to>MTO 1</ship_to> <selling_party>AC 987</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> <ID>721</ID> <NAME>PENTIUM 11 300</NAME> <NAME>PENTIUM 11 300<NAME> <PRICE>5000</PRICE> </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="Big 5"? > <!--product. xml edited by jack--> <PRODUCTLIST> <PRODUCT> <ID>721</ID> <NAME>PENTIUM 100</NAME> <PRICE>1000</PRICE> </PRODUCT> <ID>722</ID> <NAME>PENTIUM 11 300</NAME> <PRICE>5000</PRICE> </PRODUCTLIST> 20
Exercise 1. booklist含有子元素 book兩個 2. book含有子元素 code title author price 3. Tag中包含的文字自訂 Hint: <? xml version=“ 1. 0” encoding=“Big 5”? > 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="Big 5" ? > <booklist> <book xmlns="http: //www. company. com/"> <title>abc 123</title> <authorlist> <author>jack</author> <jobxmlns: jb="http: //www. ebec. com. tw/"> < companyname > ebec </companyname> <title>student</title> </job> </authorlist> </booklist> 23
3. XML語法檢查 (DTD/XML Schema) 24
DTD (Document Type Definition) • Schema是一種 XML文件內容驗證機制 , 主要是定義文 件出現的元素 、屬性和整份文件的架構 , 也就是元素 擁有哪些子元素的內容模型 (Content Models) 。 • 一旦 XML文件定義好 DTD, 在使用編輯 具建立 XML文 件時 , 編輯 具就可以依據 DTD檢查 XML是否為合法的 內容。 • XML 1. 0版的 Schema預設為 DTD, 而 XML Schema是由 MS 所提出 , 其目的就是要取代 DTD成為下一代的 XML驗證 機制。 25
內部 DTD <booklist> <? xml version="1. 0" encoding="Big 5"? > <book sales="Y"> <!--XML文件內部的DTD--> <code>F 0001</code> <!DOCTYPE booklist [ <title> abc </title> <!ELEMENT booklist (book+)> <authorlist no="1"> <!ELEMENT book (code, title, authorlist, <author>jack 1</author> price)> </authorlist> <!ATTLIST book sales (N | Y) #REQUIRED> <price>580</price> <!ELEMENT code (#PCDATA)> </book> <!ELEMENT title (#PCDATA)> <book sales="N"> <!ELEMENT authorlist (author+)> <code>F 0002</code> <title> def </title> <!ELEMENT author (#PCDATA)> <authorlist no="1"> <!ATTLIST authorlist no CDATA <author>jack 2</author> #REQUIRED > </authorlist> <!ELEMENT price (#PCDATA)> <price>550</price> ]> </booklist> 26
XML Schema • XML Schema本身屬於一份 XML文件 , 其基本的架構和驗證 的 XML文件並沒有什麼不同 , 通常我們將 XML Schema驗證 的 XML文件稱為 Instance文件;而XML Schema文件稱為 Schema文件。 • 基本架構如下所示 : <? xml verson =“ 1. 0” encoding= “Big 5” ? > <xsd: schema xmlns: xsd=http: //www. w 3. org/1999/XMLSchema> ………… </xsd: schema> 27
XML Schema (cont. ) • 元素 Schema間之子元素就是在定義 Instance文件的 XML元素 , 常用的 XML元素如下表所示 : 元素 schema simple. Type 說明 XML Schema文件的根元素 使用者自己定義的資料型 態 Element 宣告 XML元素 complex. Typ 宣告 XML子元素 e attribute 宣告元素屬性 28
XML Schema (cont. 2) • 通常我們將 XML Schema獨立存成一個 Schema文件檔案 , 副 檔名為. xsd, 然後在 XML的 Instance文件指定使用的 Schema 檔案。 <booklist xmlns: xsi="http: //www. w 3. org/1999/XMLSchema-instance" xsi: no. Namespace. Schema. Location= abcd. xsd"> • XML Schema支援多達四十種以上的資料型態 , 而且允許使 用者自定資料型態 , 這些資料型態是使用在 XML元素和內 容。例如string、boolean、float、double等。 29
XML Schema (cont. 3) (1) 0<= Order. Quality <= 100 <simple. Type name = “Order. Quality”base= “integer”> <min. Inclusive value= “ 1”/> <max. Inclusive value= “ 100”/> </simple. Type> (2)列舉清單 <simple. Type name= “color”base= “string”> <enumeration value= “red”/> <enumeration value= “white”/> <enumeration value= “blue”/> <enumeration value= “black”/> </simple. Type> (3)正規語法 <simple. Type name = “Phone. Number”base= “string”> <length value= “ 11”/> <pattern value= “d{2}-d{8}”/> </simple. Type> ps: d代表為數字 30
4. XSLT、XPath 轉換 XML文件 31
XSL(e. Xtensible 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[1] /glossary/item/title@version //title /glossary/item/* 34
XSLT基本架構 <? xml version="1. 0" encoding="Big 5"? > <xsl: stylesheet version="1. 0" xmlns: xsl ="http: //www. w 3. 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="Big 5"? > <xsl: stylesheet version="1. 0" xmlns: xsl ="http: //www. w 3. 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 IE 5 – http: //webdev. wrox. co. uk/books/1576/ • XML-Data standard – http: //www. w 3. org/TR/NOTE-XML-data/ • XSL standard – http: //www. w 3. 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
c9b05f607f006f9c6a426e61849267b2.ppt