XSD: ¿cómo puedo asegurar la existencia de un elemento particular con un atributo dado?
-
08-07-2019 - |
Pregunta
Estoy intentando agregar una validación adicional al jdpl proceso -definición de archivos usando XSD.
Tenemos un par de reglas que queremos agregar; pero el que me está causando problemas es que debe existir un '' nodo '' elemento con su " nombre " atributo = " Problema " ;.
así que esto es válido:
<process-definition name='sample'>
<node name="Problem">
</node>
<node name="Do Work">
</node>
</process-definition>
y esto no es
<process-definition name='sample'>
<node name="Do Work">
</node>
</process-definition>
Entonces, para resumir, las reglas que necesito aplicar son
- atributo de nodo que tiene el valor " Problema "
- existencia de 1 nodo con nombre = " Problema "
- permitiendo cualquier número de nodos con otros nombres
¿Alguna idea por ahí?
Solución
Lo siento, eso no es posible con XSD.
Debido a razones de rendimiento, el esquema XML está diseñado para nunca mirar hacia adelante y nunca más allá del nodo actual. Eso significa que siempre debe definirse dónde está el validador en el árbol de esquema. Y eso hace que requisitos como este sean imposibles de definir con XSD.