(eXistとXSLTFormを使用して)XMLデータベースへのXFormインターフェイスを設計する際に、オプションの要素の入力コントロールを含めたいと思います。 XMLデータレコードは既に存在し、一部にはオプションの要素が含まれていますが、他の要素は含まれていません。レコードを更新するには、既存のXMLレコードをモデルインスタンスとして使用しています。問題は、オプションの要素が存在しない、つまり論理的ですが、ユーザーがオプションの要素にデータを追加するときに問題が発生した場合にフォームコントロールが表示されないことです。オプションのXML要素のXFormコントロールを許可する
<a>
<b>content</b>
</a>
RNCスキーマを持つ:
をより明確にするために、ここでの例のデータレコード、data.xmlのだ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="https://stackoverflow.com/a/notes">
<xf:label>Notes (optional): </xf:label>
</xf:input>
「Notes」入力コントロールが表示されないという問題があります。
明らかな解決策は、ユーザーが必要に応じて要素を挿入できるようにトリガーボタンを追加することですが、入力コントロールを表示させて空にすることをお勧めします。
私の質問は、コントロールが常に表示されるように、あまり知られていない属性/バインド/複数インスタンス/ xpath式の微妙な組み合わせですか?
この提案をお寄せいただきありがとうございます。私は、_new_要素を挿入して追加するのは簡単ではないことを発見しました。 – Cam
はい、 'xforms:insert'はかなり複雑な構造です。特に、その要素で使用できるすべての属性が原因です。しかし、2-3の主な使用事例があり、それぞれが異なる属性を要求しています。そして、一度それらの事柄のハングを取得すると、より簡単になります。 'xforms:insert'のチュートリアルをhttp://wiki.orbeon.com/forms/how-to/repeat-insert-position – avernet