Domanda

Ho la seguente sequenza di XML

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

Voglio limite "a" a un elenco di valori, come [x, y, z] e "b" ad un'altra lista come [xx, yy, zz]

E 'possibile farlo utilizzando XSD, e se è come?

Se questo non è possibile, come mi consiglia di cambiare il formato XML al fine di renderlo pronto per la convalida XSD? (Io ho coppie più di due nome property / valore)

È stato utile?

Soluzione

XSD compie ciò che si vuole (convalida condizionale) utilizzando la nidificazione.

Così, mentre non è possibile utilizzare XSD per rendere i valori di una condizione attributi sui valori di un altro (come Fyodor Soikin dice nella sua risposta ), è possibile utilizzare XSD per rendere i valori di un attributo condizionale sull'elemento stesso:

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

In questo caso, ogni struttura è proprio elemento, e ogni attributo "value" ha il suo censimento.

Ti dà il vantaggio di essere in grado di limitare il numero di ogni proprietà chiamata si può avere, ma lo svantaggio è che è necessario per gestire più elementi.

A seconda delle specifiche della vostra situazione, utilizzando XSD in questo modo potrebbe essere l'opzione migliore, oppure potrebbe essere migliore di implementare un altro sistema che può fare la convalida nome / valore è necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top