XML スキーマを使用したアダプティブフォームの作成 creating-adaptive-forms-using-xml-schema
アダプティブフォームの新規作成または 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 スキーマのサンプル 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>
XML スキーマを使用したフィールドへの特別なプロパティの追加 adding-special-properties-to-fields-using-xml-schema
次の属性を XML スキーマ要素に追加して、関連付けられたアダプティブフォームのフィールドに特別なプロパティを追加できます。
- 要素名の最初の文字を大文字にします。
- キャメルケースの単語の境界にスペースを挿入します。
userFirstName
スキーマ要素を追加した場合、アダプティブフォームで生成されるキャプションは User First Name
となります。アダプティブフォームコンポーネントで許容される値の制限 limit-acceptable-values-for-an-adaptive-form-component
XML スキーマの要素に以下の制限を追加して、アダプティブフォームコンポーネントで許容される値を制限できます。
よくある質問 frequently-asked-questions
ツリーのどの要素がどの XML 要素に関連付けられているかを知るには、どうすればよいですか?
コンテンツファインダーで要素をダブルクリックすると、フィールド名と bindRef
というプロパティがポップアップウインドウに表示されます。このプロパティはツリー要素をスキーマ内の要素または属性にマッピングします。
bindRef
フィールドは、ツリー要素とスキーマ内の要素または属性の間の関連付けを示します。
bindRef
値に @
記号が含まれているので、要素と区別できます。例えば、/config/projectDetails/@duration
。繰り返し可能なサブフォーム(minOccurs 値または maxOccurs 値が 1 より大きい)では、サブフォーム(任意の複合型から生成された構造)の個々の要素をドラッグできないのはなぜですか?
繰り返し可能なサブフォームでは、完全なサブフォームを使用する必要があります。選択した一部のフィールドのみを使用する場合は、構造全体を使用し、不要部分を削除します。
コンテンツファインダーに長く複雑な構造があります。特定の要素を見つけるにはどうすればよいですか?
以下の 2 つのオプションがあります。
- ツリー構造をスクロールする
- 検索ボックスを使用して、要素を検索する
bindRef とは何ですか?
bindRef
は、アダプティブフォームコンポーネントとスキーマ要素または属性との接続です。これは、このコンポーネントまたはフィールドから取得された値が出力 XML で使用できる、XPath
を指定しています。bindRef
は、事前入力された XML からフィールドの値を事前に入力する際にも使用されます。