使用XML架构创建自适应表单

上次更新: 2023-12-21
  • 创建对象:
  • Beginner
    Intermediate
    User
    Developer

Adobe 建议使用现代、可扩展的数据捕获核心组件,以创建新的自适应表单将自适应表单添加到 AEM Sites 页面。这些组件代表有关创建自适应表单的重大改进,确保实现令人印象深刻的用户体验。本文介绍了使用基础组件创作自适应表单的旧方法。

前提条件

使用XML架构作为自适应表单的表单模型创作时,需要基本了解XML架构。 此外,建议在阅读本文之前通读以下内容。

将XML架构用作表单模型

Experience Manager Forms 支持使用现有XML架构作为表单模型来创建自适应表单。 此XML架构表示组织中的后端系统生成或使用数据的结构。

使用XML架构的主要功能包括:

  • 在自适应表单的创作模式下,XSD的结构会在内容查找器选项卡中显示为树。 您可以将元素从XSD层级拖放到自适应表单中。
  • 您可以使用与关联架构兼容的XML预填充表单。
  • 在提交时,用户输入的数据将作为XML提交,这与关联的架构一致。

XML架构由简单和复杂的元素类型组成。 元素具有向元素添加规则的属性。 将这些元素和属性拖动到自适应表单上时,会自动映射到相应的自适应表单组件。

带有自适应表单组件的XML元素映射如下:

XML元素或属性 自适应表单组件
xs:string 文本框
xs:boolean 复选框
  • xs:unsignedInt
  • xs:xs:int
  • xs:decimal
  • 所有类型的数值
数值框
xs:date 日期选取器
xs:enumeration 下拉面板
任何复杂类型的元素 面板

示例XML架构

以下是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架构只有一个根元素。 不支持具有多个根元素的XML架构。

使用XML架构向字段添加特殊属性

您可以将以下属性添加到XML架构元素,以将特殊属性添加到关联的自适应表单的字段。

架构属性 在自适应表单中使用 在中支持
use=required 将字段标记为必填
属性
default="default value" 添加默认值 元素和属性
minOccurs="3"

指定最小出现次数

(对于可重复的子表单(复杂类型))

元素(复杂类型)
maxOccurs="10"

指定最大出现次数

(对于可重复的子表单(复杂类型))

元素(复杂类型)
注意

将架构元素拖动到自适应表单时,默认标题由以下操作生成:

  • 将元素名称的第一个字符变为大写
  • 在“驼峰式大小写”边界处插入空格。

例如,如果添加 userFirstName 架构元素中,在自适应表单中生成的标题为 User First Name.

限制自适应表单组件的可接受值

您可以向XML架构元素添加以下限制,以限制自适应表单组件可以接受的值:

架构属性

数据类型

描述

组件

totalDigits

字符串

指定组件中允许的最大位数。 指定的位数必须大于零。

  • 数值框
  • 数值步进器

maximum

字符串

指定数值和日期的上限。 默认情况下,包含最大值。

  • 数值框
  • 数值步进器
  • 日期选取器

minimum

字符串

指定数值和日期的下限。 默认情况下,将包含最小值。

  • 数值框
  • 数值步进器
  • 日期选取器

exclusiveMaximum

布尔值

如果为true,则表单的组件中指定的数值或日期必须小于为maximum属性指定的数值或日期。

如果为false,则表单的组件中指定的数值或日期必须小于或等于为maximum属性指定的数值或日期。

  • 数值框
  • 数值步进器
  • 日期选取器

exclusiveMinimum

布尔值

如果为true,则表单的组件中指定的数值或日期必须大于为最小属性指定的数值或日期。

如果为false,则表单的组件中指定的数值或日期必须大于或等于为minimum属性指定的数值或日期。

  • 数值框
  • 数值步进器
  • 日期选取器

minLength

字符串

指定组件中允许的最小字符数。 最小长度必须等于或大于零。

  • 文本框

maxLength

字符串

指定组件中允许的最大字符数。 最大长度必须大于零。

  • 文本框

length

字符串

指定组件中允许的确切字符数。 长度必须等于或大于零。

  • 文本框

fractionDigits

字符串

指定组件中允许的最多小数位数。 fractionDigits必须等于或大于零。

  • 数据类型为浮点数或小数的数字框

pattern

字符串

指定字符的顺序。 如果字符符合指定的模式,则组件接受这些字符。

pattern属性映射到相应自适应表单组件的验证模式。

  • 映射到XSD架构的所有自适应表单组件

常见问题解答

如何知道树中的哪个元素与哪个XML元素关联?

在内容查找器中双击某个元素时,弹出窗口会显示一个字段名称和名为的属性 bindRef. 此属性将树元素映射到架构中的元素或属性。

XML架构元素的bindref字段

bindRef 字段显示树元素与架构中的元素或属性之间的关联。

注意

属性具有 @ 符号所在的 bindRef值,以将其与元素区分开。 例如:/config/projectDetails/@duration

为什么我无法为可重复的子表单(minOccours或maxOccurs值大于1)拖动子表单的单个元素(从任何复杂类型生成的结构)?

在可重复的子表单中,必须使用“完成”子表单。 如果只需要选择字段,请使用整个结构并删除不需要的字段。

我在内容查找器中有一个长且复杂的结构。 如何查找特定元素?

您有两个选项:

  • 滚动浏览树结构
  • 使用搜索框查找元素

什么是bindRef?

A bindRef 是自适应表单组件与架构元素或属性之间的连接。 它规定 XPath 其中从此组件或字段捕获的值在输出XML中可用。 A bindRef在从预填充(预填充)的XML中预填充字段值时也可使用。

在此页面上