Criação de formulários adaptáveis usando o Schema XML

Pré-requisitos

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.

Uso de um schema XML como modelo de formulário

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:

  • 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 elementos da hierarquia XSD ao formulário adaptável.
  • É possível pré-preencher o formulário usando XML compatível com o schema associado.
  • No envio, os dados inseridos pelo usuário são enviados como XML que se alinha ao schema associado.

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
  • 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 de tipo complexo Painel

Schema XML de exemplo

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>
Observação

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.

Adicionar propriedades especiais a campos usando schema XML

É 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 como 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 schema para um formulário adaptável, uma legenda padrão é gerada por:

  • Colocar o primeiro caractere do nome do elemento em maiúsculas
  • Inserindo espaço em branco nos limites do Camel Case.

Por exemplo, se você adicionar o elemento userFirstName schema, 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 schema XML para limitar os valores aceitáveis para um componente de formulário adaptável:

propriedade schema

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 máxima.

  • 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 maior que zero.

  • Caixa de texto

fractionDigits

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.

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

pattern

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.

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

Perguntas frequentes

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.

Um campo bindref de um elemento de schema 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 bindRefvalor 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:

  • Percorrer a estrutura em árvore
  • Use a caixa Pesquisar para localizar um elemento

O que é um bindRef?

A bindRef é a conexão entre um componente de formulário adaptável e um elemento ou atributo do schema. Determina o local em XPath que o valor capturado desse componente ou campo está disponível no XML de saída. A também bindRefé usada ao pré-preencher um valor de campo a partir do XML pré-preenchido (pré-preenchido).

Nesta página