XSD - Child Element möglich, aber nicht zwingend erforderlich

markus

Mitglied
Hi,

ich möchte eine Validierung erstellen, die es möglich macht, in einer Node eine Subnode zu haben. Diese muss aber nicht vorhanden sein und darf auch von Text eingeschlossen sein.

Ein Konkretes Beispiel:
[xml]<description>Beschreibungstext</description>

<description>Beschreibungstext
<list>
<item>itemtext</item>
</list>
</description>

<description>
<list>
<item>itemtext</item>
</list>
</description>[/xml]

Das sollen alles valide Einträge sein.

Gefunden habe ich bis jetzt XML Schema Complex Types - Mixed Content

Hier ist beschrieben, wie ich eine Sequence erstelle, die von Text eingeschlossen sein kann, es aber nicht muss.
Wenn ich das ganze als Choice mache, funktioniert das ganze auch noch, aber sobald ich "minOccurance=0" mache, sagt er mir, dass "description" ein simple Type ist und keine Kindelemente enthalten darf.

Kennt jemand eine Möglichkeit, das gewollte Verhalten darzustellen?

Gruß
Markus
 

markus

Mitglied
Momentan ungefähr so:

[xml]<xsd:element name="description" type="ct_description" />

<xsd:complexType name="ct_description" mixed="true">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="list" type="ct_list" />
</xsd:choice>
</xsd:complexType>

<xsd:complexType name="ct_list">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="item" />
</xsd:sequence>
</xsd:complexType>[/xml]

In ct_description sollen später noch andere Elemente folgen.

Gruß
Markus
 

sylo

Bekanntes Mitglied
Hi

Versuch mal das:

[XML]<xsd:element name="description" type="ct_description" />

<xsd:complexType name="ct_description" mixed="true">
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="list"/>
</xsd:choice>
</xsd:complexType>

<xsd:complexType name="ct_list">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="item" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="list" type="ct_list"/>[/XML]

Ändert das was?

Grüße
sylo
 

markus

Mitglied
Nein, das ändert nichts. Er sagt dann immer noch, dass ich mindestens ein <list>-Element brauche. Wenn ich minOccurs auf 0 setze, habe ich wie gesagt das Problem, dass er sagt, dass description ein Simple-Type ist.
 

sylo

Bekanntes Mitglied
Hi

mir fällt gerade auf dass du in der xml keinen root Knoten hast. Oder hast du denn nur nicht angezeigt?

Also wenn du sowas in der xml machen würdest:
[XML]<descriptions>
<description>Beschreibungstext</description>

<description>Beschreibungstext
<list>
<item>itemtext</item>
</list>
</description>

<description>
<list>
<item>itemtext</item>
</list>
</description>
</descriptions>[/XML]

und dementsprechend in der xsd:
[XML]
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="ct_descriptions">
<xsd:sequence>
<xsd:element ref="description" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="descriptions" type="ct_descriptions"/>

<xsd:complexType name="ct_description" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="list"/>
</xsd:choice>
</xsd:complexType>
<xsd:element name="description" type="ct_description" />

<xsd:complexType name="ct_list">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="item" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="list" type="ct_list"/>
</xsd:schema>
[/XML]

Dann sollte es klappen.

Grüße
sylo

EDIT: Hab noch was geändert. Jetzt sollte es passen
 
Zuletzt bearbeitet:

markus

Mitglied
Hmmm,

ich weiß nicht, warum das funktioniert wenn ich das so mache, weil das ist ja eigentlich nicht groß anders, außer, dass in deiner Lösung halt mit ref gearbeitet wird.

Um das "warum" werde ich mich wohl noch mal kümmern müssen. Funktioniert jedenfalls. Vielen Dank.

