我正在尝试从1.8.5升级到DITA-OT 3.0.4。所以我做了一些尝试和错误。
我有一个专门的SIDSC组件。在以前的DITA-OT版本中,它可以毫无问题地进行解析,并且我能够生成PDF。但是在3.0.4中,我遇到了这个错误:
topic-reader:
[topic-reader] Reading file:/C:/InfoShare/Data/PublishingService/Data/DataExports/GUID-CE32C6F9-B88A-4E25-B702-C484D3460BCA.1129492.20180621060207637/2/en-US/workset/temp/f413807680e5a768d5bc8cf7f9e40b9bd67490f1.ditamap
[topic-reader] Processing file:/C:/InfoShare/Data/PublishingService/Data/DataExports/GUID-CE32C6F9-B88A-4E25-B702-C484D3460BCA.1129492.20180621060207637/2/en-US/workset/GUID-0D9FFE68-743C-4F90-837A-07E9F2088225.xml to file:/C:/InfoShare/Data/PublishingService/Data/DataExports/GUID-CE32C6F9-B88A-4E25-B702-C484D3460BCA.1129492.20180621060207637/2/en-US/workset/temp/9b37d86563b268e88ad9d0bfb362fddd04aa5d56.xml
[topic-reader] [DOTJ013E][ERROR] Failed to parse the referenced file 'file:/C:/InfoShare/Data/PublishingService/Data/DataExports/GUID-CE32C6F9-B88A-4E25-B702-C484D3460BCA.1129492.20180621060207637/2/en-US/workset/GUID-0D9FFE68-743C-4F90-837A-07E9F2088225.xml'.: An element type is required in the declaration of element type "desc".
这是xml文件的示例数据:
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<!DOCTYPE concept PUBLIC "-//Test//DTD DITA Mathml Concept//EN" "file:///C:/InfoShare/Web/Author/ASP/DocTypes/dita-oasis/1.2/test/dtd/testConcept.dtd" [
]><?ish ishref="GUID-7EF28CDC-9213-4ECC-9EF6-9A49C627151D" version="1" lang="en-US"?>
<concept id="GUID-7EF28CDC-9213-4ECC-9EF6-9A49C627151D" xml:lang="en-US" ishlabelxpath="./title" xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/" ditaarch:DITAArchVersion="1.2" domains="(topic concept) (topic hi-d) (topic ut-d) (topic indexing-d) (topic hazard-d) (topic abbrev-d) (topic pr-d) (topic sw-d) (topic ui-d) (topic sidscDomain-d) (topic mathml-d) (topic equation-d) " class="- topic/topic concept/concept ">
如果我删除DOCTYPE,则Xerces可以毫无问题地对其进行解析,但是如果我将其保留在那里,则会失败。
我创建了一个批处理文件来调用dita-ot:
C:\InfoShare\App\Utilities\DITA-OT\test\bin\dita --transtype=%4 --args.input=%1/%2 --output.dir=%3 --dita.temp.dir=%1/temp --args.draft=%5 --clean.temp=%6 --validate=%7 --args.rellinks="nofamily" --logfile %3/%2_%4.log --propertyfile=pdf.properties
pdf.properties:
args.gen.task.lbl = YES
args.rellinks = nofamily
clean.temp = no
axf.cmd = C:\\Program\ Files\\Antenna House\\AHFormatterV64\\AHFCmd.exe
pdf.formatter = ah
args.grammar.cache=no
validate = no
我实际上已经将args.grammar.cache
设置为no
,将validate
设置为no
,但仍然没有任何帮助。我做错了吗?还是有办法让Xerces忽略DTD验证?
答案 0 :(得分:0)
我花了一些时间才找出导致问题的原因。由于我们正在使用SDL知识中心,所以我认为他们已经对我们使用的旧版dita-ot进行了一些修改。所以我下载了dita-ot 1.8.5并将其与我们当前的dita-ot进行比较。
当我在WinMerge中比较它们时,我发现它确实有一些更改。在catalog-dita.xml
中,我看到了一些有关自定义dtd组件的引用。
+ <nextCatalog catalog="../../../../Web/Author/ASP/DocTypes/catalog.xml"></nextCatalog>
+
+ <!-- Java properties file DTD -->
+ <system systemId="http://java.sun.com/dtd/properties.dtd" uri="dtd/properties.dtd"></system>
+
这解决了我的问题。希望它可以帮助某人。