271

現在、オフィスでは、指定されたスキーマに対してXMLファイルを生成するアプリケーションを作成しています。.XSDファイルにスキーマがあります。

生成されたXMLがスキーマと一致することを確認するための自動テストに使用できるツールまたはライブラリはありますか?

スキーマチェッカーをバンドルすることはないので、開発中に開発者が使用する必要があるだけですが、商用利用に適した無料のツールをお勧めします。

私たちの開発言語は、それが何か違いを生むのであればC ++ですが、xmlファイルを生成し、テストで別のプログラムを呼び出して検証を行うことができるので、そうすべきではないと思います。

4

14 に答える 14

248

いくつかの調査の結果、最良の答えはXercesであると思います。これは、すべての XSD を実装し、クロスプラットフォームであり、広く使用されているためです。デフォルトの JRE パーサー (通常は Xerces) を使用してコマンド ラインから検証するために、github で小さな Java プロジェクトを作成しました。これは、Windows/Mac/Linux で使用できます。

Xerces を使用したい場合は、C++ バージョンの Xercesも利用できます。StdInParseユーティリティを使用して、コマンド ラインから呼び出すことができます。また、以下のコメント投稿者は、このより完全なラッパー ユーティリティを指摘しています。

libxmlの一部である xmllint を使用することもできます。すでにインストールされている可能性があります。使用例:

xmllint --noout --schema XSD_FILE XML_FILE

1 つの問題は、libxml がすべての仕様を実装していないことです。そのため、問題が発生する可能性があります :(

または、Windows を使用している場合はmsxmlを使用できますが、これを呼び出すには、このDDJ 記事で説明されている GUI など、何らかのラッパーが必要です。ただし、Windows のほとんどの人は、Notepad++ ( Nate の回答で説明) やSteveC が提案するXML Notepad 2007などの XML エディターを使用しているようです (ここでは言及しない商用エディターもいくつかあります)。

最後に、プログラムが異なれば残念ながら結果も異なることがわかります。これは主に、XSD 仕様の複雑さが原因です。いくつかのツールを使用してスキーマをテストすることができます。

更新:ブログ投稿でこれについて詳しく説明しました。

于 2008-09-24T19:41:21.853 に答える
114

XML検証とXSDに対する検証を提供するXMLツールと呼ばれるNotepad ++用のプラグインがあります。

使用方法はこちらでご覧いただけます。

于 2009-07-06T18:52:47.600 に答える
23

xmlstarletは、これ以上のことを行うコマンドラインツールです。

$ xmlstarlet val --help
XMLStarlet Toolkit:XMLドキュメントを検証します
使用法:xmlstarlet val <options> [<xml-file-or-uri> ...]
ここで<オプション>
  -wまたは--well-formed-整形式のみを検証します(デフォルト)
  -dまたは--dtd<dtd-file>-DTDに対して検証します
  -sまたは--xsd<xsd-file>-XSDスキーマに対して検証します
  -Eまたは--embed-埋め込みDTDを使用して検証します
  -rまたは--relaxng<rng-file>-Relax-NGスキーマに対して検証します
  -eまたは--err--stderrに詳細なエラーメッセージを出力します
  -bまたは--list-bad-検証されないファイルのみを一覧表示します
  -gまたは--list-good-検証するファイルのみを一覧表示します
  -qまたは--quiet-ファイルを一覧表示しません(結果コードのみを返します)

注:XMLスキーマは、不完全であるため、まだ完全にはサポートされていません。
      libxml2でのサポート(http://xmlsoft.orgを参照)

XMLStarletは、クエリ/編集/チェック/変換を行うためのコマンドラインツールキットです。
XMLドキュメント(詳細については、http://xmlstar.sourceforge.net/を参照してください)

あなたの場合の使用法は次のようになります:

xmlstarlet val --xsd your_schema.xsd your_file.xml
于 2008-09-24T01:49:01.710 に答える
17

Windows には、無料のXML Notepad 2007があります。検証するXSDを選択できます

更新: XML Tools プラグインで Notepad++ を使用することをお勧めします

于 2010-10-12T13:19:29.750 に答える
4

DecisionSoftのオンラインXML Schema Validatorを使用すると、特定のスキーマに対して XML ファイルをチェックできます。

于 2009-06-02T12:49:09.270 に答える
3

私はXercesを使用しています:

http://xerces.apache.org/xerces-c/

于 2008-09-24T01:44:17.993 に答える
2

すばやく簡単にXMLを検証するためのXMLエディターはhttp://www.xml-buddy.comで入手できます。

インストーラーを実行するだけで、使いやすいデスクトップアプリケーションまたはコマンドラインを使用してXMLファイルを検証できます。さらに、SchematronとRelaxNGのサポートも受けられます。バッチ検証もサポートされています...

2012年1月13日更新:コマンドラインツールは無料で使用でき、XMLパーサーとしてXercesを使用します。

于 2009-12-09T08:25:37.510 に答える
2

「corefiling」のこのオンラインバリデーターは非常に便利であることがわかりました -
http://www.corefiling.com/opensource/schemaValidate.html

xsd を検証するためにいくつかのツールを試した後、これが詳細なエラー情報を提供してくれたので、スキーマでエラーを修正できました。

于 2012-05-28T11:31:53.617 に答える
2

私はちょうどスキーマを学んでいます。RELAX NG を使用し、xmllint を使用して検証しています。xmlllint から出てくるエラーにイライラしています。彼らがもう少し有益であることを望みます。

XML に間違った属性がある場合、xmllint はサポートされていない属性の名前を通知します。しかし、XML に属性がない場合は、要素を検証できないというメッセージが表示されます。

非常に複雑なルールを持つ非常に複雑な XML に取り組んでいますが、これは初めてなので、欠落している属性を追跡するには時間がかかります。

更新: お気に入りの Java ツールを見つけました。xmllint のようにコマンドラインから実行でき、RELAX NG をサポートしています: https://msv.dev.java.net/

于 2010-11-23T16:45:21.880 に答える
1

http://www.xmlvalidation.com/

(必ず「外部 XML スキーマに対して検証する」ボックスをチェックしてください)

于 2009-01-05T19:33:56.763 に答える
1

XML から XSD を検証して生成する優れたビジュアル ツールの 1 つは、直感的でシンプルな IntelliJ IDEA です。

于 2012-10-08T10:43:37.857 に答える
0

別のオンライン XML スキーマ (XSD) 検証ツール: http://www.utilities-online.info/xsdvalidation/

于 2015-07-22T06:13:46.413 に答える
0

私は、Microsoft の xsd を使用して、.NET ファイルから xsd を生成する傾向があります。また、xmlstarlet を使用して xml のセクションを解析します。最後に役立つ無料ツールは altovaxml で、次の URL で入手できます: http://www.altova.com/download_components.html

これにより、すべての xml ファイルをスキャンして、xml を解析して使用する xsd を選択できます。

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

私が使用する xml を生成するには: xsd DOTNET.dll /type:CFGCLASS & rename schema0.xsd CFGCLASS.xsd

私が使用する xsd 名を取得するには: xmlstarlet sel -t -m /XXX/* -v local-name() $1 | sed 's/ $//'

これにより、xml ファイル内の要素タグを使用して正しい XSD を取得できます。

最終的な結果として、bash 関数を呼び出してすべての XML ファイルをスキャンし、それらを検証できるようになりました。それらが複数のサブディレクトリにある場合でも。

于 2012-05-22T18:53:33.610 に答える