Domanda

Sto usando Apache Xerces 3.0.1 XInclude. Voglio utilizzare il meccanismo xinclude per includere i file XML. Ho tre file XML tutti nella stessa directory. test_a.xml XIncludes test_b.xml che XIncludes test_c.xml. Quando mi resta che test_a.xml xinclude test_b.xml, funziona. Tuttavia, quando ho test_b.xml xinclude test_c.xml ottengo il seguente errore riga di comando:

C: \ digital_receiver \ test> XInclude.exe test_a.xml test_z.xml Parse test_a.xml in corso ... Errore fatale a file C: \ digital_receiver \ test / test_a.xml, linea 3, char 34 Messaggio: nessun regime si trovano in notazione URI finito.

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>

Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Per quanto posso dire, il vostro XML è OK, ma non sarebbe la pretesa di essere l'ultima parola su questo.

E 'il mio indovinare che si sta colpendo un bug nella lavorazione XInclude Xerces'. Faccio notare che, mentre questo codice è quasi tre anni, a quanto pare non era rilasciato fino Xerces 3.0 , quindi potrebbe essere relativamente non testati. (E dato il modo in cui URI di base di documenti inclusi sono gestiti in XInclude, la possibilità di un bug qui sembra come se fosse maggiore di 0.)

Per risolvere il problema, io suggerirei di fare ciò che il messaggio di errore suggerisce: aggiungere uno schema per gli URI per i file inclusi. Purtroppo, per URI di file, che significa anche è necessario utilizzare un URI assoluto.

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>

UPDATE: C'è infatti un simile bug a apache.org. (Penso che descrive lo stesso problema, ma la formulazione della relazione fa sembrare anche un singola strato di inclusione fallirebbe quando si utilizzano percorsi relativi.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top