私は xForms を学んでいますが、このコードが機能しない理由がわからないため、明らかに十分ではありません。
xForms 拡張機能を使用して FF2 で解析しますが、フォーム コントロールはレンダリングしません。IE7 と X-Smiles ではさまざまな問題が発生しますが、これらの問題が xForms によるものなのか、それとも何か他のものによるものなのかはわかりません。FF2 で動作するようになるまでは、わかりません。
私は xForms を学んでいますが、このコードが機能しない理由がわからないため、明らかに十分ではありません。
xForms 拡張機能を使用して FF2 で解析しますが、フォーム コントロールはレンダリングしません。IE7 と X-Smiles ではさまざまな問題が発生しますが、これらの問題が xForms によるものなのか、それとも何か他のものによるものなのかはわかりません。FF2 で動作するようになるまでは、わかりません。
残念ながら、このドキュメントには多くの問題が含まれています。
model
1) 最大の問題が数回発生します。これは、と UI の間の混乱が原因のようです。この 2 つは XForms ではまったく別物であり、モデル - ビュー - コントローラーの設計パターンに準拠しています。model
そのため、 のすべてが UI のすべてと完全に分離されていることを覚えておく必要があります。この 2 つの関係は、単に UI コントロールがmodel
のインスタンス データ ノードにバインドされる可能性があるということです。実際には、ドキュメントに関して言えば、これは要素select1
とrepeat
要素が要素の子であってはならないことを意味しますmodel
。のみinstance
でbind
あり、アクション要素は の子である可能性がありmodel
ます。
2)複数のmodel
要素を使用していますが、これはこのような単純な形式では不要です(それぞれに多くの とmodel
が含まれている可能性があるため)。これにフラグを立てる理由は、複数の を使用することでいくつかの潜在的な落とし穴が発生するためです。これは、可能な場合は 1 つに固執することで回避するのが最善です。たとえば、XPath 関数は複数の にまたがって機能しないため、それらの間のデータの依存関係について十分に注意する必要があります。また、UI コントロールは、それがバインドされているものに応じて更新されます。これは、コントロールが明らかに正常に更新されていないときに、過去にしばしば問題を引き起こしました。instance
bind
model
model
instance
model
model
repeat
3)要素を使用して子bind
を多数のノードに適用しようとしました。repeat
はモデル要素ではなく UI 要素であるため、これは誤りです。ただし、属性の代わりに属性をbind
取るため、実際にはまったく必要ありません。代わりに、これを行うことができます:nodeset
ref
repeat
<xf:bind nodeset="//want" readonly="true()" />
4) UI コントロールの多くで、bind 属性と ref 属性の両方を指定しています。これらの属性は、同じことを達成するためのさまざまな方法を表しているため、相互に排他的です。ref 属性には、UI コントロールをバインドするインスタンス データ ノードを識別する XPath が含まれている必要があります。bind 属性には、別の場所で定義されている bind 要素の ID を含める必要があります (この場合、bind 要素自体が、ノードセット属性を介して、コントロールがバインドするノードを識別します)。したがって、同じ UI コントロールで両方の属性を使用することは、矛盾しています。
5) いくつかの場所で、ref 属性を使用してコントロールを UI の別の要素にバインドしようとしました。コントロールは、インスタンス データにのみバインドできます。
6)イベントで呼び出そうとしている a のsetvalue
中に aがあります。このイベントは要素にディスパッチされないため、呼び出されることはありません。このイベントは、XForms 仕様で次のように定義されているコア フォーム コントロールにのみディスパッチされます。repeat
xforms-value-changed
repeat
setvalue
xforms-value-changed
入力|秘密|テキストエリア|出力|アップロード|範囲|トリガー|送信|選択|選択1
model
7) この質問に対する別の回答では、ドキュメントの本文に要素を配置するのは間違っていると述べています。残念ながら、そこにコメントするほどの評判はありませんが、答えが実際には間違っていることを指摘したかっただけです. model
要素を documentに配置することは慣例になっていますがhead
、XForms 仕様ではこれを義務付けているものはありません。実際、主要な XForms プロセッサの 1 つであるUbiquity XFormsでは、ブラウザの制限によりmodel
、ドキュメント内に が必要です。body
xf:repeat、xf:group、xf:input、... を xf:model の子にすることはできません。
モデルを body セクションに配置しないでください。代わりに、すべてのモデル定義は head セクションにある必要があります。現状では、コードは標準に準拠しておらず、理解するのが非常に困難です。
Xforms Wiki bookは、XForms を学習するための優れたリソースです。