2016-08-04 3 views
0

XMLファイルのDTDの場所を上書きするためにカタログファイルを使用しようとしています。私はここにすべてのヒントを試してみたHow to use saxon built-in catalog featureしかし、それを動作させることができませんでした。私はこの単純な例に減少:サクソンのSaxon XQueryカタログファイルはDTD URIを上書きしますか?

確認バージョン:

C:\test>java net.sf.saxon.Query 
No query file name 
Saxon-HE 9.7.0.7J from Saxonica 
... 

マイカタログファイルを。私は(uriSuffix)最も単純に削減しようとした:

C:\test>java org.apache.xml.resolver.apps.resolver -c didcat.xml -u bad.dtd uri 
Cannot find CatalogManager.properties 
Resolve URI (uri): 
     uri: bad.dtd 
Result: file:/C:/test/good.dtd 

シンプルなのtest.xmlファイル:

<?xml version="1.0"?> 
<!DOCTYPE a SYSTEM "bad.dtd"> 
<a>hello world</a> 

シンプルなカタログと期待通り

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> 
    <uriSuffix uriSuffix="bad.dtd" uri="good.dtd" /> 
</catalog> 

確認リゾルバがクラスパスや行動でありますtest.xql:

​​

結果:

C:\test>java net.sf.saxon.Query -t -catalog:didcat.xml test.xql 
Loading catalog: didcat.xml 
Saxon-HE 9.7.0.7J from Saxonica 
Java version 1.8.0_101 
Analyzing query from test.xql 
Analysis time: 131.650519 milliseconds 
Resolved URI: test.xml 
     file:/C:/test/test.xml 
Building tree for file:/C:/test/test.xml using class net.sf.saxon.tree.tiny.TinyBuilder 
Error on line 2 column 6 of test.xql: 
    FODC0002: I/O error reported by XML parser processing file:/C:/test/test.xml: 
    C:\test\bad.dtd (The system cannot find the file specified) 
Query failed with dynamic error: I/O error reported by XML parser processing file:/C:/test/test.xml: C:\test\bad.dtd (The system cannot find the file specified) 

DTD URIを上書きするためにいくつかの異なるカタログ手法を試しましたが、どれも成功しませんでした。私は間違って何をしていますか?前もって感謝します。

答えて

1

DTDなどのXMLエンティティへの参照を解決するには、uriSuffixエントリではなく、カタログ内のsystemSuffixエントリを使用する必要があります。カタログを

に変更する
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> 
    <systemSuffix systemSuffix="bad.dtd" uri="good.dtd" /> 
</catalog> 
+0

ありがとうございます。完璧に働いた。 –

関連する問題