使用 Saxon 9.9.1.3J 时,每次尝试转换具有 DTD 的 DITA 文件时都会出现 I/O 错误:
XML 解析器处理文件报告的 I/O 错误:/test.dita: /learningAssessment.dtd (No such file or directory)
即使我在命令行上强制 -dtd:off 也会发生这种情况。注释掉 DITA 文件中的 DTD 确实允许它进行处理。
有趣的是,当我使用 Saxon-HE 9.8.0.12 在 oXygen 中运行相同的 DITA 文件时,它确实可以正确处理。知道什么可能导致这种行为不同吗?
示例 DITA 文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE learningAssessment PUBLIC "-//OASIS//DTD DITA Learning Assessment//EN" "learningAssessment.dtd">
<learningAssessment id="id">
<title>Title</title>
<learningAssessmentbody>
<lcInteraction>
<lcSingleSelect id="lcSingleSelect_agy_fxz_ljb">
<lcQuestion>Question</lcQuestion>
<lcAnswerOptionGroup id="lcAnswerOptionGroup_bgy_fxz_ljb">
<lcAnswerOption>
<lcAnswerContent>A</lcAnswerContent>
</lcAnswerOption>
<lcAnswerOption>
<lcAnswerContent>B</lcAnswerContent>
<lcCorrectResponse/>
</lcAnswerOption>
</lcAnswerOptionGroup>
</lcSingleSelect>
</lcInteraction>
</learningAssessmentbody>
</learningAssessment>
这是一个演示错误的 XSL 外壳:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
<xsl:output />
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
