技術背景
DB2 9 pureXML 將 XML 視為原生資料型別,以階層結構儲存而非 CLOB 或關聯拆解,支援 SQL/XML 與 XQuery 雙重查詢。IBM Data Studio 可將 pureXML 參數公開為 Data Web Service,配合 XML Forms Generator (XFG) 自動產生 XHTML/XForms 前端介面,實現端對端 XML 資料流。
核心流程架構
- 資料庫層: 建立含 pureXML 欄位(
XML1 無結構描述、XML2 綁定已註冊 XSD)的表格。
- 服務層: Data Studio 建立 SQL 陳述式檔 → 產生 Data Web Service → 產出 WSDL(含
xsd:anyType 代表 pureXML 參數)。
- 表單層: XFG 讀取 WSDL → 選擇「從資料庫擷取 pureXML 實例」→ 配置驗證規則 → 產生 XHTML/XForms(含多模型合併腳本)。
- 執行層: 使用者在瀏覽器填寫表單 → 用戶端 JavaScript 合併 pureXML 模型 → 送出 SOAP 訊息 → Data Web Service 寫入 DB2。
關鍵技術細節
1. pureXML 實例作為範本
XFG 需要一份 XML 範例(實例文件)來推斷結構並產生表單控制項。兩種來源:
- 本地檔案系統 XML 檔案
- 資料庫中實際儲存的 pureXML 資料列(勾選「Retrieve PureXML instance from Database」)
2. 結構描述綁定與驗證
- 無結構描述欄位(XML1): XFG 依實例推斷結構,開發者可在驗證編輯器手動加入規則(必填、資料型別、長度、正則)。
- 已註冊 XSD 欄位(XML2): XFG 從 XML Schema Repository (XSR) 讀取結構描述,自動產生型別資訊與驗證邏輯。
3. 多模型合併機制
產生的 XHTML 包含三個 XForms 模型:
- 全域模型:對應 WSDL 作業參數(ID, NAME, PUREXML1, PUREXML2)。
- pureXML1 模型:第一個 XML 參數的詳細結構。
- pureXML2 模型:第二個 XML 參數的詳細結構。
提交前,用戶端腳本將兩個 pureXML 模型序列化並合併進全域模型,形成完整 SOAP 訊息送出。
實作檢查清單
| 階段 | 關鍵動作 | 注意事項 |
| DB 設計 | 建立 pureXML 欄位、註冊 XSD 至 XSR | XML 欄位建議加上 CHECK CONSTRAINT 驗證 well-formed |
| Web Service | Data Studio 建立 SQL → 產生 WSDL | pureXML 參數會綁定為 xsd:anyType,需確認命名空間一致 |
| XFG 設定 | 選擇 WSDL → 勾選從 DB 擷取實例 → 配置驗證 | 驗證規則會內嵌於產生的 XForms bind 節點 |
| 部署測試 | 瀏覽器開啟 .xhtml → 填寫送出 → 驗證 DB 寫入 | 檢查 SOAP 訊息結構、命名空間、特殊字元逸出 |
優勢總結
- 零程式碼產生符合 pureXML 結構的資料輸入表單。
- 資料庫結構描述變更 → 重新產生 WSDL → XFG 重新產生表單,維護成本極低。
- 支援複雜驗證規則(跨欄位、條件式)並自動下推至用戶端。
- 純標準技術棧:SQL/XML、XQuery、WSDL、XForms、SOAP、XHTML。