Pregunta

tengo la siguiente secuencia XML

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

Quiero límite "a" a una lista de valores, como [x, y, z] y "b" a otra lista como [xx, yy, zz]

¿Es posible hacer esto utilizando XSD, y si lo es, ¿cómo?

Si esto no es posible, ¿cómo se recomienda cambiar el formato XML con el fin de que quede listo para la validación XSD? (I tengo pares más de dos nombre property / valor)

¿Fue útil?

Solución

XSD logra lo que quiere (validación condicional) usando anidación.

Así, mientras que no se puede utilizar para hacer XSD los valores de un atributo condicional a los valores de otro (como Fyodor Soikin dice en su respuesta ), puede utilizar XSD para que los valores de un atributo condicional sobre el propio elemento:

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

En este caso, cada propiedad es su propio elemento, y cada atributo de "valor" tiene su propia enumeración.

Se le da la ventaja añadida de ser capaz de restringir el número de cada propiedad con nombre que puede tener, pero la desventaja es que necesita para gestionar más elementos.

Dependiendo de los detalles de su situación, utilizando XSD esta manera podría ser la mejor opción, o podría ser mejor implementar otro sistema que puede hacer el validación de nombre / valor que necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top