このサンプルを実行するには、サンプル・メッセージ・フローとメッセージ・セットを事前にデプロイしておく必要があります。
サンプルの実行時に問題を検出した場合は、 WebSphere Message Broker 資料の『サンプル実行時の問題の解決』を参照してください。
検証が成功するメッセージを使用して XMLNSC Validation サンプルを実行するには、次のようにします。
入力メッセージの検証は、すべて成功します。 テスト・クライアントでは、XMLNSCVALIDATIONMF1.OUT キューからメッセージが取得されます。また、 テスト・クライアントの「メッセージ」の下には、入力メッセージのコピーが表示されます。
データが欠落しているために入力メッセージの検証が失敗する XMLNSC Validation サンプルを実行するには、次のようにします。
<Header Title="MissingElement"></Header>
入力メッセージの検証が失敗します。テスト・クライアントでは、XMLNSCVALIDATIONMF1.FAIL キューからメッセージが取得され、 例外リストの部分が XML メッセージとして表示されます。この例外リスト・メッセージには、以下の部分が含まれます。
<Text>Unexpected end element event. The content of element 'Header' is not complete.</Text>
入力メッセージは、SaleListCount という名前のエレメントをヘッダーの子として持つ必要があります。そのために検証が失敗します。この要件は、XML スキーマ SampleMessageValidation.xsd の以下のセクションに定義されています。
<xsd:complexType name="Header"> <xsd:sequence> <xsd:element name="SaleListCount" type="xsd:int"></xsd:element> </xsd:sequence> <xsd:attribute name="Title" type="xsd:string" use="optional"></xsd:attribute> </xsd:complexType>
数値フィールドが範囲外のために入力メッセージの検証が失敗する XMLNSC Validation サンプルを実行するには、次のようにします。
<Quantity>1010</Quantity;>
入力メッセージの検証が失敗します。テスト・クライアントでは、XMLNSCVALIDATIONMF1.FAIL キューからメッセージが取得され、 例外リストの部分が XML メッセージとして表示されます。この例外リスト・メッセージには、以下の部分が含まれます。
<Text>cvc-maxInclusive-valid: The value "1010" is not valid with respect to the maxInclusive facet with value "100" for type "#Anonymous".</Text>
入力メッセージの「Quantity」の値は 1 から 100 までの範囲の整数 (両端を含む) でなければならないため、検証は失敗しました。この要件は、XML スキーマ SampleMessageValidation.xsd の以下のセクションに定義されています。
<xsd:element name="Quantity"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="1"/> <xsd:maxInclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element>
エレメントの値が必要なパターンに従わないために入力メッセージの検証が失敗する XMLNSC Validation サンプルを実行するには、次のようにします。
<Code>0#</Code>
入力メッセージの検証が失敗します。テスト・クライアントでは、XMLNSCVALIDATIONMF1.FAIL キューからメッセージが取得され、 例外リストの部分が XML メッセージとして表示されます。この例外リスト・メッセージには、以下の部分が含まれます。
<Text>cvc-pattern-valid: The value "0#" is not valid with respect to the pattern facet for type "#Anonymous".</Text>
入力メッセージの「Code」の値は英数字でなければなりません。そのために検証が失敗します。この要件は、XML スキーマ SampleMessageValidation.xsd の以下のセクションに定義されています。
<xsd:element maxOccurs="3" minOccurs="3" name="Code"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9a-zA-Z]{2}"/> </xsd:restriction> </xsd:simpleType>
数値フィールドに非数値データが含まれるために入力メッセージの検証が失敗する XMLNSC Validation サンプルを実行するには、次のようにします。
<Balance>$00.50</Balance>
入力メッセージの検証が失敗します。テスト・クライアントでは、XMLNSCVALIDATIONMF1.FAIL キューからメッセージが取得され、 例外リストの部分が XML メッセージとして表示されます。この例外リスト・メッセージには、以下の部分が含まれます。
<Text>cvc-datatype-valid.1.2: The value "$00.50" is not a valid value for the "float" datatype.</Text>「Balance」の値は浮動小数点でなければならず、ドル記号は浮動小数点データ・タイプの有効な文字ではありません。そのために検証が失敗します。この要件は、XML スキーマ SampleMessageValidation.xsd の以下のセクションに定義されています。
<xsd:element name="Balance" type="xsd:float"></xsd:element>
フィールドが長すぎるために入力メッセージの検証が失敗する XMLNSC Validation サンプルを実行するには、次のようにします。
<Surname>Braithwaaaaaaaaaaaite</Surname>
入力メッセージの検証が失敗します。テスト・クライアントでは、XMLNSCVALIDATIONMF1.FAIL キューからメッセージが取得され、 例外リストの部分が XML メッセージとして表示されます。この例外リスト・メッセージには、以下の部分が含まれます。
<Text>cvc-maxLength-valid: The length of value "Braithwaaaaaaaaaaaite" is "21" which is not valid with respect to maxLength facet with value "20" for type "#Anonymous".</Text>
「Surname」の最大長は 20 でなければなりませんが、メッセージでは長さが 21 になっています。そのために検証が失敗します。この要件は、XML スキーマ SampleMessageValidation.xsd の以下のセクションに定義されています。
<xsd:element name="Surname"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element>
エレメント値が許可値のリストに含まれていないために入力メッセージの検証が失敗する XMLNSC Validation サンプルを実行するには、次のようにします。
<Currency>FRF</Currency>
入力メッセージの検証が失敗します。テスト・クライアントでは、XMLNSCVALIDATIONMF1.FAIL キューからメッセージが取得され、 例外リストの部分が XML メッセージとして表示されます。この例外リスト・メッセージには、以下の部分が含まれます。
<Text>cvc-enumeration-valid: The value "FRF" is not valid with respect to the enumeration facet for type "#Anonymous". It must be a value from the enumeration.</Text>
「Currency」エレメントには、スキーマで定義された許可値のいずれかが含まれていなければなりません。そのために検証が失敗します。入力メッセージの値は、リストの内のどの値とも一致しません。この要件は、XML スキーマ SampleMessageValidation.xsd の以下のセクションに定義されています。
<xsd:element name="Currency"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="USD"/> <xsd:enumeration value="GBP"/> <xsd:enumeration value="Sterling"/> <xsd:enumeration value="EUR"/> <xsd:enumeration value="Euros"/> <xsd:enumeration value="JPY"/> </xsd:restriction> </xsd:simpleType> </xsd:element>
入力メッセージのネーム・スペースに誤りがあるために入力メッセージの検証が失敗する XMLNSC Validation サンプルを実行するには、次のようにします。
<samp:SaleListMessage xmlns:samp="http://www.samplemessage.broker.hursley.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.samplemessage.broker.hursley.ibm.com/SampleMessageNamespace1.xsd">
入力メッセージの検証が失敗します。テスト・クライアントでは、XMLNSCVALIDATIONMF1.FAIL キューからメッセージが取得され、 例外リストの部分が XML メッセージとして表示されます。この例外リスト・メッセージには、以下の部分が含まれます。
<Text>Unexpected root tag. Element "samp:SaleListMessage" is not a global element.</Text>グローバル・エレメント SaleListMessage には、 スキーマで定義されたターゲット・ネーム・スペースがありません。そのために検証が失敗します。 入力メッセージのインスタンスには、ネーム・スペースを持つ SaleListMessage という名前のルート・タグがあります。そのため、スキーマ定義から期待される内容とは異なっています。この要件は、XML スキーマ SampleMessageValidation.xsd の以下のセクションに定義されています。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="SaleListMessage" type="RootMessage"></xsd:element>
上記の手順が完了すると、XMLNSC Validation サンプルが正常に実行されたことになります。 XMLNSC 妥当性検査例外の構造に関する詳細は、妥当性検査プロパティーを参照してください。