5

(eXist と XSLTForms を使用して) XML データベースへの XForm インターフェイスを設計する際に、オプション要素の入力コントロールを含めたいと思います。XML データ レコードは既に存在し、オプションの要素を含むものもあれば、含まないものもあります。レコードを更新するために、既存の XML レコードをモデル インスタンスとして使用しています。問題は、オプション要素が存在しない場合にフォーム コントロールが表示されないことです。これは論理的ですが、ユーザーがオプション要素にデータを追加したい場合に問題が発生します。

より明確にするために、データ レコードの例、data.xml を次に示します。

<a>
  <b>content</b>
</a>

RNC スキーマを使用:

start =
  element a {
    element b { text },
    element notes { text }?
  }

XForms モデル:

<xf:model>
    <xf:instance xmlns="" src="data.xml"/> 
    <xf:submission id="save" method="post" action="update.xq" />
</xf:model>

そして制御:

<xf:input ref="/a/notes">
  <xf:label>Notes (optional): </xf:label>
</xf:input>  

問題は、「メモ」入力コントロールが単に表示されないことです。

明らかな解決策は、ユーザーが必要に応じて要素を挿入できるようにトリガー ボタンを追加することですが、入力コントロールのみを表示し、空にすることをお勧めします。

私の質問は、コントロールが常に表示される原因となる、あまり知られていない属性/バインド/複数のインスタンス/xpath 式の微妙な組み合わせはありますか?

4

2 に答える 2

2

正直なところ、XFormsはこのオプションの要素の状況をうまく処理しません。Micahのブログでこの関連する議論を参照してください。あまり満足のいく回避策は、eXistからデータを取得した後、これらのオプションの要素に空の要素を追加し、データをeXistに保存する前にそれらを削除することです。

于 2011-01-05T22:12:35.703 に答える
2

この状況は、すでに W3C Forms Group で議論されています: http://www.w3.org/2010/07/07-forms-minutes.html 新しい MIP を使用すると、XSLTForms でこれを実装するのに役立ちます。

-アラン

于 2011-01-06T16:50:41.737 に答える