# XOM setzen von XML-Schema declaration beim erzeugen XML-File



## Estrados (27. Nov 2006)

Moin moin.

Ich arbeite hier an einem Programm was XML Nachrichten ausliest und erstellt.
Benutze dafür das XOM Packet. Das auslesen und validieren über ein Schema funktioniert auch ganz wunderbar.
Beim erstellen hab ich allerdings Probleme.

Und zwar muss das root-Element der XML-Datei so  etwas enthalten:

```
<dasrootelement xsi:noNamespaceSchemaLocation="schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
```

Und das bekomme ich nicht hin.
Ich hab mich jetzt schon durch das XOM Tutorial und einige IBM Tutorials zu XOM gekämpft, aber nirgends etwas hilfreiches gefunden. Auch google war mir dabei bisher nicht gnädig gestimmt... .
Es wird zwar darauf eingegangen wie man DTD's angibt, das bringt mich aber nicht weiter, da die XML-Files nunmal über ihre zugehörigen XML-Schemas validiert werden müssen.

Hoffe da hat hier jemand Erfahrung mit und kann mir weiterhelfen, oder mich wenigstens auf die richtige Fährte setzen.

MfG
Estrados


----------



## Estrados (27. Nov 2006)

Ok den Namespace bekomme ich hin mit:


```
dasrootelement.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
```

Wenn ich nun aber die Schema-Declaration als Attribut hinzufügen will:


```
Attribute schemaDecl = new Attribute("xsi:noNamespaceSchemaLocation", "schema.xsd");
    dasrootelement.addAttribute(schemaDecl);
```

Bekomme ich als Fehlermeldung:

nu.xom.NamespaceConflictException: Attribute prefixes must be declared.
	at nu.xom.Attribute._setNamespace(Attribute.java:516)
	at nu.xom.Attribute.<init>(Attribute.java:168)
	at nu.xom.Attribute.<init>(Attribute.java:70)


Und damit kann ich nun irgendwie nichts anfangen.

Ich mein ich habe doch das prefix im Attribut angegeben  ? (xsi:noNamespaceSchemaLocation)


Und Elliott Rusty Harold schreibt in seinem Tutorial unter www.cafeconleche.org
folgendes:



> Attaching a schema is no harder. Just place the necessary xmlns:xsi and xsi:noNamespaceSchemaLocation attributes on the root element.



Und genau das habe ich doch getan? Nur funktioniert das halt so noch nicht... .


MfG
Estrados


----------



## Estrados (30. Nov 2006)

Und die Antwort war, wie ich nun herausgefunden habe:


```
Attribute schemaDecl = new Attribute("xsi:noNamespaceSchemaLocation", "http://www.w3.org/2001/XMLSchema-instance", "schema.xsd");
rootElement.addAttribute(schemaDecl);
```


----------

