Frage

Ich habe die folgende XML-Sequenz

<property name="a"  value="x" />
<property name="b"  value="xx" />

Ich mag Limit "a" auf eine Liste von Werten, wie [x, y, z] und "b" in einer anderen Liste wie [xx, yy, zz]

Ist es möglich, dies mit XSD zu tun, und wenn es wie?

Wenn dies nicht möglich ist, wie würden Sie empfehlen das XML-Format zu ändern, um es für XSD Validierung bereit zu machen? (Ich habe mehr als zwei property Name / Wert-Paare)

War es hilfreich?

Lösung

XSD erreicht, was Sie wollen (bedingte Validierung) Verschachtelung verwendet wird.

So, während Sie können nicht XSD verwenden, um die Werte eines Attributs abhängig, dass die Werte eines anderen (wie Fyodor Soikin sagt in seiner Antwort ), können Sie XSD verwenden, um die Werte eines Attributs abhängig das Element selbst zu machen:

<propertyNameA value="x"/>
<propertyNameB value="xx"/>

In diesem Fall jede Eigenschaft ist sein eigenes Element, und jedes „value“ Attribut hat seine eigene Aufzählung.

Es gibt Ihnen den zusätzlichen Vorteil, in der Lage, zu beschränken, wie viele von jedem benannten Eigenschaft können Sie haben, aber der Nachteil ist, dass Sie mehr Elemente verwalten müssen.

auf die Besonderheiten Ihrer Situation an, mit XSD auf diese Weise könnte die beste Option sein, oder es könnte besser sein, ein anderes System zu implementieren, das den Namen / Wert-Validierung tun können, die Sie benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top