Представлять элементы выбора XSD в PDF-формах LiveCycle Designer

Я использую Adobe Livecycle Designer и файлы XML для создания некоторых форм PDF для проекта. Я создал XSD, который среди прочего содержит неограниченную последовательность вариантов, например что-то вроде следующего:

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

Чтобы представить это в Adobe Livecycle Designer, у меня есть что-то вроде следующего:

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 выше. Я также использую привязки, чтобы связать элементы Item1 и Item2 из XSD с Item1Wrapper и Item2Wrapper соответственно. Проблема в том, что, когда у меня есть элемент Item1 в XML, создаются Item1Wrapper и Item2Wrapper (и то же самое с Item2). Есть ли способ контролировать загрузку, чтобы скрыть соответствующую обертку?

Я хотел бы сообщить вам, что, к сожалению, я не могу изменить ни PDFForm, ни XSD.

2 ответа

Решение

Если я вас правильно понимаю, решение должно быть ограничено изменением файла XML.

Я не думаю, что вы сможете решить эту проблему, не изменив форму PDF, так как вы установите ВСЕГДА вставлять ОБА дочерние элементы ItemsSubForm.

Вы должны были использовать либо подчиненную форму выбора, либо повторить настройки, связанные с каждым элементом? Обертка (повторите для каждого элемента данных, минимальное количество = 0).

Если выбор действительно прост, вы можете использовать перечисление xsd:. В противном случае ваш сложный тип должен выглядеть так:

<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"/>

и ваши привязки в диалоговом окне динамических свойств "Элементы списка" должны быть

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

при условии, что вы положили myItems элемент только под корневым элементом в вашей схеме.

Другие вопросы по тегам