# xmlValidate

DTD, Relax NG または Schema により文書を検証する.

## 呼び出し手順

                error = xmlValidate(docs [, valid])

## 引数

docs

  XMLDoc型のmlistまたはXML文書へのパスを有する文字列の行列

valid

  XMLValid型のmlist.

error

  エラーが発生した場合は文字列の行列,そうでない場合は[]

## 説明

パース済みの文書または指定されたパスの一連の文書を DTD, Relax NG, Schemaで検証します. 文書が有効な場合は空の行列,そうでない場合は エラーメッセージを含む文字列の行列が返されます.

パスを指定して文書を検証することで性能が改善され,消費メモリが減少します.

現時点では外部DTDで文書を検証することはできません. これを行う唯一の方法はXMLファイルに <!DOCTYPE foo SYSTEM "foo.dtd"> のような記述を行い, xmlValidateを2番目の引数を付けずに使用することです.

## 例

        doc = xmlRead("SCI/modules/xml/tests/unit_tests/library.xml");
        dtd = xmlDTD("SCI/modules/xml/tests/unit_tests/library.dtd");
        schema = xmlSchema("SCI/modules/xml/tests/unit_tests/library.xsd");
        rng = xmlRelaxNG("SCI/modules/xml/tests/unit_tests/library.rng");

        // 文書が有効かどうかを調べます
        // エラーがない場合,ファイルは有効です

        // DTD
        xmlValidate(doc, dtd);

        // Relax NG
        xmlValidate(doc, rng);

        // Schema
        xmlValidate(doc, schema);

        // 新規要素に文書が追加されます
        doc.root.children(3) = "<a>error</a>"

        // ここで検証は失敗します
        xmlValidate(doc, dtd);
        xmlValidate(doc, rng);
        xmlValidate(doc, schema);

        // パスを指定して文書を検証できます
        xmlValidate("SCI/modules/xml/tests/unit_tests/library.xml")
        xmlValidate("SCI/modules/xml/tests/unit_tests/invalid_library.xml")

        xmlValidate("SCI/modules/xml/tests/unit_tests/library.xml", schema)
        xmlValidate("SCI/modules/xml/tests/unit_tests/invalid_library.xml", rng)

        // オープンした文書を全て削除します
        xmlDelete(doc, dtd, schema, rng);

## 参照

- xmlDTD
- xmlSchema
- xmlRelaxNG

## 履歴

5.4.0
XMLモジュールが導入されました.