Вопрос

Я использую Apache Xerces 3.0.1 Xinclude. Я хочу использовать механизм Xinclude, чтобы включить XML -файлы. У меня есть три файла XML в одном и том же каталоге. test_a.xml xincludes test_b.xml, который xincludes test_c.xml. Когда у меня есть только test_a.xml xinclude test_b.xml, это работает. Однако, когда у меня есть test_b.xml xinclude test_c.xml, я получаю следующую ошибку командной строки:

C: digital_receiver test> xinclude.exe test_a.xml test_z.xml parse test_a.xml в процессе ... фатальная ошибка в файле c: digital_receiver test/test_a.xml, строка 3, char 34 Сообщение: нет схема. в 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="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="test_c.xml"/>
</test_b>

test_c: xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<test_c>
  <channel>1</channel>
</test_c>

Любая помощь будет оценена.

Это было полезно?

Решение

Насколько я могу судить, ваш XML в порядке, но я бы не стал претендовать на то, чтобы быть последним словом по этому поводу.

Это мой предполагать что вы попадаете в ошибку в обработке Xinclude Xerces. Я отмечаю, что, хотя этому коду почти три года, он, очевидно, не был Выпущен до Xerces 3.0, так что это может быть относительно непроверенным. (И учитывая то, что базовая ури из включенных документов обрабатываются в Xinclude, возможность ошибки здесь кажется больше 0).

В качестве обходного пути я бы посоветовал сделать то, что предполагает сообщение об ошибке: добавьте схему в URI для включенных файлов. К сожалению, для файла uris это также означает, что вам нужно использовать абсолютный 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. (Я думаю, что это описывает ту же проблему, но формулировка в отчете заставляет его звучать даже как не замужем Слой включения выйдет из строя при использовании относительных путей.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top