XMLスキーマに対する検証には何を使用しますか?
-
03-07-2019 - |
質問
サーバー側Javaのスキーマに対してXMLドキュメントを検証する場合、組み込みのJRE Xerces実装とjavax.xml.validation.Schemaを使用します。正常に機能しますが、検証が失敗すると、Xercesは次のように、ほとんど役に立たないエラーメッセージを表示します。
cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type 'PopulatedStringType'
これらは、検証に失敗したXMLドキュメントの特定の部分を診断し追跡するのに時間がかかる場合があります。これはすべて、エラーメッセージが不十分なためです。
私の質問は、XMLをスキーマに対して検証する代替手段を使用して、検証の失敗に関するより有用な出力を提供するかどうかです。
これはサーバー側のJavaであることに注意してください。「XML Spyを使用」とは言わないでください。または同様。
解決
検証のハンドラーでは、 XMLファイルの列番号と行番号。そうではありませんか?
他のヒント
OracleのXDK(XML Development Kit)を使用します。検証パーサーとXSLT 2.0を備えたxmlparserv2.jar。 JAXB APIを使用するため、クラスパスに追加してインポートを変更するだけで済みます。完璧ではないエラーがスローされますが、あなたの例よりも簡単に理解できると思います。
xmlstarlet(xmlstar.sourceforge.net/)はコマンドラインツールキットです。特定のxmlに対してRuntime.exec()を使用して実行できます(xmlがファイルにある場合)。
Castor を使用します。
Castorは、Java [tm]用のオープンソースデータバインディングフレームワークです。これは、Javaオブジェクト、XMLドキュメント、およびリレーショナルテーブル間の最短経路です。 Castorは、JavaからXMLへのバインディング、JavaからSQLへの永続性などを提供します。
Xercesエラーの解釈に問題があり、ドキュメントのどこでルールに違反したかを強調するのに役立つ何かが必要な場合は、 oXygen 。
(ソース: oxygenxml.com )
スキーマをインスタンスXMLドキュメントに関連付けると、エディターはドキュメントの問題のある領域を強調表示し、違反の説明を提供します。
さらに、さまざまなエンジンを使用して検証を実行できます:
oXygenには次の組み込みサポートがあります。 Xerces、LIBXML、XSV、Saxon SA、 MSXML4.0、MSXML .NETおよびSQC。