DTDを有効にする方法とエラーの解消方法

このQ&Aのポイント
  • XMLEDITOR.NETツールでDTDを有効にする方法とエラーの解消方法について説明します。
  • DTDを有効にするには、XMLEDITOR.NETツールの「ツール(T)」メニューから「妥当性検証(外部ファイル)(F)」を選び、外部サブセットのDTDファイルを選択します。
  • DTDの処理を有効にするには、XmlReaderSettingsのProhibitDtdプロパティをFalseに設定し、XmlReader.Createメソッドにその設定を渡す必要があります。ネットで調べても解決しない場合は、他のバリデータ(検証ツール)を利用することを検討しましょう。
回答を見る
  • ベストアンサー

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
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

xmllint は試した?

hohoemikun
質問者

お礼

「dscripty」様 お世話になっております。 ご回答いただきました 「xmllint」(libxml2)を、 その後、さっそく試してみたところ、 無事にデータ検証することが出来ました。 本当にありがとうございました。

関連するQ&A

  • 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) どこに原因があるのかわかりませんので、 どなたかわかる方がいらっしゃいましたらご指摘願います。

  • eclipse-tomcat 実行エラー

    eclipseでfess(全文検索オープンソース)のデバッグをしようとしましたがtomcat実行した際に以下のエラーがでてしまいます。なぜでしょうか?起動構成のクラスパスには$TOMCAT_HOME\bin、$TOMCAT_HOME\lib内のjarファイルを指定しています。tomcat6でも7でも試してみました。Server.xmlの内容は「<Context path="fess" reloadable="true" docBase="D:\workspace\fess\src\main\webapp" workDir="D:\workspace\fess\src\main\webapp" />」一行を追加したのみです。ちなみに http://localhost:8080/examples/ は正常に表示されています。 2012/05/11 10:36:13 org.apache.tomcat.util.digester.Digester startElement 致命的: Begin event threw exception java.lang.NullPointerException at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:767) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1318) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3104) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) at org.apache.catalina.startup.Catalina.load(Catalina.java:601) at org.apache.catalina.startup.Catalina.load(Catalina.java:649) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)

  • 【JAVA】eclipseでエラー発生・・・。回答お願いします。

    現在、eclipseでtomcatプラグインを使用してwebアプリを作成しています。 質問内容:eclipseからtomcatを再起動すると以下のエラーが発生します。何度も全てのソフトを再インストールしても直りません。 ソフトのヴァージョンが合っていないのでしょうか? このエラーを直す方法を教えてください。 ※eclipseでtopmcat起動時にコマンドに出力されるエラー(下に記述): Created MBeanServer with ID: 1ba6076:113dd8f5374:-8000:chancela-ff6127:1 2007/07/19 17:19:25 org.apache.coyote.http11.Http11BaseProtocol init 情報: Coyote HTTP/1.1を http-8080 で初期化します サービス Tomcat-Standalone を起動します Apache Tomcat/4.1.36 2007/07/19 17:19:27 org.apache.commons.digester.Digester error 致命的: Parse Error at line 5 column 15: Document root element "web-app", must match DOCTYPE root "null". org.xml.sax.SAXParseException: Document root element "web-app", must match DOCTYPE root "null". at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source) 2007/07/19 17:19:32 org.apache.coyote.http11.Http11BaseProtocol start 情報: Coyote HTTP/1.1を http-8080 で起動します 2007/07/19 17:19:33 org.apache.jk.common.ChannelSocket init 情報: JK: ajp13 listening on /0.0.0.0:8009 2007/07/19 17:19:33 org.apache.jk.server.JkMain start 情報: Jk running ID=0 time=0/160 config=null 使用してるソフトのヴァージョン情報は以下記述します。 ・j2sdk1.4.2_14 ・apache-tomcat-4.1.36 ・eclipse-SDK-3.2.2-win32 ・tomcatPluginV32

  • EclipseでTomcat

    Windows XP Eclipse 3.0.1 Tomcat 4.1 Eclipseでサーブレットをしようと思って Tomcatをインストールしたのですが、 Eclipseを起動しTomcatプロジェクトを作成せずに Tomcatを起動するとうまく起動するのですが Tomcatプロジェクトを起動すると以下のようなメッセージが出て起動できません。 解決法がわかる方いましたらお願いします。教えてください。 org.apache.commons.digester.Digester fatalError 致命的: Parse Fatal Error at line 1 column 87: Invalid byte 1 of 1-byte UTF-8 sequence. org.xml.sax.SAXParseException: Invalid byte 1 of 1-byte UTF-8 sequence. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source) 以下略

    • ベストアンサー
    • Java
  • DTDファイルをクラスパスから読み込みたい

    DTDを利用したXMLファイルを読み込むDOMパーサーを作ってます。 表題のとおり、DOMパーサーがXMLファイル、DTDファイルを読み込む際に DTDファイルをローカルマシン(実行環境)のクラスパスにあるディレクトリ から読み込みたいのですがうまくいきません。 XMLパーサーにxercesを利用し、DOMを使ってます。 例えば、 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pagecontrol SYSTEM "sample.dtd"> <PEOPLE> <NAME>afternoon_cafe</NEME> </PEOPLE> のようなXMLファイルを、DOMパーサーがparse()メソッドによりロード すると、"sample.dtd"をカレントディレクトリからしか検索しません。 この"sample.dtd"をクラスパスにあるディレクトリに置き、それを 読み込むようにしたいのですが、、、 どなたかわかる方がいれば、教えてください。 お願いします。

    • ベストアンサー
    • XML
  • 致命的: StandardServer.await: create 8005

    こちらのQ&Aを拝見しながら、一つずつエラーを解消していったのですが、どうしても1箇所だけエラーの原因がわかりません。 どうしても作ってみたいものがあって、参考書を見ながらの「超初心者」です。無謀だとは思いますが、是非ご教授下さい。 使用しているものは、eclipse SDK 3.3.1 apache-tomcat-6.0.20 tomcatPluginV321 ADOBE Flex Plug-in です。 マシンOSはWindows Vista Buisiness となります。 各質問内容を参考にしながら、server xml のポートを変えました。 おかげで「ポート8080」のエラーは回避されましたが、 <Server port="8005" shutdown="SHUTDOWN"> だけは、いくらポートを変えても(現在は8015にしています) 致命的: StandardServer.await: create[8015]: java.net.UnknownHostException: localhost: localhost at java.net.InetAddress.getAllByName0(Unknown Source) at java.net.InetAddress.getAllByName0(Unknown Source) at java.net.InetAddress.getAllByName(Unknown Source) at java.net.InetAddress.getByName(Unknown Source) at org.apache.catalina.core.StandardServer.await(StandardServer.java:373) at org.apache.catalina.startup.Catalina.await(Catalina.java:647) at org.apache.catalina.startup.Catalina.start(Catalina.java:607) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) と出てしましまいます。 ちなみに、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> も、「8109」に変更しました。 tomcat users.xmlのencodingもutf-8に変えました。ありとあらゆるサイトを駆けめぐって、直せるところはなおしたのですが、(約3日間調べました)何度もポート番号を変更しても、「実行」してみると「Internet Explorer ではこのページは表示できません」と表示 されてしまい、困っています。 本当に超初心者なので、意味が伝わらないかも知れませんが、どなたかよろしくお願いいたします。

    • ベストアンサー
    • Java
  • XMLのエラーコードの意味が理解出来ません

    XMLの初心者です、宜しくお願い致します。 XMLファイルをbuild.xmlによりXSLをを読み込ませていますが、 以下のようなエラーメッセジが出るのですが全く意味が理解出来ません。 何が原因でしょうか宜しくお願い致します。 __________________________ BUILD FAILED G:\xmlkhtgk\XML ??\???\workspace_070528\XMLproj\build.xml:19: Could not start xml validation: org.apache.xerces.parsers.SAXParser ________________________ 因みにxslの該当箇所(18行以下)と思われる内容は以下のようなコードです。 <xmlvalidate lenient="no" classname="org.apache.xerces.parsers.SAXParser" file="${doc.dir}/${xml.file}"> <attribute name="http://apache.org/xml/features/validation/schema" value="true" /> <attribute name="http://xml.org/sax/features/namespaces" value="true"/> <property name="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" value="${basedir}/${doc.dir}/${tagdef.file}"/> </xmlvalidate>

    • 締切済み
    • XML
  • JAVAのサーブレットエラー

    JAVA初心者です。 tomcatを使用しています。 JSPファイルから、サーブレットを呼び出したときに 下記エラーログが表示されます。 java.lang.NoClassDefFoundError: KeisanServ (wrong name: KeisanServ) at java.lang.ClassLoader.defineClass0(NativeMethod) at java.lang.ClassLoader.defineClassClassLoader.java:509)at org.apache.tomcat.util.depend.DependClassLoader12.defineClassCompat(U nknown Source)at org.apache.tomcat.util.depend.DependClassLoader.loadClassInternal1(Un known Source)at org.apache.tomcat.util.depend.DependClassLoader12$1.run(Unknown Sourc e) at java.security.AccessController.doPrivileged(Native Method) at org.apache.tomcat.util.depend.DependClassLoader12.loadClass(Unknown S ource)at java.lang.ClassLoader.loadClass(ClassLoader.java:262)at org.apache.tomcat.facade.ServletHandler.getServlet(Unknown Source)at org.apache.tomcat.facade.ServletHandler.preInit(Unknown Source)at org.apache.tomcat.facade.ServletHandler.init(Unknown Source)at org.apache.tomcat.facade.ServletHandler.service(Unknown Source)at org.apache.tomcat.core.ContextManager.internalService(Unknown Source)at org.apache.tomcat.core.ContextManager.service(Unknown Source)at org.apache.tomcat.modules.server.Http10Interceptor.processConnection( Unknown Source)at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Unknown Source)at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Unknown Source)at java.lang.Thread.run(Thread.java:536) 単純にプログラムエラーなんでしょうか?? エラー等に詳しい方教えて下さい。 宜しくお願いします。

  • Tomcatが起動できない

    いつもお世話になっています。 Tomcatを起動すると以下のようなエラーが出ます。 自分の書き換えた場所は元に戻したはずなのに。 invokerの設定とContextの登録をさわりました。 それから出るようになった気がします。 Tomcatのバージョンは5.5、OSはWinXP、eclipseを使っています。 どなたかお教え下さい。 致命的: createMBeans: Throwable javax.management.MalformedObjectNameException: Invalid character ':' in value part of property at javax.management.ObjectName.construct(Unknown Source) at javax.management.ObjectName.<init>(Unknown Source) at org.apache.catalina.mbeans.MBeanUtils.createObjectName(MBeanUtils.java:1060) at org.apache.catalina.mbeans.MBeanUtils.createMBean(MBeanUtils.java:497) at org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans(ServerLifecycleListener.java:570) at org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans(ServerLifecycleListener.java:366) at org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans(ServerLifecycleListener.java:535) at org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans(ServerLifecycleListener.java:498) at org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans(ServerLifecycleListener.java:660) at org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans(ServerLifecycleListener.java:628) at org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans(ServerLifecycleListener.java:278) at org.apache.catalina.mbeans.ServerLifecycleListener.lifecycleEvent(ServerLifecycleListener.java:129) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.StandardServer.start(StandardServer.java:693) at org.apache.catalina.startup.Catalina.start(Catalina.java:552) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

    • ベストアンサー
    • Java
  • 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

専門家に質問してみよう