2011-01-25 7 views
0

C++でXerces DOMパーサを使用して複数のxmlスキームに対して検証する方法があるのだろうか?Xerces DOMパーサで複数のxmlスキーマを検証する

ここではユースケースです:私は、対応するxsdスキーマに対して複数のxmlファイルを解析できるようにします。しかし、最初に各xmlファイルを見ると、解析するまでどのファイルかわからないので、静的なxsdファイルをそのファイルにリンクすることはできません。 xsd1やxsd2などに対して各xmlファイルを検証したいと言っているのですか?

パーサー 'setExternalSchemaLocation'の設定は、スキーマのリストを保持することができますが、私は自分のコードでこれを行い、正しく検証しません。

parser->setExternalSchemaLocation("http://www.somelocation schema.xsd http://www.somelocation schema1.xsd"); 

スキーマ私は

parser->setExternalSchemaLocation("http://www.somelocation schema.xsd"); 

をしたのであれば、私は私のXMLまたはXSDファイルにエラーがない確信して、それ自体で動作します。

複数のxmlスキーマに対して検証する方法についての洞察はありますか?

+0

1行ではなく2つのコマンドとして別々にスキーマを設定しようとしましたか?次のようなものです:parser-> setExternalSchemaLocation( "http://www.somelocation schema.xsd"); parser-> setExternalSchemaLocation( "http://www.somelocation schema1.xsd"); – Sii

+0

エラーメッセージは何ですか? –

+0

@Sii:それはうまくいかないでしょう、Xercesの医者はこう言います: "このメソッドが複数回呼び出されると、最後のものだけが有効になります。" –

答えて

0

各xmlが同じ名前空間にある場合、コードは機能しません。上記のコードが機能するには、各xmlファイルが異なる名前空間になければなりません。

parser->setExternalSchemaLocation("http://www.somelocation schema.xsd http://www.somelocation1 schema1.xsd"); 
関連する問題