- PR -

Xerces C++でDTD定義ファイルの入力について

1
投稿者投稿内容
りた
会議室デビュー日: 2004/06/03
投稿数: 5
投稿日時: 2004-06-24 16:04
いつもお世話になります。
ご存知の方いらっしゃいましたら、ご教授願います。

入力するXMLファイルの先頭は以下のようになっています。

<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE DICOM SYSTEM "dicom.dtd">

この指定ですと、構文解析のDTDファイルはカレント(XMLファイルがある場所)のdicom.dtdになると思うのですが、

XercesDOMParser *parser = new XercesDOMParser();
parser->parse();

で読み込んだ時、別の場所にあるDTDファイルを元に構文解析させてパースさせる事は可能でしょうか?

よろしくお願いいたします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-06-24 17:04
Xerces が XMLカタログ機能をサポートしているならば

公開識別子 → ファイル名 の変換を行えます。
公開識別子は固定でDTDファイル名はカタログ・ファイルで
設定変更できます。
================================ DTD を切り替える、その他の方法
●XSLT で恒等変換で doctype を書き換える。
Controlling the DOCTYPE and XML Declaration
http://www.xml.com/lpt/a/2002/09/04/xslt.html

●パラメータエンティティ参照でDTDの中身を取り込む
切り替えは、エンティティ・リソルバーの仕事

●読み込んだXMLストリームの頭部を文字列書き換えする

●DTDをXML Schema や RELAX に変換して、それで検証する。


[ メッセージ編集済み 編集者: MMX 編集日時 2004-06-25 12:28 ]
1

スキルアップ/キャリアアップ(JOB@IT)