Criar formulários adaptáveis usando o Esquema XML

Pré-requisitos

A criação de um formulário adaptável usando um esquema XML como seu modelo de formulário requer compreensão básica de esquemas XML. Além disso, é recomendável ler o conteúdo a seguir antes deste artigo.

Uso de um esquema XML como modelo de formulário

O AEM Forms suporta a criação de um formulário adaptável usando um esquema XML existente como o modelo de formulário. Esse esquema XML representa a estrutura na qual os dados são produzidos ou consumidos pelo sistema de back-end na organização.

Os principais recursos do uso de um esquema XML são:

  • A estrutura do XSD é exibida como uma árvore na guia Localizador de conteúdo no modo de criação de um formulário adaptável. Você pode arrastar e adicionar elemento da hierarquia XSD ao formulário adaptável.
  • É possível preencher previamente o formulário usando XML compatível com o schema associado.
  • Ao enviar, os dados inseridos pelo usuário são enviados como XML que se alinha ao schema associado.

Um esquema 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
  • xs:unsignedInt
  • xs:xs:int
  • xs:decimal
  • Todos os tipos de valores numéricos
Caixa numérica
xs:date Seletor de data
xs:enumeration Lista suspensa
Qualquer elemento do tipo complexo Painel

Exemplo de esquema XML

Aqui está um exemplo de esquema 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>
OBSERVAÇÃO

Certifique-se de que o esquema XML tenha apenas um elemento raiz. Não há suporte para um esquema XML com mais de um elemento raiz.

Adicionar propriedades especiais a campos usando esquema XML

Você pode adicionar os seguintes atributos aos elementos do Esquema XML para adicionar propriedades especiais aos campos do formulário adaptável associado.

Propriedade do esquema Uso 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)
OBSERVAÇÃO

Ao arrastar um elemento de esquema para um formulário adaptável, uma legenda padrão é gerada por:

  • Capitalizar o primeiro caractere do nome do elemento
  • Inserindo espaço em branco nos limites da Camel Case.

Por exemplo, se você adicionar o elemento de esquema userFirstName, a legenda gerada no formulário adaptável será User First Name.

Limitar valores aceitáveis para um componente de formulário adaptável

É possível adicionar as seguintes restrições aos elementos do esquema XML para limitar os valores aceitáveis para um componente de formulário adaptável:

Propriedade do esquema

Tipo de dados

Descrição

Componente

totalDigits

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.

  • Caixa numérica
  • Escalonador Numérico

maximum

Sequência de caracteres

Especifica o limite superior para valores numéricos e datas. Por padrão, o valor máximo é incluído.

  • Caixa numérica
  • Escalonador Numérico
  • Seletor de datas

minimum

Sequência de caracteres

Especifica o limite inferior para valores numéricos e datas. Por padrão, o valor mínimo é incluído.

  • Caixa numérica
  • Escalonador Numérico
  • Seletor de datas

exclusiveMaximum

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 maximum .

  • Caixa numérica
  • Escalonador Numérico
  • Seletor de datas

exclusiveMinimum

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.

  • Caixa numérica
  • Escalonador Numérico
  • Seletor de datas

minLength

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.

  • Caixa de texto

maxLength

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.

  • Caixa de texto

length

Sequência de caracteres

Especifica o número exato de caracteres permitidos em um componente. O comprimento deve ser igual ou superior a zero.

  • Caixa de texto

fractionDigits

Sequência de caracteres

Especifica o número máximo de casas decimais permitidas em um componente. O fractionDigits deve ser igual ou maior que zero.

  • Caixa numérica com tipo de dados flutuante ou decimal

pattern

Sequência de caracteres

Especifica a sequência de 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.

  • Todos os componentes de formulários adaptáveis que estão mapeados para um esquema XSD

Perguntas frequentes

Como sei qual elemento na árvore está associado a qual elemento XML?

Ao clicar duas vezes 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 esquema.

Um campo bindref de um elemento de esquema XML

O campo bindRef mostra a associação entre um elemento de árvore e um elemento ou atributo em um schema.

OBSERVAÇÃO

Os atributos têm um símbolo @ em seu valor bindRefpara diferenciá-los dos elementos. Por exemplo, /config/projectDetails/@duration.

Por que não consigo arrastar elementos individuais de um subformulário (estrutura gerada de qualquer tipo complexo) para subformulários repetíveis (os valores minOccours ou maxOccurs são maiores que 1)?

Em um subformulário repetível, é necessário usar o subformulário completo. Se quiser apenas campos seletivos, use toda a estrutura e exclua os não desejados.

Tenho uma estrutura complexa longa no Localizador de conteúdo. Como posso encontrar um elemento específico?

Você tem duas opções:

  • Rolar pela estrutura de árvore
  • Use a caixa Pesquisar para localizar um elemento

O que é um bindRef?

Um bindRef é a conexão entre um componente de formulário adaptável e um elemento ou atributo de esquema. Determina o XPath onde o valor capturado desse componente ou campo está disponível no XML de saída. Um bindReftambém é usado ao pré-preencher um valor de campo a partir de XML pré-preenchido (pré-preenchido).

Nesta página