- PR -

DTDの任意指定方法について

1
投稿者投稿内容
wakaba
会議室デビュー日: 2004/09/27
投稿数: 3
投稿日時: 2004-09-27 11:35
はじめまして。
基本的な内容かもしれませんがわからないことがあり、お教えいただければ助かります。

C++でxercescを利用してxmlファイルを読んでいますが、DTDをxmlに記述せず、プログラムでDTDファイルをパーサに指定したいと思っています。
xmlファイルがユーザから渡されることがあるので、DTDはアプリケーションが指定したいDTDファイルを検索しパーサに指示したいのです。

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

↓こんな感じで作っています。

--------------------------------

SAX2XMLReader* pParser = XMLReaderFactory::createXMLReader();
SAX2XMLReader::ValSchemes valScheme = SAX2XMLReader::Val_Auto;
SetXMLReaderOption( pParser, valScheme );

int errorCount = 0;
try {
pParser->setDTDHandler( this );
pParser->setContentHandler( this );
pParser->setErrorHandler( this );
pParser->parse( m_FileName );
errorCount = pParser->getErrorCount();
}
catch( const XMLException& toCatch ) {


}
-----------------------------------
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-09-27 14:57
検索で出る、誰でも思いつく方法
ファイルストリームの頭を補完する
http://www.naney.org/wiki/xerces.html
コーディング的には?DTDを補完する方が楽です
----------------------
fDTDsource とかフューチャもあるみたいだが、深い位置で
指定してどうなるかよくわからなかった
SGML時代のスタイルでは

$ コマンド オプション DTDファイル 文書ファイル

の 連結ストリーム形の指定 でしたから、ストリームの頭書き換えも
ありでしょう。DTDリンクをカタログで解決する形もありましたが。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-09-29 00:34 ]
wakaba
会議室デビュー日: 2004/09/27
投稿数: 3
投稿日時: 2004-09-27 15:12
返答ありがとうございます。

xmlファイルをパーサに渡す前に、xmlにアプリで指定したいDTDの指定を加えるということですよね。
あまり詳しくなく、とんちんかんなこと言ってたらすいません。
パーサにDTDファイルを簡単に指定できないかなーと思ってましたが、xml側を変更するのもありですね。

試してみます。
ありがとうございます。
1

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