Pergunta

Estou usando o Apache Xerces 3.0.1 Xinclude. Quero usar o mecanismo Xinclude para incluir arquivos XML. Eu tenho três arquivos XML, todos no mesmo diretório. test_a.xml xincludes test_b.xml que xincludes test_c.xml. Quando eu só tenho test_a.xml xinclude test_b.xml, ele funciona. No entanto, quando eu tenho test_b.xml xinclude test_c.xml, recebo o seguinte erro da linha de comando:

C: digital_receiver test> xinclude.exe test_a.xml test_z.xml parse test_a.xml em andamento ... erro fatal no arquivo c: digital_receiver test/test_a.xml, linha 3, char 34 mensagem: nenhum esquema encontrado em URI terminou.

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>

Qualquer ajuda seria apreciada.

Foi útil?

Solução

Até onde eu sei, seu XML está ok, mas eu não afirmaria ser a última palavra sobre isso.

É meu acho Que você está acertando um bug no processamento Xinclude de Xerces. Eu observo que, embora esse código tenha quase três anos, aparentemente não foi Lançado até o Xerces 3.0, então pode ser relativamente não testado. (E dado a maneira que Uris básicos de documentos incluídos são tratados em Xinclude, a possibilidade de um bug aqui parece ser maior que 0.)

Como solução alternativa, sugiro fazer o que a mensagem de erro sugere: Adicione um esquema aos URIs para os arquivos incluídos. Infelizmente, para URIs de arquivo, isso também significa que você precisa usar um 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>

Atualização: existe de fato um bug semelhante em apache.org. (Eu acho que está descrevendo o mesmo problema, mas a redação no relatório faz parecer até mesmo um solteiro A camada de inclusão falharia ao usar caminhos relativos.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top