《十四章XML与库》由会员分享,可在线阅读,更多相关《十四章XML与库(37页珍藏版)》请在金锄头文库上搜索。
1、十四章XML与资料库Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望目的XML的前身是HTML都是標籤語言HTML的標籤大體上是為了呈現(Presentation)的目的,而不是用來標示內容黃三益教的資料庫 黃三益教的資料庫Compaq N610C laptop Spec: Pentium 4-M 1.8 G CPU, 256 DDR, 30G HDD, 8X DVDPrice: NT$70,000 Compaq N610C laptop Spec: Pentium 4-M 1.8
2、G CPU, 256 DDR, 30G HDD, 8X DVD Price: NT$70,00014-2黃三益2007資料庫的核心理論與實務第三版目的(Cont.)XML的目的是標示內容,可以加入自訂的適當標籤 Compaq N610C laptop Pentium 4-M 1.8 G 256 DDR 30G 8X NT$70,000這些標籤無法事先定義,而必須隨著應用範圍的不同做不同的制訂XML (可擴充的標示語言)就是為滿足這樣的需求而誕生已經變成B-C(Business to Customer)和B-B (Business to Business)電子商務的標準 14-3黃三益2007資
3、料庫的核心理論與實務第三版XML的語法 元素和屬性 XML文件的資料組織方式是階層式的每一個資料敘述稱為一個元素(Element)一個元素包含一個包含啟始(start)標籤、內容和一個結束(end)標籤 (參考範例XML) 14-4黃三益2007資料庫的核心理論與實務第三版XML的語法(Cont.)一個元素可以有一些附屬屬性和屬性值,這些屬性和屬性值是設定在啟始標籤裡 Compaq N610C laptop Pentium 4-M 1.8 G 256 DDR 30G 8X NT$70,00014-5黃三益2007資料庫的核心理論與實務第三版XML的語法(Cont.)保留字元五個保留字:&, ,
4、 , 和 “ 需要用這些字時,表達方式如下:& : & : >: '“: "範例:”Ai 5 & Ai+1 10” Ai > 5 & Ai+1 < 1014-6黃三益2007資料庫的核心理論與實務第三版XML的語法(Cont.)也可用將其圈起來 getSalary()30000 & value0!=3)cerr displayError(); 14-7黃三益2007資料庫的核心理論與實務第三版練習13-1試著解釋以下XML片段的意義 423.21 8744 如何當個稱職的職場新鮮人張大頭李大炮400Ans:圖書館有一本書,書名是” 如何當個稱職的
5、職場新鮮人”,索書號423.21 8744,作者是張大頭和李大炮,由想像出版社於民國93年在台北發行,定價為400。14-8黃三益2007資料庫的核心理論與實務第三版命名空間不同領域的名稱相同的標籤卻可能有不同的意義 ,XML因此有命名空間(namespace)的概念考慮下例的XML文件裡兩個命名空間:college和kindergarten 張三14-9黃三益2007資料庫的核心理論與實務第三版DTD 最早被使用的XML文件結構定義方式 主要是描述元素的內容和屬性 XML文件的相對應DTD可以宣告在該XML文件裡,稱為內嵌式的DTD!DOCTYPE example1 This is a te
6、st! 14-10黃三益2007資料庫的核心理論與實務第三版DTD(Cont.)也可將DTD的宣告置於另一個檔案,然後在XML文件裡匯入該DTD檔案。這種方式稱為外部宣告 XML文件This is a test!DTD檔案(存成test.dtd) 14-11黃三益2007資料庫的核心理論與實務第三版DTD(Cont.)一個XML元素的內容可以包含數個子元素,而這些子元素間的關係可有以下數種:順序 多選一 0-1次 0-多次 1-多次 14-12黃三益2007資料庫的核心理論與實務第三版DTD(Cont.)元素內容的設定方式內容值為空:用EMPTY表示oven元素沒有內容(但可以有屬性值)內容值
7、為字串:用以下方式設定: 內容值可能為字串或子元素 內容值不做任何規定:用ANY 14-13黃三益2007資料庫的核心理論與實務第三版DTD(Cont.)DTD的屬性設定DTD裡定義了以下的型態 字串:用CDATA 表示ID :用ID 表示。ID型態的資料不可以包含空白,斷行,Tab等區隔符號IDREF:用IDREF 表示。IDREF型態的資料值必須出現在ID裡選列(enumerated):設定資料的數個可能值,用”|”分隔 14-14黃三益2007資料庫的核心理論與實務第三版!DOCTYPE library 理工圖書館 理工大道一號 文法商圖書館 文管大道一號 如何當個稱職的職場新鮮人 如何
8、管理資料庫 JAVA十天速成手冊 滿足滿足XML語法的語法的XML文件稱為合格(文件稱為合格(Well Formed)滿足其對應滿足其對應DTD定義的定義的XML文件稱為有效(文件稱為有效(Valid) 14-15黃三益2007資料庫的核心理論與實務第三版練習14-2請寫出練習14-1的DTD Ans:!DOCTYPE library_books 14-16黃三益2007資料庫的核心理論與實務第三版練習14-3以下XML文件不是一個有效的文件,為什麼?!DOCTYPE library 理工圖書館 理工大道一號 文法商圖書館 文管大道一號 總圖書館 如何當個稱職的職場新鮮人 如何管理資料庫 JA
9、VA十天速成手冊 沒有 address元素沒有定義branchID屬性b3沒有定義14-17黃三益2007資料庫的核心理論與實務第三版W3C Schema W3C所提出解決DTD的兩大缺點:有限的資料值型態非XML語法XML Schema就是為解決以上問題而由W3C所提出的XML資料定義方式,一般認為XML Schema會逐步取代DTD成為XML資料定義的新標準。 一個Schema檔的開頭是啟始標籤,結束時是結束標籤,並在其中宣告一些元素 在Schema啟始標籤裡可以描述該Schema定義的命名空間 元素的宣告可以利用 14-18黃三益2007資料庫的核心理論與實務第三版W3C Schema常
10、用的簡單型態包括boolean: 0 (false) 或 1 (true)byte:一個字元string:字串date:日期型態time:時間型態integer:整數positiveInteger:正整數id:識別一個元素或屬性idref:一個對id的參考14-19黃三益2007資料庫的核心理論與實務第三版W3C Schema(Cont.)XML Schema也允許你自行建立複合型態 複合型態的宣告語法是在啟始標籤和結束標籤中間列出其所包含的元素和屬性 常見的元素的組成方式有以下三種:all:表示元素的出現次序不限,但每個元素不可出現超過一次sequence:表示元素要按次序出現choice:
11、表示可選擇性的出現一些元素14-20黃三益2007資料庫的核心理論與實務第三版W3C Schema(Cont.)元素也可以用啟始標籤和結束標籤,並在中間設定其(複合)型態的方式來宣告 屬性是用標籤來宣告 14-21黃三益2007資料庫的核心理論與實務第三版W3C Schema(Cont.) 預設命名空間預設命名空間本本Schema的命名空間的命名空間本本Schema的目標命名空間的目標命名空間Library包括數個包括數個branch和數個和數個book14-22黃三益2007資料庫的核心理論與實務第三版W3C Schema(Cont.) 定義定義branch元素元素定義定義bookType型
12、態型態14-23黃三益2007資料庫的核心理論與實務第三版有效的XML文件?xml version = “1.0” 理工圖書館 理工大道一號 文法商圖書館 文管大道一號 總圖書館 大學路一號 如何當個稱職的職場新鮮人 如何管理資料庫 JAVA十天速成手冊預設命名空間預設命名空間Schema位置位置14-24黃三益2007資料庫的核心理論與實務第三版W3C Schema(Cont.)在許多應用裡,為了簡化起見,轉成的XML檔裡只有元素而沒有屬性。考慮以下的另一個W3C Schema檔案(檔案名稱為library-schema2.xsd) 14-25黃三益2007資料庫的核心理論與實務第三版W3C
13、 Schema(Cont.) 14-26黃三益2007資料庫的核心理論與實務第三版Valid XML using W3C-Schema?xml version = “1.0” b1 理工圖書館 理工大道一號 b2 文法商圖書館 文管大道一號 如何當個稱職的職場新鮮人 b2 400 如何管理資料庫 b2 500 JAVA十天速成手冊 b1 14-27黃三益2007資料庫的核心理論與實務第三版練習14-4請寫出練習14-1的schema Ans:14-28黃三益2007資料庫的核心理論與實務第三版練習14-4(Cont.) 14-29黃三益2007資料庫的核心理論與實務第三版XML文件的處理 多種
14、模式,各提供適當的API來存取XML檔案資料DOM (Document Object Model)一個XML檔案由剖析器(Parser)讀入後,在電腦記憶體裡形成一個樹狀結構 SAX(Simple API for XML )SAX並不試圖將整個XML檔案載入,而只提供一些API來抓取XML裡的部分資料 XPath提供了一種簡單的查詢方式 XQuery類似XPath,不過語法較為複雜,可以做較複雜的條件搜尋 XSL (Extensible Stylesheet Language )設定XML文件的格式(Style),以便轉成另一個XML檔案、HML檔案、或其他格式的檔案 14-30黃三益2007
15、資料庫的核心理論與實務第三版14-31黃三益2007資料庫的核心理論與實務第三版14-32黃三益2007資料庫的核心理論與實務第三版XQueryXQuery是建置在XPath之上以提供更強大的搜尋功能範例 FOR $r IN doc(library.xml)/branchbranchIDLET $b:=doc(library.xml)/bookinBranch=$rWHERE count($b) 100000RETURN $r, count($b) 14-33黃三益2007資料庫的核心理論與實務第三版資料庫管理系統對XML的支援 XML的專屬DBMS 仍很少見絕大多數DBMS所提供的功能僅限於
16、XML文件的轉入和轉出 以Oracle為例 14-34黃三益2007資料庫的核心理論與實務第三版XML轉入DBMS的資料表 最簡單的方式是將一個XML文件內容當成一個欄位值 產生一個資料表來儲存所有XML文件CREATE TABLE xml_doc ( docname VARCHAR2(100) PRIMARY KEY, doc CLOB, insertdate DATE DEFAULT SYSDATE); 利用輔助程式(insertXML,是一支PL/SQL程式)將XML文件新增成該資料表的一筆記錄 利用輔助程式來檢查該XML文件 14-35黃三益2007資料庫的核心理論與實務第三版XML轉
17、入DBMS的資料表(Cont.)第二種方式是將一個XML文件建成一個資料表,並將裡頭的標籤視為欄位 產生一個資料表來儲存一個XML文件。CREATE TABLE empleados (empid NUMBER PRIMARY KEY, empname VARCHAR2(30), empjob VARCHAR2(30), empsal NUMBER); 利用輔助程式(insertXML,是一支PL/SQL程式)將XML文件匯入該資料表14-36黃三益2007資料庫的核心理論與實務第三版DBMS的資料表轉出XML文件 先準備成一個巢狀結構的資料表以便匯出create or replace type
18、 nested_type as object (c1 number(5), c2 varchar2(30); create or replace type nested_type_table as table of nested_type; create table nested_sample ( field1 number(5), field2 nested_type_table ) nested table field2 store as nested_table; 呼叫輔助程式(XmlReadFromDb,是一支java程式)來讀取該資料表並輸出成一XML檔14-37黃三益2007資料庫的核心理論與實務第三版