0

正規表現を使用して2つのXFormノードを比較しようとしています。例えば、

  • ノード1は/data/Q1です
  • ノード2は/data/Q2です

私がやりたいのは、ノード2の値がノード1の値より大きくなることはできないという制約をノード2に配置することです。bind要素に次のステートメントを配置します。

constraint=regex(/data/Q1 >= /data/Q2)

しかし、これは機能していません。

とにかく、正規表現に前のノードから値を読み取らせることはできますか?

4

1 に答える 1

0

regex()xpath または xforms で定義されているという名前の関数はありません。したがって、これが実装固有の機能でない場合 (そうであれば、使用している xforms エンジンを質問に追加してください)、有効な正規表現を使用しても制約は機能しません。ノードの値が正規表現と一致するかどうかを確認する場合はmatches()、XPath の一部である関数を使用する必要があります。

関数ではmatches()、関数の引数に XPath を使用できる必要があります。/data/patternノードに有効な正規表現パターンが文字列として含まれて/data/valueおり、そのパターンに一致するかどうかを確認する値があると仮定すると、機能matches(/data/value, /data/pattern)するはずです。これを:のconstraint属性に入れることもできます。xforms:bindconstraint="matches(/data/value, /data/pattern)"

matches()通常、Martin がコメントしたように、2 つのノードの単純な値の比較には関数は必要ありません。XPath で使用できる通常の比較式を使用するだけです。

于 2012-05-31T10:46:11.547 に答える