2

参考までに、すでに尋ねられている最も類似した質問は次のとおりです:https : //stackoverflow.com/questions/8667849/making-xforms-enforce-the-constraint-and-type-model-item-properties-only-when-fi違いは、フィールドを表示してアクセスできるようにしたいので、「relevant」プロパティを使用できないことです。

次のプロパティを持つXFormsフォームを作成しようとしています。

  1. 'information'という名前のテキストフィールドが表示されます。(例)
  2. データを入力する必要がない場合があるため、このフィールドは必須ではありません。(または、このデータは後で入力されます。)
  3. ただし、このフィールドにデータを入力する場合は、指定された制約に準拠している必要があります。
  4. フィールドを非表示にし、一部のデータを入力する必要がある可能性があるため、フィールドを関連性のないものとしてマークすることはできません。

ここでの問題は、フィールドにデータがない場合でも、制約が適用されていることです(つまり、「必須」としてマークされていない場合でも)。

XForms 1.1の仕様を見てきましたが、「必須」と「制約」のプロパティがどのように相互作用するかを説明していないようです。

私が見る唯一のオプションは、空の値が許可されるように制約にパーツを追加することです。例えば:

。=''または<実際の制約>

しかし、私はこれが好きではありません。このようなすべてのフィールドにこれを追加することは、回避策のように感じます。

不要なフィールドがそのフィールドの制約と一致する必要がないことを表現する他の方法はありますか?(私は何かが足りないのですか?)

4

1 に答える 1

2

XForms 1.1では、required2つの目的を果たします。

  1. 必要に応じてフィールドにマークを付けます(実装では、これを反映するようにコントロールのスタイルを設定できます。たとえば、「*」を使用します)
  2. 検証プロセスに参加する

後者は4.3.3xforms-revalidateイベントで説明されています。

インスタンスノードは、次の条件が満たされる場合にのみ有効です。

そして、条件の1つは次のとおりです。

必要なモデルアイテムプロパティがtrueの場合、値は空ではありません

したがって、and検証に影響を与えるすべての側面の間で論理的です。

required="false()"たとえば、残りの検証を無効にする可能性があると言った場合など、状況がどのように異なっていたかがわかります。しかし、それはXFormsが取っているアプローチではありません。

これに基づいて、制約の一部として空をチェックすることに問題はありません。

XForms 2.0は、ロジックの再利用に役立つ可能性のあるカスタムXPath関数を追加する場合があります。

<bind ref="information" constraint="my:constraint(.)">

また、制約を型で表現できる場合は、XForms名前空間のスキーマ型の1つを使用できる可能性があります。これにより、空の値を有効にすることができます。たとえばxforms:double、空の文字列と42見なされ、有効な値であると見なされますが、ではありませんgaga

于 2012-04-11T16:58:08.413 に答える