---
schema_version: "1"
id: 6cf695e18daacbd0fecf739e1108494def08a35e6f38d024adebb8231dd476f4
title: XML Module を使用した XSD スキーマに対するドキュメントの検証
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/xml-module/latest/xml-schema-validation.md
canonical_url: https://docs.mulesoft.com/jp/xml-module/latest/xml-schema-validation
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 523e4cb587d9706fc831bb8f9a0e4fdcfe5861d68f92be41bcebea2c2235108a
description: MuleSoft Documentation Site
release: "1.4"
latest: true
---
# XML Module を使用した XSD スキーマに対するドキュメントの検証

XML Module の ​**Validate schema**​ 操作は、入力コンテンツが指定した XSD スキーマに準拠していることを検証します。操作では、カンマ (​`,`​) を区切り文字として使用して多数のスキーマを参照できます。 デフォルトではこの操作はメッセージペイロードレベルで入力ドキュメントを検索しますが、独自の入力を指定することもできます。 Validation Module の ​**All**​ スコープ内で ​**Validate schema**​ 操作を使用できます。

## [](#studio-で-validation-schema-操作を設定する)Studio で Validation Schema 操作を設定する

次の例では、スクリプトが含まれる XML スキーマを検証します。

1. Studio で、​**Validate schema**​ 操作をフローにドラッグします。 **\[Schemas (スキーマ)\]**​ 項目で、カンマを使用してファイル名を区切ってスキーマファイルを追加します (例: `schema1.xsd, schema2.xsd`​)。
2. **\[Flow Reference\]**​ コンポーネントを ​**\[Validate schema\]**​ 操作の右にドラッグします。
3. **\[Flow name (ファイル名)\]**​ を ​`processValidDocument`​ に設定します。

![「Schemas (スキーマ)」 項目で、スキーマ名ファイルを追加します。](/mulesoft/current/ja-jp/xml-module/latest/_images/xml-validate-schema-1.png)

**設定 XML**​ エディターでは、​`<xml-module:validate-schema>`​ 設定は次のように記述されます。

```xml
<flow name="process">
    <xml-module:validate-schema schemas="schema1.xsd, schema2.xsd" />
    <flow-ref name="processValidDocument" />
</flow>
```

次の例では、独自の入力を行って ​**Validate schema**​ 操作を設定します。

1. Studio で、​**File Read**​ 操作をフローにドラッグします。
2. 設定画面で、​**\[File Path (ファイルパス)\]**​ を ​`document.xml`​ に設定します。
3. **\[Advanced (詳細)\]**​ タブで、​**\[Target Variable (対象変数)\]**​ を ​`xmlDoc`​ に設定します。
4. XML Module の ​**\[Validate schema\]**​ 操作を ​**\[Read\]**​ 操作の右にドラッグします。
5. **\[Schemas (スキーマ)\]**​ 項目で、スキーマを追加し、カンマを使用してそれらの名前を区切ります (例: `schema1.xsd, schema2.xsd`​)。
6. **\[Content (コンテンツ)\]**​ 項目を検証する XML コンテンツに設定します (例: `#[vars.xmlDoc]`​)。
7. **\[Flow Reference\]**​ コンポーネントを ​**\[Validate schema\]**​ 操作の右にドラッグします。
8. **\[Flow name (ファイル名)\]**​ を ​`processValidDocument`​ に設定します。

![「Content (コンテンツ)」 項目で、検証する XML コンテンツファイルを追加します。](/mulesoft/current/ja-jp/xml-module/latest/_images/xml-validate-schema-2.png)

**設定 XML**​ エディターでは、​`<xml-module:validate-schema>`​ および ​`<xml-module:content>`​ 設定は次のように記述されます。

```xml
<flow name="process">
    <file:read path="document.xml" target="xmlDoc" />
    <xml-module:validate-schema schemas="schema1.xsd, schema2.xsd">
        <xml-module:content>#[vars.xmlDoc]</xml-module:content>
    </xml:module:validate-schema>
    <flow-ref name="processValidDocument" />
</flow>
```

## [](#検証エラーを管理する)検証エラーを管理する

検証に成功した場合はフローの次の操作に進みます。ただし、検証に失敗すると、​`XML-MODULE:SCHEMA_NOT_HONOURED`​ エラーが発生します。  
検証に失敗する理由は複数あるため、エラーの説明にはメッセージのリストが含まれます。各メッセージには、次のような構造の ​`SchemaViolation`​ オブジェクトが含まれます。

```yaml
{
  lineNumber: Number,
  columnNumber: Number,
  description: String
}
```

次の例では、​**Validate schema**​ 操作と Error Handler コンポーネントの ​`XML-MODULE:SCHEMA_NOT_HONOURED`​ エラーを設定します。

