Используя Saxon 9.9.1.3J, я получаю ошибку ввода-вывода каждый раз, когда пытаюсь преобразовать файл DITA с DTD:
Ошибка ввода-вывода, полученная при обработке синтаксического анализатора XMLfile: /test.dita: /learningAssessment.dtd (нет такого файла или каталога)
Это происходит, даже если я принудительно -dtd: off в командной строке. Комментирование DTD в файле DITA действительно позволяет его обрабатывать.
Интересно, что когда я запускаю тот же файл DITA в oXygen, используя Saxon-HE 9.8.0.12, он работает правильно. Любая идея, что может быть причиной того, что это ведет себя по-другому?
Пример файла 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>