将 XSD 选择元素表示为 LiveCycle Designer PDF 表单

Posted

技术标签:

【中文标题】将 XSD 选择元素表示为 LiveCycle Designer PDF 表单【英文标题】:Represent XSD choice elements into LiveCycle Designer PDF forms 【发布时间】:2010-12-02 10:04:04 【问题描述】:

我正在使用 Adob​​e 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>

为了在 Adob​​e 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。我还使用绑定将 XSD 中的 Item1 和 Item2 元素分别与 Item1Wrapper 和 Item2Wrapper 相关联。问题是一旦我在 XML 中有一个 Item1 元素,就会同时创建 Item1Wrapper 和 Item2Wrapper(与 Item2 相同)。有什么方法可以控制加载以隐藏相应的包装器?

我想通知您,很遗憾我无法更改 PDFForm 或 XSD。

【问题讨论】:

【参考方案1】:

如果我理解正确,解决方案必须仅限于更改 XML 文件。

我认为如果不更改 PDF 表单,您将无法解决此问题,因为您将其设置为始终插入 ItemsSubForm 的两个子项。

您应该使用与每个 Item?Wrapper 关联的选择子表单或重复设置(重复每个数据项,Min Count = 0)。

【讨论】:

【参考方案2】:

如果选择真的很简单,您可以使用 xsd:enumeration。否则,您的复杂类型应如下所示:

<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 元素放在架构中的根元素下方。

【讨论】:

以上是关于将 XSD 选择元素表示为 LiveCycle Designer PDF 表单的主要内容,如果未能解决你的问题,请参考以下文章

在 LiveCycle 中的实例上修改字段

将XSD转换为.cs类

您可以在 Adob​​e LiveCycle Designer 中复制动作吗?

Adobe LiveCycle:使用 XSLT 将 XML 转换为 XML

Livecycle:在重复的子表单中引用对象

在定义 XML 模式 (XSD) 时“选择”“组”元素是不是有效