# JAXB xsi:schemaLocation



## evil_one (2. Aug 2007)

Hallo,

Das hier steht am Anfang einer XSD mit der ich arbeite.

```
<xs:schema targetNamespace="http://www.osci.de/xmeld131" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xmeld="http://www.osci.de/xmeld131" 
elementFormDefault="qualified" 
attributeFormDefault="unqualified">
  <xs:include schemaLocation="xmeld-baukasten.xsd"/>
```

Nun wollte ich gern das die schemaLocation mir beim marshall mit in die XML Ausgabe geschreiben wird.
So soll es dann in der XML Datei aussehen. Diese Datei wurde mit XML Spy bearbeite.
Den kursiven Text möchte ich mit JAXB generiert bekommen.

```
<ns1:datenuebermittlung.endezustaendigkeitsteuerpflichtiger.0510 
ns1:fassung="2006-07-12" 
ns1:version="1.3.1" 
xmlns:ns1="http://www.osci.de/xmeld131" 
xmlns="http://www.osci.de/xmeld131" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
[i]xsi:schemaLocation="http://www.osci.de/xmeld131 [url]http://www.osci.de/xmeld131/xmeld-nachrichten.xsd[/url][/i]">
```

Bisher sieht das ganze allerdings so aus...

```
<ns1:datenuebermittlung.endezustaendigkeitsteuerpflichtiger.0510 
ns1:fassung="2006-07-12" 
ns1:version="1.3.1" 
xmlns:ns1="http://www.osci.de/xmeld131">
```

Ich weiß allerdings auch nicht wo ich ansetzten muss.
Kann es sein das ich hier direkt in den generierten Klassen etwas anpassen muss?


----------



## eric (3. Aug 2007)

Hallo!

Mich interessiert genau das selbe Thema. Dazu hab ich auf http://www.xml.com/pub/a/2003/01/08/jaxb-api.html folgendes gefunden:


> JAXB has some shortcomings. Client apps can't customize the marshalling behavior very much. The only standard options are (1) setting the encoding to be used, (2) turn on/off indentation, and (3) add xsi:schemaLocation/xsi:noNamespaceSchemaLocation.



Der letzte Punkt dürfte evtl. Dein Interesse erregen. Man muss wohl beim Marshaller ansetzen. In den Gererierten Klassen würd ich nicht rumwursteln. Ich werd mal mir mal den Marshaller ansehen und mich später noch mal mit Ergebnissen melden.

Grüsse aus Berlin


----------



## eric (3. Aug 2007)

Ist doch gar nicht so schwer, wenn man es sich mal richtig anschaut 


```
marshaller.setProperty("jaxb.noNamespaceSchemaLocation", "mySchemaV2.8.xsd" );
```

In der API-Doc finden sich noch andere setzbare Properties.

Mach hier mal nen Haken drann ;-)


----------



## evil_one (7. Aug 2007)

Sorry,

hab heute erst wieder rein geschaut...
werde es gleich mal Testen.


```
marshaller.setProperty("jaxb.schemaLocation", "nachrichten.xsd");
```

brachte das gewünschte Ergebnis.

Vielen Dank für den Tip...


----------

