前端:Lotus Forms (XForms/XFDL) 捕獲 XML 數據 → 中間層:Data Studio Developer 生成 Web Service (SOAP/REST) 部署於 WebSphere AS → 後端:DB2 pureXML 原生存儲/查詢 XML。全鏈路 XML 零轉換,極大簡化開發與運行。
CREATE DATABASE eformdb USING CODESET UTF-8 TERRITORY US;
CONNECT TO eformdb;
CREATE TABLE eformtable (form XML);
EFORMDB,選 JDBC 驅動,測試連通eFormProjectinsertForm.sql:
INSERT INTO eformtable (form) VALUES (:document);
eFormWebService(Namespace eForm)insertForm.sql 拖入 Service 生成 Operation insertFormeForm.wsdleForm.wsdlinsertFormSoapInput 創建 Instance INSTANCE<document> 結構:
<document>
<data>
<name><firstname/><lastname/></name>
</data>
</document>
data 元素到畫布,自動生成標籤/輸入框綁定SUBMISSION<xforms:submission id="SUBMISSION" replace="none" method="post"
action="https://localhost:8080/eFormProjecteFormWebService/Services/eFormWebService"
mediatype="application/soap+xml action=eForm/insertForm"/>
action 取自 WSDL soap:addressmediatype action 取自 WSDL soap:operationSUBMISSIONeForm.xfdleForm.xfdl,填寫提交-- 查詢所有用戶ID
SELECT XMLCAST(XMLQUERY('$f/data/userid/text()' PASSING form AS "f") AS VARCHAR(15)) AS ID
FROM eformtable;
-- 關係化查詢姓 Smith 用戶
SELECT t.fname AS "First Name", t.lname AS "Last Name", t.id AS "User ID", t.phone AS "Phone"
FROM eformtable,
XMLTABLE('$d/data' PASSING form AS "d"
COLUMNS fname VARCHAR(20) PATH 'name/firstname',
lname VARCHAR(20) PATH 'name/lastname',
id VARCHAR(20) PATH 'userid',
phone VARCHAR(20) PATH 'phone') AS t
WHERE XMLEXISTS('$d/data/name[lastname="Smith"]' PASSING form AS "d");