Насколько я могу судить, с вашим XML все в порядке, но я бы не стал называть его последним словом.
Это мое предположение , что вы попали в ошибку при обработке XInclude Xerces. Я отмечаю, что, хотя этому коду почти три года, он, по-видимому, не был выпущен до Xerces 3.0 , поэтому он может быть сравнительно не проверен. (И учитывая способ обработки базовых URI включенных документов в XInclude, вероятность ошибки здесь кажется, что она больше 0.)
В качестве обходного пути я бы предложил сделать то, что предлагает сообщение об ошибке: добавить схему в URI для включенных файлов. К сожалению, для файловых URI это также означает, что вам нужно использовать абсолютный URI.
test_a.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<test_a xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="file://path/to/directory/test_b.xml"/>
</test_a>
test_b.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<test_b xmlns:xi="http://www.w3.org/2001/XInclude">
<ch>5</ch>
<xi:include href="file://path/to/directory/test_c.xml"/>
</test_b>
ОБНОВЛЕНИЕ: действительно есть похожая ошибка на apache.org. (Я думаю, что это описывает ту же проблему, но формулировка в отчете делает его звучащим так, будто даже единственный слой включения потерпит неудачу при использовании относительных путей.)