テンプレート定義ファイルの TemplateDocument エレメント
インバウンド XML メッセージごとに、メッセージ中に定義されているテンプレート文書が少なくとも 1 つはなければなりません。 これは TemplateDocument エレメントで定義されます。 TemplateDocument エレメントには、以下の 4 つのサブエレメントがあります:
- DocumentType (オプションのバージョン属性付き): このパーツは、
XML 文書名またはルート・エレメント名、およびルート・エレメントの "version" 属性 (存在している場合) を
指定します。 DocumentType エレメントの例は、以下のとおりです:
<DocumentType version='1.0'>Reset_Password</DocumentType>
- StartElement: このパーツは、XML メッセージ・マッパーがタグ・マッピングを開始する
エレメントを指定します。 これは、メッセージの DTD 中のエレメントと対応していなければなりません。 タグ・マッピングで、コマンド・パラメーターとして使用される名前と値のペアが生成されます。 StartElement の使用例は、以下のとおりです:
<StartElement>PasswordInfo</StartElement>
この例では、このメッセージのために DTD ファイル中に定義されれている PasswordInfo という名前のエレメントがあるはずです。 たとえば、DTD ファイルには、PasswordInfo エレメントを定義する以下のような行が入ります:
<!ELEMENT PasswordInfo (Password, ConfirmPassword)>
- TemplateTagName: このパーツは、メッセージに使用するタグ・マッピングを指定します。 タグ・マッピングは、テンプレート定義ファイル中のどこか他の場所で TemplateTag エレメントの項に定義されます。 これは、TemplateTagNameエレメントの値が、テンプレート定義ファイル中のどこかに指定されている TemplateTag エレメントの name 属性と一致するはずであるという意味です。 詳細については、TemplateTag エレメントの節を参照してください。 TemplateTagName エレメントの使用例は、以下のとおりです:
<TemplateTagName>PasswordReset10Map</TemplateTagName>
この例では、以下の TemplateTag エレメントがテンプレート定義ファイル中のどこか他の場所に存在しているはずです。
<TemplateTag name='PasswordReset10Map'>
...
</TemplateTag>
開始タグと終了タグの間のエレメントはメッセージのマッピングによって異なります。
- CommandMapping: このエレメントは、メッセージによって呼び出されるコマンドを判別します。 このエレメントには、Command と呼ばれるサブエレメントが 1 つ入っています。 Command エレメントは、
メッセージが正常にマップされると実行される WebSphere Commerce コントローラー・コマンドを指示するために使用されます。 ここには CommandName と呼ばれる 1 つの必須属性が入っていて、
コマンドの名前を指示するために使用されます。 この属性の値は、 URLREG テーブルに登録されている既存のコマンドと
対応していなければなりません。 たとえば、メッセージは、以下の構文を使用してパスワードをリセットするコマンドと関連付けることができます:
<CommandMapping>
<Command CommandName='ResetPassword'/>
</CommandMapping>
また、複数のコマンドと同じメッセージを関連付けることもできます。 これを行うには、Command エレメントの以下の追加の属性を使用することが必要です。
- Condition 属性: 条件の構文は、次のとおりです ([] はオプションであるという意味で、* は繰り返してかまわないという意味です):
fieldName [="fieldValue "] [AND fieldName [="fieldValue "]]*
fieldName
- これは、TemplateTag 定義中の Tag エレメントの Field 属性と一致しているはずです。 このタグの XPath 属性がインバウンド XML メッセージ中に存在していると、条件は true です。
- fieldName="fieldValue "
- XML メッセージ中の値は fieldName 中の値に設定されます。 メッセージがマップされるときに、値が fieldValue と同じであると、条件は true です。
- fieldName1="fieldValue1" AND fieldName1="fieldValue2"
- メッセージの構文解析時に、XML メッセージ中の値がフィールド fieldName1 および fieldName2 に設定されます。 この値が fieldValue1 および fieldValue2 とそれぞれ同じである場合には、条件は true です。
- TemplateTagName 属性: この Command エレメントに TemplateTagName 属性を指定すると、
条件が true になると常に、新規タグ・テンプレートが TemplateTagName 中に定義されている名前で、インバウンド XML メッセージの残りに使用されることになります。
- Constant エレメント: そのコマンドのために TypedProperty に入れられる定数のリスト。
- Field: TypedProperty に入れられることになる名前と値のペアのフィールド名。
- FieldInfo: TemplateTag 中の定義を参照してください。
値は <Constant> と </Constant> のタグの間に配置されます。
複数の Command エレメントを使用して複数のコマンドにマップする方法の例は、以下のとおりです:
<CommandMapping>
<Command CommandName='ResetPassword' Condition='Verb="Reset" AND Noun="Password"'/>
<Command CommandName='AdminResetPassword' Condition='Verb="Reset" AND Noun="AdminPassword"'/>
</CommandMapping>
この例では、メッセージのために DTD ファイル中に定義されている Noun エレメントと Verb エレメントがあります。