ошибка xerces xinclude - PullRequest
       25

ошибка xerces xinclude

0 голосов
/ 07 января 2010

Я использую 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 Разбор test_a.xml выполняется ... Фатальная ошибка в файле C: \ digital_receiver \ test / test_a.xml, строка 3, символ 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>

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

1 Ответ

0 голосов
/ 07 января 2010

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

...