# Leere Elemente verhindern



## greeni (15. Sep 2010)

Hallo zusammen,

gibt es eine Möglichkeit Elemente in einem xsd Schema so zu definieren, daß sie nicht leer sein dürfen?

Also <myElement /> sollte verboten werden.
Es darf nur <myElement >beispieltext</myElement > erlaubt sein.


----------



## DerEisteeTrinker (15. Sep 2010)

sag dem typ, dass er eine minimale Länge von 1 aufweisen muss


----------



## greeni (15. Sep 2010)

Habs probiert... leider funktioniert das nicht. Damit sage ich zwar das, dass was in dem Element drin steht größer als ein Zeichen sein muss. Aber nicht das ich da unbedingt etwas reinschreiben muss.


----------



## Gast2 (15. Sep 2010)

greeni hat gesagt.:


> Damit sage ich zwar das, dass was in dem Element drin steht größer als ein Zeichen sein muss. Aber nicht das ich da unbedingt etwas reinschreiben muss.



Und der Unterschied zwischen den beiden Aussagen ist genau ...?

Eigentlich ist das der Weg dem man geht wenn man diese Einschränkung vornehmen will. Mindestens ein Zeichen sagt ja aus das das Element nicht leer sein darf.


----------



## greeni (15. Sep 2010)

Ihr habt da sicherlich recht!

Ich habe das Problem das ich EMF benutze um mein Datenmodel in eine xml Datei zu serialisieren. 
Um das Model zu erstellen, verwendet ich denn von EMF generierten Baumeditor. Dies funktioniert soweit auch... bis auf die Tatsache, das die Validierung nicht mekert wenn ich in dem Editor keinen Wert für die Elemente eintrage. 
Wenn ich in meiner Schemadatei bei den Elemeten maxlength > 1 angebe, so nimmt er sobald ich für das Element in dem Editor einen Wert eintragen will, auch nur Werte an die länger 1 sind. Das ist auch alles gut so... nun kann es aber sein, das ich vergesse einen Wert zu setzen... und das will ich eben verhindern.


----------



## Gast2 (15. Sep 2010)

greeni hat gesagt.:


> Wenn ich in meiner Schemadatei bei den Elemeten maxlength > 1 angebe, so nimmt er sobald ich für das Element in dem Editor einen Wert eintragen will, auch nur Werte an die länger 1 sind. Das ist auch alles gut so... nun kann es aber sein, das ich vergesse einen Wert zu setzen... und das will ich eben verhindern.



???

Ich versteh nicht was du willst. Nur nebenbei würde ich nicht maxLength > 1 setzen sondern minLength = 1, aber das ist ja nur ein Detail. Was du da schreibst ergibt für mich gar keinen Sinn. Der Editor lehnt also ab wenn du vergessen hast einen Wert einzutragen - das ist doch genau das was du willst, oder nicht?


----------



## greeni (15. Sep 2010)

Vieleicht habe ich mich wirklich nicht verständlich genug ausgedrückt...

Das Problem ist das es dem Editor egal ist, ob ich für das Element etwas eintrage oder nicht. Selbst wenn ich in der Schemadatei minLength = 1 für das Element setze.

Vieleicht zum besseren Veständnis noch ein kleines Beispiel. Ich habe auch Elemente in denen ich nur Zahlen von 1 bis 8 zulassen möchte. Das mache ich mit <xs:minInclusive value="1"/> und <xs:maxInclusive value="8"/>. 

Im Editor habe ich hier nun das gleiche Problem... wenn ich etwas eingebe, dann darf es nur eine Zahl zwischen 1 und 8 sein (was auch richtig ist!!). Aber wenn ich nichts eingebe, dann erlaubt er das auch. 

Und das will ich verbieten. Im Element möchte ich immer eine Zahl zwischen 1 und 8 haben und wenn ich vergesse diese einzutragen, so soll der Editor eine dementsprechende Validierungsfehlermeldung erzeugen.


----------



## Wildcard (15. Sep 2010)

Der generierte Editor validiert per Context Menü (validate) und beim Laden. Wenn du beim ändern Validieren möchtest, musst du den generierten Code entsprechend anpassen.


----------

