與關系數據不同,IBM® DB2® 9 的 pureXML® 特性用全新的方式支持 XML 數據 —— 將 XML 作為新的數據類型處理,並存儲在一個自然的層次結構中。IBM Data Studio 能夠創建帶有多個 pureXML 參數的 Data Web Services,它可以處理數據庫中的 pureXML 實例。
pureXML 和 Data Web Services
將 XML 數據存儲為 CLOB 或將其分割為關系表的時代已經過去。與關系數據不同,DB2 9 的 pureXML 特性以全新的方式支持 XML 數據 —— 將 XML 作為新的數據類型處理,並存儲在一個自然的層次結構中。pureXML 將 XML 與關系數據無縫集成起來,從而加快了應用程序開發,並且通過高度優化的 XML 索引改善了搜索性能。此外,它還是很靈活的,因為您可以使用 SQL 和 XQuery 查詢 XML 數據。以 pureXML 形式存儲的 XML 數據可以通過 Data Web Service 機制公開為 Web 服務(參見本系列的 第 1 部分)。
pureXML 支持在 XFG 中如何工作
常用縮略詞
CLOB:字符大對象(Character Large Object)
SOAP:簡單對象訪問協議(Simple Object Access Protocol)
UI:用戶界面(User interface)
WSDL:Web 服務描述語言(Web Services Description Language)
XHtml:可擴展超文本標記語言(Extensible Hypertext Markup Language)
XML:可擴展標記語言(Extensible Markup Language)
首先需要創建一個微型的、基於 DB2 表的 pureXML 應用程序,以演示 XFG 中的 pureXML 支持的詳細步驟。表 1 顯示了這個表的結構。在演示之前,我們插入一個樣例記錄作為 pureXML 引用實例。在這個記錄中 XML1 列沒有綁定到任何模式,而 XML2 列綁定到一個已注冊模式 — 如 清單 1 所示的 Express 模式。注意:pureXML 引用實例 是用於通過 XFG 生成 XHtml/XForm 的 XML 模板。據我們所知,XFG 能夠從 XML 或 WSDL 生成表單。
表 1. 表結構概覽
查看原圖(大圖)
清單 1. Express 模式
查看原圖(大圖)
創建 Data Web Services
在 DB2 數據庫中創建表之後,則可以使用 Data Studio 來創建包含 SQL 語句的 SQL 文件:
INSERT INTO XFGDEMO (ID, NAME, XML1, XML2) VALUES (:id, :name, :purexml1, :pureXML2)
然後創建 Data Web Services。在創建 Web 服務樣例時,生成一個名為 insertRecord.wsdl 的 WSDL 文件。該文件類似於 清單 2 中的文件。可以在生成的 WSDL 文件中看到兩個 pureXML 參數,即 PUREXML1 和 PUREXML2。這兩個 pureXML 字段綁定到 xsd:anyType,在隨後的步驟中將使用 XFG 將它們可視化為 XHtml/XForm 片段。
清單 2. WSDL 文件中的 pureXML 參數
生成 XHtml/XForms
從 Data Studio 創建和部署 Data Web Services 之後,就可以使用 XFG 生成與服務進行通信的 XHtml/XForms 和相應的 XML 文件。
選擇 insertRecord.wsdl 文件,右鍵單擊 WSDL 文件,然後從 XForms Generator 菜單選擇 Generate XHtml/XForms 向導。圖 1 顯示了該向導的第一個步驟:
圖 1. XFG 向導中的第一個步驟
查看原圖(大圖)
生成驗證信息
在 XFG 中,可以將額外的驗證約束附加到 pureXML 字段。如果選擇 Generate validation information 選項,將會看到一個驗證編輯器向導頁面,在這裡可以按照以下步驟配置額外的驗證規則。
從數據庫獲取 pureXML 實例
XFG 支持兩種在 WSDL 中可視化 pureXML 字段的方式。第一種方式是在本地文件系統中使用 pureXML 實例,然後從本地文件系統讀取綁定模式。第二種方式是在數據庫中使用 pureXML 實例,然後從 XML 模式存儲庫(XML Schema Repository,XSR)中獲取已注冊模式。如果選擇了 RetrIEve PureXML instance from Database 復選框,則可以使用這兩種方式;如果沒有選擇,則僅能在文件系統中使用模式。選中這個復選框,然後單擊 Next。
在下一個屏幕中,選擇 insertRecord 操作然後單擊 Next。此時,將看到 Configure PureXML 向導頁面,如 圖 2 所示。在這裡,XFG 能夠識別所有 pureXML 參數。您需要將 pureXML 實例指定為引用以生成可視的 XHtml/XForm,然後從數據庫獲取這個 pureXML 實例。請注意,對於 pureXML 實例的引用,PUREXML1 沒有綁定到任何模式,而 PUREXML2 綁定到 清單 1 所示的已注冊模式中。
圖 2. 配置 PureXML 向導頁面
查看原圖(大圖)
單擊 Next 就會出現 Validation Editor 屏幕。在這裡,添加一些針對 PUREXML1 的驗證規則。PUREXML1 不綁定到任何模式。
圖 3. 驗證編輯器 editor
查看原圖(大圖)
繼續該向導,最後單擊 Finish 生成 XHTML/XForms。生成的 XHTML 文件是 insertRecord.xHtml。圖 4 顯示了生成的表單:
圖 4. 在 Firefox 中顯示生成的 XHtml/XForm
查看原圖(大圖)
分析
在 清單 3 中生成的 XHtml 表單片段中,可以看到兩個 fIEldset 標記。每個標記都是從數據庫中特定的實例生成的,並且對應 清單 2 的 WSDL 文件中的 pureXML 參數。
清單 3. pureXML XForm 片段
查看原圖(大圖)
在清單 4 中,XFG 為已注冊模式生成綁定信息(您已經在 清單 1 中見過該模式)。
清單 4. 從已注冊模式生成的 pureXML 綁定信息
查看原圖(大圖)
同時,XFG 還在 清單 5 中為您在向導中設置的 PUREXML1 驗證規則生成綁定信息。
清單 5. 從 驗證規則生成的 pureXML 綁定信息
查看原圖(大圖)
在提交時合並多個模型
在生成的 XHtml/XForm 中,您將看到 3 個 XForm 模型:
第一個模型是全局性的,它與 WSDL 操作 insertRecord 對應。這個模型僅包含 4 個元素:ID、NAME、PUREXML1 和 PUREXML2。這些元素映射到 Data Web Services 中的 4 個參數名。
第二和第三個模型是針對 PUREXML1 和 PUREXML2 參數的 pureXML 模型,可從數據庫或本地文件系統獲取它們。在 XHtml/XForm 中的這兩個 pureXML 字段集的數據變更都可以應用到這兩個模型。
在提交到 Data Web Services 之前,XFG 將通過生成的客戶端 XHTML 腳本把這兩個 pureXML 模型合並為第一個全局性 XForm 模型,如 清單 6 所示。在表單提交之後,這個腳本在客戶端被作為 XHtml 表單的一部分執行。
清單 6. 模型合並 XHtml 腳本
查看原圖(大圖)
合並後的數據模型,如 清單 7 所示,是一個完整的 SOAP 消息,客戶端直接將它提交到 Web 服務,以使用來自表單的數據將一個新記錄插入到表中。
清單 7. 合並後的模型
查看原圖(大圖)
結束語
在本文,我們簡單描述了 XFG 中的 DB2 pureXML 支持。在 XML Forms Generator (XFG) 中添加 pureXML 支持之後,就可以為用戶將 pureXML 可視化為基於 XHTML 的 XForm。此外,還可以基於 XFG 獲取 pureXML 實例的已注冊的相關 XML Schema 並生成類型信息。還可以獲取驗證約束並將其添加到目標 pureXML XHTML/XForms。XFG 中的 pureXML 支持使得構建以 pureXML 形式存儲的 XML 實例的表單界面更加容易。在這個系列中,我們介紹了 XForms、XFG、Data Studio、Web services 和 pureXML 特性支持。學習了這兩篇文章之後,您就可以輕松使用 XFG 為後端 Data Services 生成有效的 XHtml/XForms UI,以構建完整的數據服務解決方案。
本文示例源代碼或素材下載