mit Xerces eine externe XSD-Schema-Datei parsen

maxpade

Mitglied
Hallo zusammen,

ich teste schon seit einigen Stunden das Parsen mit Xerces 2.9.0. Ich weiß echt nicht mehr weiter: Wenn ich innerhalb meiner XML -Datei auf die XSD referenziere, so wird problemlos geparst, soweit ich aber mit der Property external-schemaLocation arbeiten möchte, so funktioniert es nicht:

Wenn ich in meiner XML-Datei folgendes drinlasse, so funktioniert es ohne external-schemaLocation.

<StoerungRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.company.com/Data C:\stoerung.xsd" xmlns="http://www.company.com/Data">

Das Dumme ist nur, dass ich die XML-Dateien nur gegen eine Schemadatei validieren will, die auswechselbar sein soll. Deswegen brauche ich die external-schemLocation -Funktionalität

Hier mein Quellcode für den Parser:
Code:
        DOMParser parser = new DOMParser();
        
	parser.setFeature("http://xml.org/sax/features/validation",true); 
        parser.setFeature("http://apache.org/xml/features/validation/schema",true);
        parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);

//Hier mache ich was falsch, aber was        
parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation", "http://www.company.com/Data file:///C:stoerung.xsd");
        
        ErrorChecker errors = new ErrorChecker();
        parser.setErrorHandler(errors);

        parser.parse(xmlFileName);
Meine XML-Datei:

Mit der rot markierten Zeile funktiert der Parser ohne external-SchemaLocation, doch diese Zeile ist standardmäßig nicht drin in meinen XML-Dateien, weshalb ich also external-SchemaLocation-Funktionalität brauche...
Code:
<?xml version="1.0" encoding="UTF-8"?>
<StoerungRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.company.com/Data C:\stoerung.xsd" xmlns="http://www.company.com/Data">
	<Stoerungsmeldung>
		<Version>000.000</Version>
		<technischeQuittung>
			<Meldung>OK</Meldung>
			<Fehlercode>SMF501</Fehlercode>
		</technischeQuittung>
	</Stoerungsmeldung>
</StoerungRoot>
Meine XSD-Datei beginnt so:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.company.com/Data" targetNamespace="http://www.company.com/Data" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:element name="StoerungRoot">
Ich danke euch für jeden Tip!

gruß maxpade
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück