# Xerces -Parsen mit einer externen Schemadatei geht nicht



## maxpade (27. Apr 2007)

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:*



```
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 3. Zeile funktioniert 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...

```
<?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:*


```
<?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


----------



## SnooP (27. Apr 2007)

was heißt denn es funktioniert nicht? fehlermeldung?


----------



## maxpade (28. Apr 2007)

cvc-elt.1: Cannot find the declaration of element StoerungRoot 
lautet die Fehlermeldung.....
Früher war das mal ein typischer Xerces Fehler. Doch der Bug wurde ja behoben, so dass ich den Fehler doch in meinem Code haben muß.


----------

