Question

J'utilise Apache Xerces 3.0.1 XInclude. Je veux utiliser le mécanisme de xinclude pour inclure des fichiers XML. J'ai trois fichiers XML tous dans le même répertoire. test_a.xml XIncludes test_b.xml qui XIncludes test_c.xml. Quand je viens test_a.xml xinclude test_b.xml, il fonctionne. Cependant, quand j'ai test_b.xml xinclude test_c.xml j'obtiens l'erreur de ligne de commande suivante:

C: \ digital_receiver \ test> XInclude.exe test_a.xml test_z.xml Parse test_a.xml en cours ... Erreur fatale au fichier C: \ digital_receiver \ test / test_a.xml, ligne 3, char 34 Message: aucun modèle n'a été trouvé dans URI fini.

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>

Toute aide serait appréciée.

Était-ce utile?

La solution

Pour autant que je peux dire, votre XML est OK, mais je ne prétends pas être le dernier mot à ce sujet.

Il est mon deviner que vous frappez un bogue dans Xerces de traitement de XInclude. Je note que si ce code est presque trois ans, il n'a apparemment pas été publié jusqu'à ce que Xerces 3.0 , de sorte qu'il peut être relativement non testé. (Et compte tenu de la façon dont URIs inclus sont traités dans XInclude, la possibilité d'un bug semble ici comme il est supérieur à 0).

Pour contourner ce problème, je vous suggère de faire ce que le message d'erreur suggère: ajouter un schéma aux URIs pour les fichiers inclus. Malheureusement, pour URIs de fichiers, cela signifie aussi que vous devez utiliser un URI absolu.

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>

Mise à jour: Il y a en effet un bug similaire à apache.org. (Je pense que ça décrit la même question, mais le libellé du rapport fait sonner comme même un simple couche d'inclusion échouerait lors de l'utilisation des chemins relatifs.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top