Hallo,
Ich würde gerne eine etwas kompliziertere Definition mit XML Schema beschreiben:
Ich habe ein Element <Beschreibung>, das innerhalb eines Elements <Info> vorkommt. Nun soll es entweder einmal vorkommen oder mehrmal. Kommt es mehrmals vor, so muß es das Attribut xml:lang tragen. Kommt es einmal vor, darf es dieses Attribut nicht tragen.
<Info>
<Beschreibung/>
</Info>oder
<Info>
<Beschreibung xml:lang="de"/>
<Beschreibung xml:lang="en"/>
</Info>Angeblich soll man mit XML Schema doch alles definieren können, aber ich komm nicht darauf.
Angeblich.
Was du möchtest geht nicht, denn hier kommen dir gleich zwe Regel in die Quere.
Ersten die Regel der konsinstenten Deklaration (was die Auswahl zwischen Elementen gleichen Names aber verschiedenen Typs verbietet) und zweitens die UPA-Regel, was die eindeutige Partikelzuornung verlangt (d.h. keine mehrdeutige (nicht deterministische) Inhaltsmodelle)
Warum?
Du möchtest so etwas:
<xs:element name="Info">
xs:complexType
xs:choice
<xs:element name="Beschreibung" />
xs:sequence
<xs:element name="Beschreibung" maxOccurs="unbounded" />
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
(ich lasse hier das zweite Beschr.-Element unausformuliert)
Hier kann der Schema-Prozessor nicht wissen (ohne vorauszuschauen) in welchem Zweig er sich befindet, wenn er auf dem Element mit dem Namen "Beschreibung" trifft.
Damit verbunden ist auch gleich das Problem mit der ersten Regel: du willst zwei Beschreibung-Elemente mit verschiedenen Inhalstmodellen (was an sich noch nicht gänzlich unmöglich ist, da die Regel unter Umständen umgegangen werden kann (trotzdem bleibt in deinem Fall noch die UPA-Regel)).
Was ich dir vorschlagen kann ist, dass du das Attribut als required definierst und als default-Wert "de" einträgst.
Grüße
Thomas