2010-12-02 7 views
0

私は、Adobe Livecycle DesignerとXMLファイルを使用して、プロジェクト用のPDFフォームを作成しています。私は他の中の選択肢の無限の配列を含むXSDを作成し、次のような例を何かのために:アドビLiveCycle Designerでこれを表現するためにXSD choice要素をLiveCycle DesignerのPDFフォームに表現する

<xs:sequence maxOccurs="unbounded"> 
    <xs:choice> 
    <xs:element name="Item1" type="xs:string" /> 
    <xs:element name="Item2" type="xs:string"/> 
    </xs:choice> 
</xs:sequence> 

、私は次のようなものを持っている:

MyForm (Subform) 
    ItemsSubForm (Subform, repeated for many items) 
    Item1Wrapper (Subform) 
     Item1 (TextField) 
    Item2Wrapper (Subform) 
     Item2 (TextField) 
    AddItemsButtonsSubForm 
    AddItem1Button (Button) 
    AddItem2Button (Button) 

誰かがAddItem1Buttonを押すと、私は次を使用して、新しいItemsSubFormインスタンスを作成します。

this.parent.parent._ItemsSubForm.addInstance(); 
xfa.resolveNode("this.parent.parent.ItemsSubForm[" +(this.parent.parent.ItemsSubForm.instanceManager.count - 1) + "]").Item2Wrapper.presence = "hidden"; 

そしてAddItem2Buttonための反対の事。

手動で項目を挿入する以外にも、XMLファイルを使用できるようにしたいので、上記のXSDを作成しました。また、バインディングを使用して、Item1WrapperとItem2WrapperでそれぞれXSDのItem1とItem2要素を関連付けます。問題は、XMLにItem1要素があると、Item1WrapperとItem2Wrapperの両方が作成されます(Item2も同じです)。それぞれのラッパーを隠すためにロードを制御する方法はありますか?

残念ながら、私はPDFFormまたはXSDを変更できないことをお知らせしたいと思います。

答えて

1

私が正しく理解していれば、解決策はXMLファイルの変更に限られます。

あなたは、常にItemsSubFormの子の両方を挿入するように設定するので、PDFフォームを変更せずにこれを解決できるとは思わないでしょう。

各Item?Wrapperに関連付けられた選択サブフォームまたは繰り返し設定のいずれかを使用してください(各データ項目に対して繰り返し、Min Count = 0)。

1

選択肢が本当に簡単な場合は、xsd:enumerationを使用できます。そうでなければ、あなたの複合型は次のようになります。「リスト項目」動的プロパティ]ダイアログボックスがあなただけのルート要素の下にmyItems要素を置くことを

Items: $record.myItems.item[*] 
Item Text: $ 
Item Value: $ 

と仮定しなければならないで

<xs:complexType name="ItemList"> 
    <xs:sequence> 
     <xs:element name="item" type="xs:string" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 
<xs:element name="myItems" type="ItemList"/> 

とあなたのバインディングをあなたスキーマ。

関連する問題