XForms と XPath

XForms は XPath を使用してデータを即座にアドレスを指定します。このプロセスはバインドと呼ばれます。

XForms バインド

XForms は二つの部分を使用してデータを定義します:XForms モデルと XForms ユーザーインターフェース。

XForms モデルはデータに対する XML テンプレート(インスタンス)であり、XForms ユーザーインターフェースはデータの入力と表示の説明です。

XForms は XPath この二つの部分の接続を定義するために使用されます。これは、バインド(バインディング)

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>ファーストネーム</label>
</input>
<input ref="name/lname">
<label>ラストネーム</label>
</input>

上記の例の ref="name/fname" 属性は、インスタンスモデル内の <fname> 要素を指す XPath 表現です。この表現は、入力フィールド属性で正から表单からデータを収集する XML 文書(インスタンス)の <fname> 要素まで。

XForms ユーザーインターフェースでは、参照を使用することもできます:

<input ref="/person/name/fname">
<label>ファーストネーム</label>
</input>
<input ref="/person/name/lname">
<label>ラストネーム</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>ファーストネーム</label>
</input>
<input bind="lastname">
<label>ラストネーム</label>
</input>

なぜ入力コントロール要素をインスタンスデータにバインドするための方法が二種類あるのでしょうか?

なぜ複雑なアプリケーションで XForms を使用し始めると、bind でバインドすることで多重フォームと多重インスタンスモデルを処理するより柔軟な方法が見つかるのでしょうか。