1

QXmlSchema が提供するメソッドを使用して、XML スキーマの有効性を確認しようとしています。他のツール (Eclipse や xmllint など) からスキーマ有効であることはわかっていますが、次のコードの結果は常に「スキーマが無効です」という結果になります。

QFile file("/home/....xsd");
file.open(QIODevice::ReadOnly);

QXmlSchema schema;
schema.load(&file, QUrl::fromLocalFile(file.fileName()));

if ( schema.isValid() ) {
    QXmlSchemaValidator validator( schema );
    if ( validator.validate( QUrl("file:///......xml") ) ) {
        qDebug() << "instance is valid";
    } else {
        qDebug() << "instance is invalid";
    }
} else {
    qDebug() << "schema is invalid";
}

ログに記録されたエラーは次のようなものです。

file:///home/......xsd のエラー XSDError、行 X、列 Y: 複合型 foo のコンテンツ モデルは、bar のコンテンツ モデルの有効な拡張ではありません。

これはスキーマ名前空間のインポートと関係があるのか​​ 、それとも他に何があるのだろうか。

編集:私が参照しているスキーマはthis oneです。

4

0 に答える 0