Come verificare gli attributi XML utilizzando XSD enumerazione?
-
27-09-2019 - |
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)
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.