時間:2022-12-06 14:30:01 | 來源:信息時代
時間:2022-12-06 14:30:01 來源:信息時代
與XML相關的規(guī)范 : SQL標準的一個重要組成部分,其標準編號為ISO/IEC 9075-14。該標準定義了如何在SQL數(shù)據(jù)庫系統(tǒng)中使用XML。采用SQL/XML,可以在數(shù)據(jù)庫中存儲XML文檔,也可以用專門的查詢語言XPath和XQuery來操縱數(shù)據(jù)庫中的XML文檔,還可以將數(shù)據(jù)庫中的數(shù)據(jù)轉換為XML文檔發(fā)布出來。在SQL:2008中,SQL/XML標準的全稱為:Information Technology—Database Languages—SQL—Part 14:XML-Related Specifications(SQL/XML)。
SQL/XML是隨著因特網(wǎng)和XML的發(fā)展而逐步發(fā)展出來的,它在SQL:2003中正式成為SQL標準的一部分,并在SQL:2008中得到了大幅度的改進。SQL/XML定義了一種新的SQL數(shù)據(jù)類型: XML,并且為之增加了操作函數(shù),包括:XMLCOMMENT、XMLCONCAT、XMLDOCUMENT、XMLELEMENT、XMLFOREST、XMLPARSE、XMLPI、XMLQUERY、XMLTEXT、XMLVALIDATE,謂詞: IS [NOT]CONTENT、IS[NOT] DOCUMENT、XMLEXISTS、IS [NOT]VALID。SQL/XML還定義了XML類型的宿主語言綁定支持,SQL標識符與XML名稱的映射,SQL數(shù)據(jù)和XML數(shù)據(jù)的映射,也定義了相關的標準符合性要求。
從數(shù)據(jù)類型的角度看,XML為關系數(shù)據(jù)庫增加了一種數(shù)據(jù)類型以及其上的操作。從數(shù)據(jù)模型的角度看,XML在層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫、關系數(shù)據(jù)庫、對象數(shù)據(jù)庫等模型之外,又為數(shù)據(jù)管理增加了XML數(shù)據(jù)庫這一新的模型。從數(shù)據(jù)交換的角度看,XML為數(shù)據(jù)庫管理系統(tǒng)增加了一種和其他數(shù)據(jù)管理系統(tǒng)之間交換數(shù)據(jù)的一種手段。
SQL/XML定義了一種新的內(nèi)置數(shù)據(jù)類型:XML類型。既然是一種內(nèi)置的數(shù)據(jù)類型,它就和其他的內(nèi)置數(shù)據(jù)類型一樣,可以用于定義表的列、例程的參數(shù)、用戶自定義類型的屬性、行的字段或SQL變量。同樣的,XML類型也是強類型的,用XML類型定義的一段文本和用字符類型定義的一段文本是不同的。XML類型的值的內(nèi)部表示是一個樹狀結構,可以包含有多種形式的XML信息項,是在XML信息集建議(information set recommendation,infoset)的基礎上的定義的。XML類型的值可以是空值或SQL/XML信息項的集合。
函數(shù)XMLPARSE則能將輸入的SQL字符串表達式轉換為一個XML類型的值,從而可以將關系表中的數(shù)據(jù)發(fā)布為XML數(shù)據(jù)。XMLSERIALIZE能將輸入的XML值表達式轉換為字符串類型或二進制串類型的值,從而可以將XML數(shù)據(jù)轉換并存放到關系表中。函數(shù)XMLQUERY用來執(zhí)行一個XQuery表達式。
謂詞IS [NOT] DOCUMENT用來檢測一個XML值是不是有效的,也就是檢查其是否為一個有且僅有一個XQuery元素結點,0個或多個XQuery注釋結點,0個或多個XQuery處理指令結點的XQuery文檔結點。
SQL/XML定義了SQL標識符到XML名稱的映射規(guī)則。之所以需要這些映射,是因為SQL標識符的字符集是實現(xiàn)者定義的,不同的實現(xiàn)可能采用不同的字符集。而XML名稱是有明確規(guī)定的,必須采用UCS字符集。SQL標識符是不區(qū)分大小寫的,而XML名稱是區(qū)分大小寫的。SQL中的標識符允許包含任何字符,而XML名稱中的字符是有一定限制的。為了解決這個映射問題,SQL/XML要求采用SQL字符集到UCS的映射,并且對SQL標識符中用到的那些在XML名稱中非法的字符做轉義處理。
SQL/XML定義了SQL數(shù)據(jù)類型到XML模式類型之間的映射。SQL標準中的數(shù)據(jù)類型分為SQL預定義的數(shù)據(jù)類型、SQL用戶自定義類型、SQL構造類型。而XML模式類型分為數(shù)值型、字符型、布爾型、日期時間型以及List、Union、Simple、Complex等多種復雜類型。SQL類型和XML模式類型之間不可能一對一的精確映射。SQL/XML還定義了SQL類型的值到XML類型的值之間的映射。首先把SQL類型映射到XML模式類型,預定義SQL類型的值首先被轉換為字符類型,然后映射為對應的XML類型的值。SQL中的數(shù)值如果沒有小數(shù)部分,則被映射為沒有小數(shù)點的XML字符串??罩狄幢挥成錇閤si:nil=“true”,要么是空元素。字符值中的<、>、&和回車等被映射為實體化形式。
SQL/XML還定義了SQL中的目錄、模式、表到XML文檔的映射關系。映射時會產(chǎn)生兩個文檔,一個是XML模式文檔,一個是XML文檔。表既可以被映射到一個元素,也可以被映射為一系列的元素。
為了在嵌入式 SQL 中支持XML類型。SQL/XML還定義了XML類型在宿主語言中的綁定方式。在從SQL環(huán)境中將XML類型的值傳遞到宿主語言中時,XML 類型的值要先被函數(shù)XMLSERIALIZE 處理。反之,則要被函數(shù)XMLPARSE處理。宿主語言變量在定義時不僅要指明XML類型,還要指明期望的字符串類型、DOCUMENT或CONTENT選項。SQL實現(xiàn)要保證傳遞到宿主語言的XML文檔采用的字符集是符合宿主變量定義的。
SQL/XML還定義了標準的特性劃分以及具體的SQL實現(xiàn)支持哪些特性才可能被稱為符合標準的。
微信公眾號
版權所有? 億企邦 1997-2022 保留一切法律許可權利。