XML-Schema - Kind-Elemente abhängig von der Existenz der optionalen Attribut
Ist es möglich, zu definieren in XSD das folgende Szenario:
-
Parent-element hat ein Attribut, das
ist optional.
-
Wenn das Attribut nicht
present in XML, at least one child element must exists.
-
Wenn die
attribute is present, there can be zero or more child elements.
Beispiel:
GÜLTIG
<parent externel-source="some_name" />
<parent externel-source="some_name">
<child>some value</child>
</parent>
<parent>
<child> some value</child>
</parent>
NICHT GÜLTIG
<parent />
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, ich glaube nicht.
Nein .. der Grund ist : In Ihrem Fall, die Sie versuchen zu überprüfen, die Anwesenheit von einem element - /tag-je nach Wert einige andere tag/Attribut .. (XSD ist im Grunde eine Reihe von Erklärung), die erfordert mehrfache Deklaration des gleichen Elements ..
Mehrfach-Deklaration des selben Elements ist nicht erlaubt in XSD .. 🙁
Check-out die ähnliches problem (hier klicken) geschrieben von einer stackOverFlow-Mitglied
Sorry zurückholen diese Nachricht, aber ich dachte, ich könnte hinzufügen, ein wenig auf das "warum" der Dinge. W3C XML Schema verlangt, dass alle seine Sequenzen werden vollständig deterministisch. Für die Leistung/der Einfachheit halber, es ist nicht entworfen, um zu schauen Voraus oder zurück schauen, nur auf das aktuelle element. Auch ich glaube, das ist geerbt von SGML.
Was Sie tun möchten, erfordert eine solche Funktionalität. Vielleicht möchten Sie sich bei Schematron; es unterstützt, was Sie wollen.
Ja, die meisten auf jeden Fall kann man mit xsi:type (das ist wahrscheinlich nicht das, was Sie wollen!).
ZB mit dem xsd-unten;
bekommen Sie eine Instanz, die entweder ein Attribut oder ein oder mehr Kinder, aber Sie haben xsi:type in der Instanz, die kann oder kann nicht ein show-stopper.