Frage

Ich verwende Apache Xerces 3.0.1 Xinclude. Ich möchte den Xinclude -Mechanismus verwenden, um XML -Dateien einzuschließen. Ich habe drei XML -Dateien im selben Verzeichnis. test_a.xml xincludes test_b.xml was xincludes test_c.xml. Wenn ich nur test_a.xml xinclude test_b.xml habe, funktioniert es. Wenn ich jedoch test_b.xml xinclude test_c.xml habe, erhalte ich den folgenden Befehlszeilenfehler:

C: digital_receiver test> xinclude.exe test_a.xml test_z.xml parse test_a.xml im Gange ... Fataler Fehler bei Datei c: digital_receiver test/test_a.xml, Zeile 3, Zeichen 34 Meldung: Kein Schema gefunden in Uri fertig.

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>

Jede Hilfe wäre geschätzt.

War es hilfreich?

Lösung

Soweit ich das beurteilen kann, ist Ihr XML in Ordnung, aber ich würde nicht behaupten, das letzte Wort dazu zu sein.

Es ist mein erraten Dass Sie einen Fehler in der Xinclude -Verarbeitung von Xerces treffen. Ich stelle fest, dass dieser Code zwar fast drei Jahre alt ist, aber anscheinend nicht war freigegeben bis Xerces 3.0, so kann es relativ ungetestet sein. (Und angegeben wie das Basis -URIs der eingeschlossenen Dokumente werden in Xinclude behandelt, die Möglichkeit eines Fehlers hier scheint größer als 0 zu sein.)

Als Problemumgehung würde ich vorschlagen, was die Fehlermeldung vorschlägt: Fügen Sie der URI für die enthaltenen Dateien ein Schema hinzu. Leider bedeutet dies auch für Datei -URIs, dass Sie einen absoluten URI verwenden müssen.

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: Es gibt tatsächlich Ein ähnlicher Fehler bei apache.org. (Ich glaube Single Die Einschlussschicht würde bei der Verwendung von relativen Pfaden fehlschlagen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top