使用XML架构创建自适应表单 creating-adaptive-forms-using-xml-schema
Adobe 建议使用现代、可扩展的数据捕获核心组件,以创建新的自适应表单或将自适应表单添加到 AEM Sites 页面。这些组件代表有关创建自适应表单的重大改进,确保实现令人印象深刻的用户体验。本文介绍了使用基础组件创作自适应表单的旧方法。
先决条件 prerequisites
使用XML架构作为自适应表单的表单模型创作时,需要基本了解XML架构。 此外,建议在阅读本文之前通读以下内容。
将XML架构用作表单模型 using-an-xml-schema-as-form-model
Experience Manager Forms支持使用现有XML架构作为表单模型来创建自适应表单。 此XML架构表示组织中的后端系统生成或使用数据的结构。
使用XML架构的主要功能包括:
- 在自适应表单的创作模式下,XSD的结构会在内容查找器选项卡中显示为树。 您可以将元素从XSD层级拖放到自适应表单中。
- 您可以使用与关联架构兼容的XML预填充表单。
- 在提交时,用户输入的数据将作为XML提交,这与关联的架构一致。
XML架构由简单和复杂的元素类型组成。 元素具有向元素添加规则的属性。 将这些元素和属性拖动到自适应表单上时,会自动映射到相应的自适应表单组件。
带有自适应表单组件的XML元素映射如下:
示例XML架构 sample-xml-schema
以下是XML架构的示例。
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="https://adobe.com/sample.xsd"
xmlns="https://adobe.com/sample.xsd"
xmlns:xs="https://www.w3.org/2001/XMLSchema"
>
<xs:element name="sample" type="SampleType"/>
<xs:complexType name="SampleType">
<xs:sequence>
<xs:element name="leaderName" type="xs:string" default="Enter Name"/>
<xs:element name="assignmentStartBirth" type="xs:date"/>
<xs:element name="gender" type="GenderEnum"/>
<xs:element name="noOfProjectsAssigned" type="IntType"/>
<xs:element name="assignmentDetails" type="AssignmentDetails"
minOccurs="0" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AssignmentDetails">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="durationOfAssignment" type="xs:unsignedInt" use="required"/>
<xs:attribute name="numberOfMentees" type="xs:unsignedInt" use="required"/>
<xs:attribute name="descriptionOfAssignment" type="xs:string" use="required"/>
<xs:attribute name="financeRelatedProject" type="xs:boolean"/>
</xs:complexType>
<xs:simpleType name="IntType">
<xs:restriction base="xs:int">
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GenderEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Female"/>
<xs:enumeration value="Male"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
使用XML架构向字段添加特殊属性 adding-special-properties-to-fields-using-xml-schema
您可以将以下属性添加到XML架构元素,以将特殊属性添加到关联的自适应表单的字段。
- 将元素名称的第一个字符变为大写
- 在“驼峰式大小写”边界处插入空格。
userFirstName
架构元素,则自适应表单中生成的标题为User First Name
。限制自适应表单组件的可接受值 limit-acceptable-values-for-an-adaptive-form-component
您可以向XML架构元素添加以下限制,以限制自适应表单组件可以接受的值:
常见问题解答 frequently-asked-questions
如何知道树中的哪个元素与哪个XML元素关联?
在内容查找器中双击某个元素时,弹出窗口会显示字段名称和名为bindRef
的属性。 此属性将树元素映射到架构中的元素或属性。
bindRef
字段显示树元素与架构中的元素或属性之间的关联。
bindRef
值中具有@
符号,以便与元素区分开。 例如:/config/projectDetails/@duration
。为什么我无法为可重复的子表单(minOccours或maxOccurs值大于1)拖动子表单的单个元素(从任何复杂类型生成的结构)?
在可重复的子表单中,必须使用“完成”子表单。 如果只需要选择字段,请使用整个结构并删除不需要的字段。
我在内容查找器中有一个长且复杂的结构。 如何查找特定元素?
您有两个选项:
- 滚动浏览树结构
- 使用搜索框查找元素
什么是bindRef?
bindRef
是自适应表单组件与架构元素或属性之间的连接。 它指示从此组件或字段中捕获的值在输出XML中可用的XPath
。 从预填充(预填充)的XML中预填充字段值时,也使用bindRef
。