XForms 綁定
XForms 使用兩個部分來定義數據:XForms 模型和 XForms 用戶界面。
XForms 模型是針對數據的一個 XML 模板(實例),而 XForms 用戶界面是對數據輸入和顯示的描述。
XForms 使用 XPath 來定義這個兩個部分的連接。這被稱為綁定(binding)。
XPath
XPath 用於定義 XML 文檔的各部分的 W3C 標准語法。
XPath 使用路徑表達式來標示 XML 文檔中的節點。這些表達式與您在計算機系統中看到的文件路徑表達式非常類似。
XPath 表達式:
/person/fname
對 XML 文檔中的 fname 節點進行尋址:
<person>
<fname>David</fname>
<lname>Smith</lname>
</person>
在我們的 XPath 教程 中學習更多有關 XPath 的知識。
使用 Ref 進行綁定
XForms 模型是這樣的:
<instance>
<person>
<name>
<fname/>
<lname/>
</name>
</person>
</instance>
XForms 用戶界面可使用 ref 屬性來捆綁 <input> 元素:
<input ref="name/fname">
<label>First Name</label>
</input>
<input ref="name/lname">
<label>Last Name</label>
</input>
上面例子中的 ref="name/fname" 屬性是一個指向實例模型中 <fname> 元素的 XPath 表達式。它可將輸入域捆綁到正從表單收集數據的 XML 文檔(實例)中的 <fname> 元素。
XForms 用戶界面也可以使用引用:
<input ref="/person/name/fname">
<label>First Name</label>
</input><input ref="/person/name/lname">
<label>Last Name</label>
</input>
在上面的例子中,XPath 表達式起始部位的正斜槓 (/) 指示 XML 文檔的根。
使用 Bind 進行綁定
XForms 模型是這樣的:
<model>
<instance>
<person>
<name>
<fname/>
<lname/>
</name>
</person>
</instance>
<bind nodeset="/person/name/fname" id="firstname"/>
<bind nodeset="/person/name/lname" id="lastname"/>
</model>
XForms 用戶界面可使用 bind 屬性來捆綁 <input> 元素:
<input bind="firstname">
<label>First Name</label>
</input>
<input bind="lastname">
<label>Last Name</label>
</input>
為什麼會有兩種將輸入控件元素捆綁到實例數據的方法呢?
怎麼說呢,當您在復雜的應用程序中開始使用 XForms 時,您會發現,使用 bind 進行綁定是一種更靈活的處理多重表單和多重實例模型的方法。