1. Studio で ​**Try**​ スコープコンポーネントをフローにドラッグします。
2. XML Module の ​**\[Validate schema\]**​ 操作を ​**\[Try\]**​ スコープコンポーネントにドラッグします。
3. **\[Schemas (スキーマ)\]**​ 項目で、スキーマを追加します (例: `schema.xsd`​)。
4. フローで、​**\[Error handling (エラー処理)\]**​ 矢印をクリックして、\[error-handling (エラー処理)\] セクションを展開します。
5. **\[On Error Propagate\]**​ コンポーネントを ​**\[Error handling (エラー処理)\]**​ セクションにドラッグします。
6. **\[Type (種別)\]**​ 項目をこの On-Error 戦略によって処理される Mule エラーに設定します (例: `XML-MODULE:SCHEMA_NOT_HONOURED`​)。
7. **\[Enable Notifications (通知を有効化)\]**​ および ​**\[Log Exception (例外を記録)\]**​ 項目をオフにします。
8. **\[For Each\]**​ スコープコンポーネントを ​**\[On Error Propagate\]**​ コンポーネントにドラッグして各 ​`errorMessage.payload`​ を反復処理します。
9. **\[Collection (コレクション)\]**​ 項目を、ペイロードを各部分に分割する式に設定します (例: `#[error.errorMessage.payload]`​)。
10. **\[Logger\]**​ コンポーネントを ​**\[For Each\]**​ スコープコンポーネントにドラッグして、XML Module エラーを記録します。
11. **\[Message (メッセージ)\]**​ 項目を、メッセージを記述する ​`SchemaViolation`​ オブジェクトが含まれる式に設定します (例: `#['At line: $(payload.lineNumber), column: $(payload.columnNumber) → $(payload.description)']`​)。
12. 変更を保存します。
13. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\] > \[Run As (別のユーザーとして実行)\] > \[Mule Application (Mule アプリケーション)\]**​ をクリックします。
14. コンソールビューに移動して、ロガーメッセージを読み取ります。
    
    ```none
    ERROR 2018-02-16 14:35:45,722 [[MuleRuntime].cpuIntensive.01: [SchemaValidationTestCase#extractErrorsUsingExpressions].extractErrorsFromException.CPU_INTENSIVE @411e886b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: At line: -1, column: -1 -> cvc-complex-type.2.4.a: Invalid content was found starting with element 'fail'. One of '{used}' is expected.
    ```
    
    ![XML Module で検証エラーを管理するフロー](/mulesoft/current/ja-jp/xml-module/latest/_images/xml-validate-schema-3.png)

**設定 XML**​ エディターでは、​`<on-error-propagate type="XML-MODULE:SCHEMA_NOT_HONOURED">`​ 設定は次のように記述されます。

```xml
 <flow name="extractErrorsFromException">
    <try>
        <xml-module:validate-schema schemas="schema.xsd" />
        <error-handler>
            <on-error-propagate type="XML-MODULE:SCHEMA_NOT_HONOURED">
                <foreach collection="#[error.errorMessage.payload]">
                    <logger level="ERROR" message="#['At line: $(payload.lineNumber), column: $(payload.columnNumber) -> $(payload.description)']" />
                </foreach>
            </on-error-propagate>
        </error-handler>
    </try>
</flow>
```

## [](#スキーマテキストコンテンツを設定する)スキーマテキストコンテンツを設定する

次の例では、​**Validate schema**​ 操作の ​**\[Schema contents (スキーマコンテンツ)\]**​ 項目を設定します。スキーマテキストをこの項目に入力して、スキーマ検証を実行します。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">スキーマコンテンツを追加するには、スキーマとスキーマコンテンツの両方ではなくいずれかのみを指定します。​<strong>[Schemas (スキーマ)]</strong>​ 項目でファイルをアップロードするか、または ​<strong>[Schema contents (スキーマコンテンツ)]</strong>​ 項目で直接スキーマテキストコンテンツを手動で追加することができます。</td></tr></tbody></table>

1. Studio で、フローから ​**Validate schema**​ 操作を選択します。
2. **Validate schema**​ 操作の設定画面で、​**\[Schema contents (スキーマコンテンツ)\]**​ を ​**\[Edit inline (インライン編集)\]**​ に設定します。

![Validate schema の設定画面で \[Edit inline (インライン編集)\] に設定された \[Schema content (スキーマコンテンツ)\] 項目](_images/xml-schema-content-1.png)

1. プラス記号をクリックして、スキーマ名とテキストを追加します。
2. **\[Schema content (スキーマコンテンツ)\]**​ ウィンドウの ​**\[Schema name (スキーマ名)\]**​ 項目に、​`schema1.xsd`​ などのスキーマ名を入力します。
3. **\[Schema text (スキーマテキスト)\]**​ 項目に、次のようなスキーマテキストコンテンツを入力します。

```xml
<?xml version = "1.0"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name = 'class'>
      <xs:complexType>
         <xs:sequence>
             <xs:element name = 'student' type = 'StudentType' minOccurs = '0'
                maxOccurs = 'unbounded' />
         </xs:sequence>
      </xs:complexType>
   </xs:element>

   <xs:complexType name = "StudentType">
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
      <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
   </xs:complexType>
</xs:schema>
```

![「Schema name (スキーマ名)」 項目と 「Schema text (スキーマテキスト)」 項目が含まれる 「Schema content (スキーマコンテンツ)」 ウィンドウ](/mulesoft/current/ja-jp/xml-module/latest/_images/xml-schema-content-2.png)

1. **\[Finish (完了)\]**​ をクリックします。

## [](#関連情報)関連情報

- [XML Module の例](https://docs.mulesoft.com/jp/xml-module/latest/xml-module-examples)
- [XML Module の概要](https://docs.mulesoft.com/jp/xml-module/latest/)