使用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元素或屬性
最適化表單元件
xs:string
文字方塊
xs:boolean
核取方塊
  • xs:unsignedInt
  • xs:xs:int
  • xs:decimal
  • 所有型別的數值
數值方塊
xs:date
日期挑選器
xs:enumeration
下拉式清單
任何複雜型別的元素
面板

範例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>
NOTE
確定您的XML結構描述只有一個根元素。 不支援具有多個根元素的XML結構描述。

使用XML結構描述新增特殊屬性至欄位 adding-special-properties-to-fields-using-xml-schema

您可以將下列屬性新增至「XML結構描述」元素,以將特殊屬性新增至相關聯的最適化表單的欄位。

結構描述屬性
在最適化表單中使用
支援
use=required
標籤欄位為必填
屬性
default="default value"
新增預設值
元素和屬性
minOccurs="3"

指定最小出現次數

(適用於可重複的子表單(複雜型別))

元素(複雜型別)
maxOccurs="10"

指定最大發生次數

(適用於可重複的子表單(複雜型別))

元素(複雜型別)
NOTE
將結構描述元素拖曳至最適化表單時,會產生預設標題:
  • 將元素名稱的第一個字元轉換為大寫
  • 在駝峰式大小寫邊界插入空格。
例如,如果您新增userFirstName結構描述元素,則最適化表單中產生的標題為User First Name

限制最適化表單元件的可接受值 limit-acceptable-values-for-an-adaptive-form-component

您可以將下列限制新增至XML結構描述元素,以限制最適化表單元件可接受的值:

結構描述屬性
資料類型
說明
元件
totalDigits
字串
指定元件中允許的最大位數。 指定的位數必須大於零。
  • 數值方塊
  • 數值步進器
maximum
字串
指定數值和日期的上限。 預設會包含最大值。
  • 數值方塊
  • 數值步進器
  • 日期挑選器
minimum
字串
指定數值和日期的下限。 預設會包含最小值。
  • 數值方塊
  • 數值步進器
  • 日期挑選器
exclusiveMaximum
布林值

如果為true,則表單元件中指定的數值或日期必須小於為maximum屬性指定的數值或日期。

如果為false,則表單元件中指定的數值或日期必須小於或等於為maximum屬性指定的數值或日期。

  • 數值方塊
  • 數值步進器
  • 日期挑選器
exclusiveMinimum
布林值

如果為true,則表單元件中指定的數值或日期必須大於針對minimum屬性指定的數值或日期。

若為false,則表單元件中指定的數值或日期必須大於或等於針對minimum屬性指定的數值或日期。

  • 數值方塊
  • 數值步進器
  • 日期挑選器
minLength
字串
指定元件中允許的最小字元數。 最小長度必須等於或大於零。
  • 文字方塊
maxLength
字串
指定元件中允許的最大字元數。 最大長度必須大於零。
  • 文字方塊
length
字串
指定元件中允許字元的確切數量。 長度必須等於或大於零。
  • 文字方塊
fractionDigits
字串
指定元件中允許的小數位數上限。 fractionDigits必須等於或大於零。
  • 資料型別為浮點數或小數的數值方塊
pattern
字串

指定字元順序。 如果字元符合指定的模式,元件會接受字元。

pattern屬性對應至對應的最適化表單元件的驗證模式。

  • 對應至XSD結構描述的所有調適型表單元件

常見問題 frequently-asked-questions

我如何知道樹狀結構中的哪個專案與哪個XML專案相關聯?

當您在「內容尋找器」中按兩下某個元素時,快顯視窗會顯示欄位名稱和名為bindRef的屬性。 此屬性會將樹狀元素對應至結構描述中的元素或屬性。

XML結構描述專案的bindref欄位

bindRef 欄位顯示樹狀元素與結構描述中元素或屬性之間的關聯。

NOTE
屬性的bindRef值中有@符號,以便與元素區分開來。 例如,/config/projectDetails/@duration

為什麼我無法為可重複的子表單(minOccours或maxOccurs值大於1)拖曳子表單的個別元素(由任何複雜型別產生的結構)?

在可重複的子表單中,您必須使用「完成」子表單。 如果您只想使用選擇性欄位,請使用整個結構並刪除不需要的結構。

我在內容尋找器中有長而複雜的結構。 如何找到特定專案?

您有兩個選項:

  • 捲動瀏覽樹狀結構
  • 使用搜尋方塊來尋找元素

什麼是bindRef?

bindRef為最適化表單元件與結構描述元素或屬性之間的連線。 它指定從這個元件或欄位擷取的值可在輸出XML中使用的XPath。 從預填(預填) XML預先填入欄位值時,也會使用bindRef

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2