範本定義檔的 TemplateDocument 元素
對於每一則入埠 XML 訊息而言,
訊息中至少必須定義一項範本文件。這是定義在
TemplateDocument 元素中。
TemplateDocument 元素共有四個子元素:
- DocumentType(內含選用的 version 屬性):這部份指定 XML 文件名稱或根元素名稱,以及根元素的 "version" 屬性(如果有的話)。
以下是 DocumentType 元素的範例:
<DocumentType version='1.0'>Reset_Password</DocumentType>
- StartElement:這部份指定 XML 訊息剖析器從哪個元素開始進行標籤映射。
這必須對應至該訊息之 DTD 中的元素。
標籤映射會產生「名稱-值」配對,
以作為指令參數用。以下是 StartElement 的用法範例:
<StartElement>PasswordInfo</StartElement>
在此範例中,應有一個 PasswordInfo 元素定義於此訊息的 DTD 檔中。
舉例來說,DTD 檔應含有如下旨在定義 PasswordInfo 元素之行:
<!ELEMENT PasswordInfo (Password, ConfirmPassword)>
- TemplateTagName:此部份用以指定要在訊息中使用哪種標籤映射。
標籤映射是定義在範本定義檔的 TemplateTag 元素下。也就是說,
TemplateTagName 元素值應與出現在範本定義檔中之 TemplateTag 元素的 name 屬性相符。詳細說明請參閱 TemplateTag 元素區段。
以下舉例說明 TemplateTagName 元素的用法:
<TemplateTagName>PasswordReset10Map</TemplateTagName>
在此範例中,範本定義檔內應存在如下的 TemplateTag 元素:
<TemplateTag name='PasswordReset10Map'>
...
</TemplateTag>
開頭與結束標籤間的元素則視訊息的映射而定。
- CommandMapping:此元素用來決定訊息所要呼叫的指令。
元素中含有一個子元素:Command。
Command 元素用來指出當訊息映射成功時所要執行的 WebSphere Commerce 控制程式指令。
它含有一個強制屬性 CommandName,用來指出指令的名稱。
這個屬性的值必須對應於登錄在 URLREG表格中的一個現有指令。
舉例來說,您可以使用下列語法,
讓訊息連結一個會重設密碼的指令:
<CommandMapping>
<Command CommandName='ResetPassword'/>
</CommandMapping>
您也可以讓多個指令連結同一訊息。如果要如此做,
您必須在 Command 元素中使用如下的其它屬性:
- 條件(Condition)屬性:
條件(Condition)的語法如下([] 表示選用,* 表示可以重複):
fieldName [="fieldValue "] [AND fieldName [="fieldValue "]]*
fieldName
- 它應與 TemplateTag 定義中之 Tag 元素的 Field 屬性相符。
如果入埠 XML 訊息中已存在此標籤的 XPath 屬性,
則條件為 True。
- fieldName="fieldValue "
- 將 XML 訊息中的值設成 fieldName 中的欄位。當映射訊息時,如果值和 fieldValue 相同,條件便為 True。
- fieldName1="fieldValue1" AND fieldName1="fieldValue2"
- 在剖析訊息時,
會將 XML 訊息中的值設成 fieldName1 與 fieldName2 欄位。如果這些值分別與
fieldValue1 與 fieldValue2 相同,
則條件為 True。
- TemplateTagName 屬性:
如果您在此 Command 元素中指定 TemplateTagName 屬性,
只要條件為 True,則在入埠 XML 訊息的其餘部份中,
將採用定義於 TemplateTagName 中的新標籤範本名稱。
- 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 元素。