none
MSXMLを使用してXMLの構造確認(整形型の)をコマンドから行う方法 RRS feed

  • 質問

  • はじめての質問です。

    よろしくお願いいたします。

    OS:Windows XP

    MSXMLのVer.は6

     

    下記サイトのValidate.js を使用してテストを行っています。

    http://www.mlab.im.dendai.ac.jp/~yamada/web/tool/msxml/

     

    しかしながら、上記のjava scriptだけでは、エンティティ(実態参照文字&xxx;等)があった場合エラーが出てしまいます。

    そこで、エンティティのみDTDで設定したところ、“DTDは禁止されています"とエラーがでたので、

    下記一行を追加してDTDの使用を許可してやりました。

    xmlObj.setProperty("ProhibitDTD", false);

     

    これでDTDを使用できるようになったのですが、

    今度は、エンティティ以外の宣言(要素や属性の構造について)も求められるようになりました。

    当然と言えば当然なのかもしれませんが…

     

    私が希望するXML構造確認パーサーは、整形型(Well-formed)の確認までで良いのです。

    妥当型(valid)までは必要なく、ただエンティティの表示だけは欲しいと考えています。

     

    XMLでエンティティを使用しつつ、要素や属性は無視できる方法はありませんでしょうか?

     

    よろしくお願いいたします。

    2008年10月6日 8:49

回答

  • xmlObj.validateOnParse = false にすれば妥当性の検証を行わなくなるようです。
    2008年10月6日 9:14
  • 大抵同じ問題で困っている人がいるので、まず web 検索です。
    msxml prohibitdtd - Google Search
    3 番目ぐらいに解決法と一緒に報告してくれている人がいました。ちなみにこれで見つからなかったら全言語で検索です。
    次に手元でこの方法で解決できるか等をテスト。巧くいくことを確認。ところが件の Validate.js に適用すると失敗するのが判明します。
    まあぱっと見で大体見当がつきますが msxml のバージョンの問題ですね。Validate.js は 4.0 を使っていてあちらでは 6.0 使っています。
    では本当に使えないのか、と参照するのはやはり MSDN のリファレンスです。
    msxml site:msdn.microsoft.com validateonparse - Google Search
    日本語版は無いみたいなので英語版で。リファレンスぐらいなら英語でも大した問題はありません。一件目に msxml.domdocument2 のが挙がります。
    これによると setProperty ではなく、直接 validateOnParse プロパティを指定すること、msxml 2.0 からサポートされていることが分かります。
    あとは動作確認して終了。
    2008年10月7日 1:12

すべての返信

  • xmlObj.validateOnParse = false にすれば妥当性の検証を行わなくなるようです。
    2008年10月6日 9:14
  •  

    Hongliang

    ご回答有難うございます。

     

    まさにベストアンサーです。

    MSXMLもjava scriptの関数も曖昧なまま、

    何時間もネットで調べて、まったく分からなかった難問が

    一瞬で解決しました!!!!

     

    今回教えていただいた.validateOnParseという記述や類似関数(?)は、

    どこかの資料サイトや参考資料を見れば載っているものなんでしょうか?

     

    わたしは、MSXMLについて書き込みしてあるサイトと

    このMSDNに載っているサンプル資料ぐらいしか当てがなかったもので…

     

    重ね重ねの質問ですみません。

    余裕があったらで結構ですので、おねがいします。

     

    まずは、本題の質問への回答有難うございました。

    大変感謝してます。

    2008年10月6日 15:54
  • 大抵同じ問題で困っている人がいるので、まず web 検索です。
    msxml prohibitdtd - Google Search
    3 番目ぐらいに解決法と一緒に報告してくれている人がいました。ちなみにこれで見つからなかったら全言語で検索です。
    次に手元でこの方法で解決できるか等をテスト。巧くいくことを確認。ところが件の Validate.js に適用すると失敗するのが判明します。
    まあぱっと見で大体見当がつきますが msxml のバージョンの問題ですね。Validate.js は 4.0 を使っていてあちらでは 6.0 使っています。
    では本当に使えないのか、と参照するのはやはり MSDN のリファレンスです。
    msxml site:msdn.microsoft.com validateonparse - Google Search
    日本語版は無いみたいなので英語版で。リファレンスぐらいなら英語でも大した問題はありません。一件目に msxml.domdocument2 のが挙がります。
    これによると setProperty ではなく、直接 validateOnParse プロパティを指定すること、msxml 2.0 からサポートされていることが分かります。
    あとは動作確認して終了。
    2008年10月7日 1:12
  • Hongliang様

    早速の回答ありがとうございます。

     

    勉強になります。

     

    安直に日本語で書かれた仕様書やマニュアル的なものがあれば助かるなと思ったのですが。。。

    やはり地道にネットで検索して調べるのが一般的になる訳ですね。

     

    私に欠けていたのでは、MSXMLとJava scriptの経験と英語への苦手意識から日本語

    サイトしか見ないようにしていた所のようです。。

     

    ありがとうございました。

    2008年10月7日 16:57
  • Hongliangさん、回答ありがとうございます。

    coroziro さん、フォーラムをご利用いただきありがとうございます。

     

    今回、Hongliangさんの投稿がcoroziro さんもベストアンサーとおっしゃっているように参考になったのではないかと思い、勝手ながら回答済みチェックを付けさせていただきました。

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2008年10月17日 9:02