preguntas similares se han preguntado varias veces .. en stackoverflow o cualquier blogs de tecnología ..
pero la respuesta es siempre no es posible,
casos como:
(una) Elemento de validación según el valor o la presencia de cualquier otro elemento/atributo
(b) Validación del valor de un elemento según el valor o presencia de cualquier otro elemento/atributo
(c) la validación de atributo en función del valor o la presencia de cualquier otro elemento/atributo
(d) que define elementos/atributos del mismo nombre que tiene diferentes tipos/DataTypes bajo mismo alcance
(e) validación de elementos secundarios sobre la base del valor o la presencia de cualesquiera otros elementos/atributos
todos los casos mencionados anteriormente no son posibles de alcanzar ..
pero si se puede poner en práctica algo transformación .. entonces se puede obtener ayuda. Lo que quiero decir es "primero pasar por transformación y modificar el XML según su requisito,
ejemplo :: si el campo particular se espera con algún valor ... pase el XML como está si se cumple la condición y no pase si no lo hace .. en el siguiente bloque XSD va a validar y obviamente se equivoca :) puede descubrir que le falta su validación personalizada ...
de todos modos la intención es bloque o pase el xml según los datos ... y eso es lo que está haciendo ...
Nota: ¡Schematron ha sido una buena práctica recientemente! Aquí está el tutorial: http://zvon.org/xxl/SchematronTutorial/General/contents.html
Estoy bastante seguro de que la respuesta no es debido a la ambigüedad: el esquema para el contenedor de dichos elementos tendría dos definiciones diferentes. La única solución es declarar el elemento "opcional/requerido" como opcional y usar una segunda fase de validación. –