A criação de um formulário adaptável usando um schema XML como seu modelo de formulário requer uma compreensão básica dos schemas XML. Além disso, é recomendável ler o seguinte conteúdo antes deste artigo.
A AEM Forms suporta a criação de um formulário adaptável usando um schema XML existente como modelo de formulário. Este schema XML representa a estrutura na qual os dados são produzidos ou consumidos pelo sistema de back-end em sua organização.
Os principais recursos do uso de um schema XML são:
Um schema XML consiste em tipos de elementos simples e complexos. Os elementos têm atributos que adicionam regras ao elemento. Quando esses elementos e atributos são arrastados para um formulário adaptável, eles são mapeados automaticamente para o componente de formulário adaptável correspondente.
Esse mapeamento de elementos XML com componentes de formulário adaptáveis é o seguinte:
Elemento ou atributo XML | Componente de formulário adaptável |
---|---|
xs:string |
Caixa de texto |
xs:boolean |
Caixa de seleção |
|
Caixa numérica |
xs:date |
Seletor de data |
xs:enumeration
|
Lista suspensa |
Qualquer elemento de tipo complexo | Painel |
Aqui está um exemplo de um 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>
Certifique-se de que seu schema XML tenha apenas um elemento raiz. Não há suporte para um schema XML com mais de um elemento raiz.
É possível adicionar os seguintes atributos aos elementos do Schema XML para adicionar propriedades especiais aos campos do formulário adaptável associado.
propriedade schema | Usar em forma adaptável | Suportado em |
---|---|---|
use=required |
Marca um campo obrigatório |
Atributo |
default="default value" |
Adiciona um valor padrão | Elemento e atributo |
minOccurs="3" |
Especifica ocorrências mínimas (Para subformulários repetíveis (tipos complexos)) |
Elemento (tipo complexo) |
maxOccurs="10"
|
Especifica o máximo de ocorrências (Para subformulários repetíveis (tipos complexos)) |
Elemento (tipo complexo) |
Ao arrastar um elemento de schema para um formulário adaptável, uma legenda padrão é gerada por:
Por exemplo, se você adicionar o elemento de schema userFirstName
, a legenda gerada no formulário adaptável será User First Name
.
É possível adicionar as seguintes restrições aos elementos do schema XML para limitar os valores aceitáveis para um componente de formulário adaptável:
propriedade schema |
Tipo de dados |
Descrição |
Componente |
|
Sequência de caracteres |
Especifica o número máximo de dígitos permitidos em um componente. O número de dígitos especificado deve ser maior que zero. |
|
|
Sequência de caracteres |
Especifica o limite superior para valores numéricos e datas. Por padrão, o valor máximo é incluído. |
|
|
Sequência de caracteres |
Especifica o limite inferior para valores numéricos e datas. Por padrão, o valor mínimo é incluído. |
|
|
Booleano |
Se verdadeiro, o valor numérico ou a data especificada no componente do formulário deve ser menor que o valor numérico ou a data especificada para a propriedade máxima. Se falso, o valor numérico ou a data especificada no componente do formulário deve ser menor ou igual ao valor numérico ou à data especificada para a propriedade máxima. |
|
|
Booleano |
Se verdadeiro, o valor numérico ou a data especificada no componente do formulário deve ser maior que o valor numérico ou a data especificada para a propriedade mínima. Se falso, o valor numérico ou a data especificada no componente do formulário deve ser maior ou igual ao valor numérico ou à data especificada para a propriedade mínima. |
|
|
Sequência de caracteres |
Especifica o número mínimo de caracteres permitidos em um componente. O comprimento mínimo deve ser igual ou superior a zero. |
|
|
Sequência de caracteres |
Especifica o número máximo de caracteres permitidos em um componente. O comprimento máximo deve ser maior que zero. |
|
|
Sequência de caracteres |
Especifica o número exato de caracteres permitidos em um componente. O comprimento deve ser igual ou maior que zero. |
|
|
Sequência de caracteres |
Especifica o número máximo de casas decimais permitidas em um componente. fractionDigits deve ser igual ou maior que zero. |
|
|
Sequência de caracteres |
Especifica a sequência dos caracteres. Um componente aceita os caracteres se eles estiverem em conformidade com o padrão especificado. A propriedade pattern mapeia para o padrão de validação do componente de formulário adaptável correspondente. |
|
Como faço para saber qual elemento na árvore está associado a qual elemento XML?
Ao clicar com o duplo em um elemento no Localizador de conteúdo, um pop-up exibe um nome de campo e uma propriedade chamada bindRef
. Essa propriedade mapeia o elemento de árvore para o elemento ou atributo no schema.
O campo bindRef mostra a associação entre um elemento de árvore e um elemento ou atributo em um schema.
Os atributos têm um símbolo @
em seu valor bindRef
para diferenciá-los dos elementos. Por exemplo, /config/projectDetails/@duration
.
Por que não consigo arrastar elementos individuais de um subformulário (estrutura gerada a partir de qualquer tipo complexo) para subformulários repetitivos (os valores minOccours ou maxOccurs são maiores que 1)?
Em um subformulário repetível, é necessário usar o subformulário completo. Se você quiser apenas campos seletivos, use a estrutura inteira e exclua os não desejados.
Tenho uma estrutura longa e complexa no Localizador de conteúdo. Como posso encontrar um elemento específico?
Você tem duas opções:
O que é um bindRef?
Um bindRef
é a conexão entre um componente de formulário adaptável e um atributo ou elemento de schema. Determina XPath
onde o valor capturado deste componente ou campo está disponível no XML de saída. Um bindRef
também é usado ao pré-preencher um valor de campo a partir do XML pré-preenchido (pré-preenchido).