0

XSDファイルを使用してXMLファイルの一部のみを検証し、XMLファイルの他の内容を無視する方法はありますか?XSDファイルを使用してXMLファイル内のいくつかのタグのみを検証したい。私のXMLファイルには多くのタグが含まれていますが、xsdにはいくつかのタグの要素しか含まれていません。

どういうわけかこれを達成することは可能ですか?

4

3 に答える 3

1

原則として、これを達成するには(少なくとも)2つの方法があります。

まず、原則として、ドキュメント内のどの要素を検証するかをバリデーターに伝えることができます。XSD仕様では、ドキュメントルートから開始するための検証は必要ありません。実際には、コマンドラインバリデーターは、ルート以外の場所で検証を開始するための実行時オプションを提供することはほとんどありません。検証ライブラリがその機能を提供する可能性が高いと思います。多くの場合(または少なくとも時々)、検証を開始する要素を必要なスキーマ情報とともに渡すことができる関数を提供します。

バリデーターで選択的に検証できない場合は、検証する要素と属性のみの宣言を含むスキーマを記述し、ドキュメントルートで「緩い検証モード」でバリデーターを呼び出すことができます。基本的に、「スキーマでドキュメント内の要素の宣言を見つけた場合は、その宣言に対して要素を検証します。それ以外の場合は、それを受け入れ(親の宣言の緩いワイルドカードと一致するふりをします)、次に進みます。」したがって、バリデーターは、宣言を提供しない要素を無視し、宣言を提供する要素を検証します。(緩い検証モードを提供するために準拠するXSDプロセッサーは必要ありません。また、仕様での緩い検証の定義は少し過小評価されていることに注意してください。

于 2012-09-26T15:43:49.140 に答える
0

醜いハックは、検証したくないドキュメントを省略してメインのドキュメントから「検証可能な」ドキュメントを作成し、そのドキュメントを検証することです。私はこのアプローチを支持しませんが、少なくともそれは答えです。

于 2012-09-26T15:59:05.893 に答える
0

これを実際に実現する最も簡単な方法は、おそらくXQueryのvalidate式を使用して検証を行うことです(またはXSLTの検証を使用したコピー)。これにより、検証する要素を一度に選択し、検証を実行できます。

欠点は、ドキュメントが無効な場合、XQueryでの検証が致命的なエラーとして定義されることです。そのため、実装は、無効性に関する情報をできるだけ多く提供することに焦点を当てるのではなく、最初のエラーで停止する可能性があります。この段階で、特定のプロセッサにどのように実装されているか、および/またはそのプロセッサを構成する方法を確認する必要があります。

于 2012-09-26T16:57:31.450 に答える