Gruß
Markus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Parent- und Child-Elemente mit gleiche Namen, geht das ? XML & JSON 1
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
N jdom problem beim lesen von child elementen XML & JSON 5
8u3631984 jaxb XML Mapper - Root Element mit Attribut XML & JSON 20
B DOMParser - Element filtern XML & JSON 1
N jdom2 - Referenz auf Nested Element XML & JSON 2
H XML Element `Class` wird nicht gelesen XML & JSON 2
F xml Element ersetzen XML & JSON 5
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
W XML-Element komplett löschen XML & JSON 5
L XML nur ein Element einlesen XML & JSON 2
R XSD in einer choice mehrmals das selbe element möglich XML & JSON 5
S JDom XML ein Element hinzufügen. XML & JSON 1
ARadauer xsd ref auf element oder typen verwenden? XML & JSON 2
R cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'. XML & JSON 4
F EMF, XSD to ECore mapping, Attribute vs. Element XML & JSON 2
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
Landei JAXB: Wert von übergeordneten Element XML & JSON 4
N Alle namespaces ins Root Element hinauf ziehen XML & JSON 2
N Alle namespaces ins Root Element hinauf ziehen XML & JSON 2
S Validierung mit JAXB2 ohne root-element XML & JSON 10
E xml Element sortieren XML & JSON 2
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
Z XML parsen - Element mit Werten XML & JSON 2
enne87 Element-Werte werden falsch ausgelesen XML & JSON 2
N Individuelles Wrapper-Element um Collection mit JAXB XML & JSON 6
W Element mit XPath @id ermitteln wenn nur ein teil der id bekannt ist XML & JSON 2
R Element - Ausgeben von Kommentar XML & JSON 4
L Element manipulieren in einem DOMResult per XPath XML & JSON 10
G mit Transformer.transform ein Element überschreiben XML & JSON 2
G XSL: Element über eine Variable ermitteln XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
B XML-Element als String ausgeben XML & JSON 5
L Element einlesen <Telefon name="Karl">134313 XML & JSON 2
S Cannot find the declaration of element XML & JSON 2
M Jaxb Annotationen, Wert als XML Element XML & JSON 2
O XML Element mit ":" im Namen XML & JSON 23
G Element mit Text und Unterelement XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
M XML einlesen - prüfen ob Element vorhanden XML & JSON 2
F choice-Element mit minOccurs=0" XML & JSON 11
X Xpath, alle Element die mit "user" beginnen auswäh XML & JSON 2
C Mehrere Element_Nodes zusammenfassen zu einem Element XML & JSON 9
K Auf bestimmtes Element im XML zugreifen XML & JSON 3
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
H Adapter: String->Element bzw. Element->String XML & JSON 6
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
S String in element casten XML & JSON 2
S Element hinzufügen XML & JSON 2
B Element an bestimmter Stelle einfügen (JDOM) XML & JSON 8
S zum element Attribut xmlns zufügen XML & JSON 6
N bestimmtes Element auslesen - ich verzweifel XML & JSON 3
J [Newbie] [JDOM] Element aus XML entfernen klappt nicht XML & JSON 4
P [Solved] XSL: Element-Variable auslesen XML & JSON 2
Noar XSLT - Element-Wrapping XML & JSON 2
R JDOM Root-Element entfernen aber Rest behalten XML & JSON 10
S Element addContent(Element) gibts nicht XML & JSON 5
R node.getNodeValue() bringt mir komplettes CDATA-Element XML & JSON 3
W Element Liste in Root XML & JSON 5
D Text, String vor einem Root Element einfügen XML & JSON 2
W root element parsen,Hilfe! XML & JSON 5
E Element.setTextContent(String); Ersatz fuer Version 1.4? XML & JSON 3
A NullPointerException bei leerem Element XML & JSON 4
D XML: Element section content does not follow the DTD XML & JSON 6
clemson element mit id in jdom löschen XML & JSON 2
A Element an einer bestimmten Stelle einfügen (nicht am Ende) XML & JSON 4
R JDom: XML Code von Element, und: ist Element ein standalone XML & JSON 2
S XML Datei speichern nicht möglich XML & JSON 13
H XML via XSD Validierung nicht möglich? XML & JSON 2
J xml in xml möglich ??? XML & JSON 2
T SOAP mit Java ohne HTTP Server möglich? XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben