4

次の退屈なルート要素を持つスキーマがあります。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

私に関する限り、スキーマは有効であり、たとえば、Excel は問題なくそれを読み取ります。

ただし、MSXML (v3 または v4 または v6) を使用してこのスキーマに対して検証しようとすると、件名のエラーが発生します。(XMLSchemaCache を作成し、読み込まれたスキーマを追加するとエラーが発生します。)

Google から、W3 標準に準拠していない MS XML エンジンには概念上の問題があり、別の名前空間定義を使用する必要があることを知りました。しかし、より正確な定義も問題の適切な説明も見つかりませんでした。フォーラムで返信のない多くの投稿しか見つかりませんでした。

この件についてもう少し詳しく説明してくれる人はいますか?

編集

何らかの理由で、プロジェクトの参照をバージョン 3、4、および 6 に切り替えたにもかかわらず、常にバージョン 3 が使用されていました。4/6への強制切り替えで解決しました。そのため、v3 はスキーマを解析できませんが、他のものは問題ありません。これで閉鎖できると思います。

4

4 に答える 4

7

Ok, the problem was that I was using MSXML version 3 without realising it. Versions 4 and 6 work fine.

Sample code can be found here. And guys here were not too helpful.

于 2010-01-14T15:01:37.380 に答える
2

GSerg の自動回答 (参考になりました) を補足するために、ソース情報をいくつか追加します。まず、wikiで明確な説明を取得します。

MSXML のバージョンが異なれば、サポートされる機能のセットもわずかに異なります。たとえば、MSXML 3.0 は XDR スキーマのみをサポートしていますが、XSD スキーマはサポートしていません。MSXML 4.0、MSXML 5.0、および MSXML 6.0 は、XSD スキーマをサポートしています。ただし、MSXML 6.0 は XDR スキーマをサポートしていません

それから、4.0 でのみ xsd を導入することを確認する MSXML msdn ページの新機能があります。

最後に、一般的なアドバイスとして、msdn に関する次のような記事があります: Why Version-Independent GUIDs and ProgIDs Were Removed . したがって、6.0 に固執する必要があると思います。

于 2012-10-25T16:22:09.683 に答える
0

ここで学んだように、MSXMLバージョン6のサポートが削除されたため、MSXMLバージョン6でもXDRスキーマでこのエラーがスローされることを知っておくと興味深いです。詳細はこちらをご覧ください

于 2012-05-04T09:29:16.877 に答える
0

私はこれが古い質問であることを知っています...しかし、この問題を解決しようとして、xmlns (名前空間) 属性値が正しくないこともエラーを引き起こす可能性があることを発見しました。

たとえば、スキーマ要素の開始タグは次のようになります。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

ただし、コロンがないなど、値にタイプミスがある場合は、次のようになります。

<xsd:schema xmlns:xsd="http//www.w3.org/2001/XMLSchema">

「スキーマのルート要素の定義が正しくありません」というエラーが表示されます。

于 2012-10-24T16:23:52.423 に答える