Pregunta

Estoy usando Apache Xerces 3.0.1 Xinclude. Quiero usar el mecanismo Xinclude para incluir archivos XML. Tengo tres archivos XML, todo en el mismo directorio. test_a.xml xincludes test_b.xml que xincluye test_c.xml. Cuando solo tengo test_a.xml xinclude test_b.xml, funciona. Sin embargo, cuando tengo test_b.xml xinclude test_c.xml obtengo el siguiente error de línea de comando:

C: digital_receiver test> xinclude.exe test_a.xml test_z.xml parse test_a.xml en progreso ... error fatal en el archivo c: digital_receiver test/test_a.xml, línea 3, char 34: sin esquema encontrado En Uri terminado.

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>

Cualquier ayuda sería apreciada.

¿Fue útil?

Solución

Por lo que puedo decir, su XML está bien, pero no diría ser la última palabra sobre esto.

Es mi adivinar Que estás golpeando un error en el procesamiento de Xinclude de Xerces. Observo que si bien este código tiene casi tres años, aparentemente no fue lanzado hasta Xerces 3.0, por lo que puede ser relativamente no probado. (Y dado la forma en que Uris base de documentos incluidos se manejan en Xinclude, la posibilidad de un error aquí parece que es mayor que 0.)

Como solución, sugeriría hacer lo que sugiere el mensaje de error: agregue un esquema al URI para los archivos incluidos. Desafortunadamente, para URI de archivo, eso también significa que necesita usar un URI absoluto.

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>

Actualización: hay de hecho un error similar en apache.org. (Creo que está describiendo el mismo problema, pero la redacción del informe hace que suene incluso como un único La capa de inclusión fallaría al usar rutas relativas).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top