0

XMLスキーマに従ってXFormsインスタンスをバインドしようとしています。次の場合のように、ファセットで正常に機能します。ここで、はタイプValeurNoteTypeの制限です。xs:decimal

<xforms:bind nodeset="instance('note-template')">
    <xforms:bind nodeset="Valeur" type="ValeurNoteType"/>
</xforms:bind>

XForms 1.1は、次の例のように、バインディングの複合型をサポートしていないようです。ここExamenTypeで、はシーケンスです。

<xforms:bind nodeset="instance('examen-template')">
    <xforms:bind nodeset="Examen" type="ExamenType"/>
</xforms:bind>

私が欲しいのは、xmlスキーマにあるタイプ<xforms:bind nodeset="Titre" required="true()"/>のすべての要素(またはシーケンス内の要素のタイプなどの他の条件)に書き込むことを避けることです。ExamenTypeMin Occurs = 1xs:date

Orbeonでそれを行う方法はありますか?

4

1 に答える 1

1

XForms 1.1 では、type属性の処理方法が明確に指定されています。

typeモデル アイテムのプロパティは、子要素を含むインスタンス ノードには適用されません。typeモデル アイテムのプロパティは、データ型 ([XML スキーマ パート 2] で定義) を文字列値 ([XPath 1.0] で定義) に関連付けます。インスタンス ノード。関連付けられているデータ型は、simpleType 定義から取得するか、complexType から simpleContent 定義から取得できます。上記のようにデータ型を取得できない場合は、のデフォルト値xsd:stringが使用されます。

つまり、このtype属性は、ドキュメントの構造ではなく、テキスト コンテンツを検証する方法としてのみ機能します。

スキーマが存在する場合、インスタンス全体が検証され (Orbeon フォームにはそれを制御するための拡張機能があります。「検証」を参照してください)、複雑なコンテンツ検証によるものを含め、そのプロセスでノードを無効としてマークすることもできます。しかし、これがあなたの場合に役立つかどうかはわかりません。typeいずれにせよ、これは属性の処理とは別のプロセスです。

于 2013-01-02T03:11:47.767 に答える