• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DTDファイルをクラスパスから読み込みたい)

DTDファイルをクラスパスから読み込む方法とは?

fatbackの回答

  • fatback
  • ベストアンサー率84% (11/13)
回答No.1

「ローカル環境(単独)でxercesを利用」という解釈でお答えします。 >"sample.dtd"をカレントディレクトリからしか検索しません <!DOCTYPE pagecontrol SYSTEM "sample.dtd"> はカレントディレクトリを指していますので……。 私の場合は作業ディレクトリから(理由があって)相対指定で <!DOCTYPE pagecontrol SYSTEM "../program/sample.dtd"> のようにしています。 このケースでしたら ●クラスパスにあるディレクトリを絶対指定する ●PUBLIC宣言してDTDをライブラリに追加する(HTMLのDTDを参考にして下さい) のがいいのではないかと思います。 #この辺はSGML本に書いてありますので読んでみて下さい。

afternoon_cafe
質問者

補足

さっそくの回答ありがとうございます。 私の勉強不足で申し訳ないのですが、下記の回答の意味がよくわかりません。。。 ●PUBLIC宣言してDTDをライブラリに追加する(HTMLのDTDを参考にして下さい) のがいいのではないかと思います。 具体的な例でお教え願えませんでしょうか?

関連するQ&A

  • SAXでparseを行う際の、DTDとの妥当性チェックついて

    Java&XMLの初心者です。 用語の使い方など間違っているかもしれませんが、 よろしくお願いします。 XMLパーサーにxercesを利用しています。 以下のようなXMLをがあったときに、 <?xml version="1.0"?> <!DOCTYPE a SYSTEM "a.dtd"> <a> <b>1</b> <b>1</b> </a> 以下のコードを実行すると、  SAXParserFactory f = SAXParserFactory.newInstance();  f.setValidating(true);  SAXParser p = f.newSAXParser();  p.parse((InputSource)xml, handler); カレントディレクトリにあるa.dtdとの妥当性をチェックしますが、 これをファイルは無視し、指定した文字列とチェックをさせるなどと いうことは可能でしょうか?

    • ベストアンサー
    • XML
  • XMLEDITOR.NETでDTDを有効にするには

    XMLEDITOR.NETツールで、行数が多いXMLを読み込んでから、 [ツール(T)] - [妥当性検証(外部ファイル)(F)]をクリックし、 外部サブセット(別ファイル)のDTDファイルを選択したところ、 以下のエラーメッセージが表示されます。  ↓ 「セキュリティ上の理由から、DTDはこのXMLドキュメントでは使用  できません。DTD処理を有効にするには、XmlReaderSettingsの  ProhibitDtdプロパティをFalseに設定し、XmlReader.Createメソ  ッドにその設定を渡してください。」 ネットでいろいろ調べたところ、 マイクロソフトのSystem.xml.dllモジュール内のようなのですが、 有料のマイクロソフトツール等、私は持っていない為、 そのDLL内を編集することが出来ない状況です。 やはり、有料のマイクロソフトツールを購入して利用しないと、 このエラーは解消出来ないのでしょうか? PS: 私が実施したいことは、単に、 外部DTDファイルとXMLファイルとの間における 「妥当な文書(valid XML document)」を、 チェックしたいだけなので、 もし、 上記エラーが解消出来ないようでしたら、 他に良いバリデータ(検証ツール)があれば、 そちらを教えていただけましたら幸いです。 ちなみにネットで調べて、「MSV(Oracle Multi-Schema XML Validator)」を 試してみましたが、実行すると、 以下のエラーメッセージが表示されて、  ↓ Exception in thread "main" java.net.MalformedURLException: no protocol: xmlCheck /test20120508.dtd/test20120508.xml at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at com.sun.msv.reader.util.GrammarLoader._loadSchema(GrammarLoader.java:513) at com.sun.msv.reader.util.GrammarLoader.parse(GrammarLoader.java:331) at com.sun.msv.driver.textui.Driver.run(Driver.java:217) at com.sun.msv.driver.textui.Driver.main(Driver.java:68) こちらも今のところ利用出来ていない状況です。 以上になります。 よろしくお願いします。

    • ベストアンサー
    • XML
  • DTDと名前空間

    DTDと名前空間の関係について質問します。 XMLの本を読みDTDと名前空間の大まかなイメージを下記のようにつかみました。 DTD: XML文書の妥当性を規定し、DTD宣言で指定。 名前空間: ひとつのXML内で要素名の衝突を避けるために、xmlnsで指定。 XHTMLのDTD宣言 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> XHTMLの名前空間(http://www.w3.org/1999/xhtml) <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> XHTML文書の場合、DTDと名前空間がそれぞれひとつです。 しかし、ひとつのXMLドキュメントで複数の名前空間を利用する場合は、それぞれの名前空間に対して、DTDを宣言するのでしょうか。つまり複数のDTD宣言があるXMLドキュメントになるのでしょうか。 DTDと名前空間の関係が良く分かりません。 XML自体を勉強し始めたばかりで、まとまりのない質問で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • XML
  • log4j.xmlファイルの読込で。。。

    log4Jの設定ファイルの読込を DOMConfigurator.configure("log4j.xml"); とJavaで記述していますが以下のエラーが表示されます。 log4j:ERROR Could not parse file [log4j.xml]. java.io.FileNotFoundException: C:\WINDOWS\System32\log4j.xml (指定されたファイルが見つかりません。) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) atorg.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) at org.apache.log4j.xml.DOMConfigurator$1.parse(DOMConfigurator.java:598) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:711) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:604) at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:733) at HttpTestServlet.doPost(HttpTestServlet.java:31) どこに原因があるのかわかりませんので、 どなたかわかる方がいらっしゃいましたらご指摘願います。

  • XML(DTD)の<!ENTITYを読み込むには?

    Perlで、XMLのDTD内の、 たとえば以下のような   ↓ <!ENTITY rt4 "ルーチン4"> (キー”rt4”と、値”ルーチン4”)を、 読み込むには、どうすればよいのでしょうか? 単純にXML(DTD)をテキストファイルとしてオープンして、 正規表現などで読み込むのではなく、 この<!ENTITY~ タグを利用して、 簡単に読み込める方法があるのでは? と思い、ネット上を探しておりましたが、 具体的な方法が見つけられなかった為、 ご質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • JavaでXMLをファイルからじゃなく扱いたい

    Javaで例えば、String変数に String str = "<xml sample>hogehoge</xml sample>" みたいにXML形式のデータが入っているとして、このデータを、XMLファイルをDOMで扱う時のように扱えないでしょうか?一度、ファイルに書きだして、XMLファイルとして読み込ませないと難しいでしょうか?

    • ベストアンサー
    • Java
  • XMLパーサの種類について混乱してます

    XSLTをいじる必要に駆られて、現在Java1.4+JAXP1.1を利用しています。 いままで、javax.xml.transformをimportしてメソッドを実行するだけで、「変換系に何を使っているのか」については全く気にしていなかったのですが、その実体は何なのでしょうか? (XTとかXalanとか、単体の変換系がありますよね・・・?) また、DOMパーサ、SAXパーサもJAXPで使えますが、各々のパーサや変換系を集めてパッケージにしたものがJAXPなんでしょうか。 さらに、勉強中にXMLパーサという単語が出てきて混乱しています。XMLパーサは、DOM・SAX・XSLT等とは違うのでしょうか? (XMLパーサと名乗っているXercesは何に使うのでしょうか・・・) DTDとの関連も含めて解説して頂けたら嬉しいです。

    • ベストアンサー
    • Java
  • Java ファイルオブジェクトでなく文字列オブジェクト?

    JavaでXMLをパースするプログラムを初めて試しています。 parseメソッドの第一引数がファイルオブジェクトなのですが、これをメモリ(文字列)オブジェクトを与えて同じ動作させるものはあるのでしょうか? // SAXパーサーファクトリを生成 SAXParserFactory spfactory = SAXParserFactory.newInstance(); // SAXパーサーを生成 SAXParser parser = spfactory.newSAXParser(); // XMLファイルを指定されたデフォルトハンドラーで処理します parser.parse(new File("helloworld.xml"), new InsXMLParser()); ※このように String str = "<xml? ......"; parser.XXXXXX(str, new InsXMLParser

    • ベストアンサー
    • XML
  • DOMでパースしているXML全体の出力方法

    お世話になります。 JavaでDOMを使ってXML操作をしたいと考えております。 おおよそ、以下のソースでparseできるところまで確認できました。 DOMParser parser = new DOMParser(); parser.parse("XMLファイルパス"); Document doc = parser.getDocument(); 開発中なので、DOM操作した結果のXMLを随時コンソールやログに 出力させたいのですが、たとえばdoc.toString()してもnullとなり、 正常に出力されません。 以下のようにElementを取得すると正常にアクセスできていることは 確認しています。 Element rootEl = doc.getDocumentElement(); System.out.println(rootEl.getNodeName()); なお、DOMライブラリにはxercesを用いております。 Dom4jのAPIも見てみましたが、それらしいメソッドを見つけることが できていません。 簡単にXMLを出力できることが理想です。 一般的な方法、よくやる手法など、みなさんよりご教示頂きたいです。

    • ベストアンサー
    • Java
  • xmlファイルが生成されない

    <?php //DomDocumentを呼び出す $dom = new DomDocument('1.0','UTF-8'); //要素ノード[document]を追加 $document = $dom->appendChild($dom->createElement('document')); //新しい要素をdocumentの子要素として挿入する $document->appendChild($dom->createElement('name','名前です')); $document->appendChild($dom->createElement('text','テキストです。')); //字下げや空白を考慮してきれいに整形した出力を行う $dom->formatOutput = true; //同階層にtest.xmlとして保存 $dom->save('test.xml'); //出力 echo $dom->saveXML(); ?> のように、同じディレクトリ内にXMLファイルを生成するphpプログラムを作成してみたのですが、 ブラウザからこのPHPファイルにアクセスしてもXMLファイルが作られません。どうすれば良いのでしょうか。 なにかphp,apache等の設定をしてないからでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP