Domande simili sono state poste diverse volte .. in StackOverflow o qualsiasi blog tecnologici ..
ma la risposta è sempre non è possibile,
casi come:
(un) Elemento di convalida in base al valore o alla presenza di qualsiasi altro elemento/attributo
(b) valore di convalida di un elemento in base al valore o alla presenza di qualsiasi altro elemento/attributo
(c) convalida attributo seconda del valore o la presenza di qualsiasi altro elemento/attributo
(d) definente elementi/attributi stesso nome aventi differenti tipi/DataTypes sotto stesso ambito
(e) convalida elementi figlio sulla base di valore o la presenza di eventuali altri elementi/attributi
tutti i casi di cui sopra non sono possibili per raggiungere ..
ma se è possibile implementare una cosa trasformazione .. allora si può ottenere aiuto. quello che intendo dire è "prima passare attraverso la trasformazione e modificare l'XML secondo il tuo fabbisogno,
esempio: se il particolare campo è previsto con un certo valore .. passa l'XML così com'è se la condizione è soddisfatta e non passare se non lo fa .. nel prossimo blocco XSD sta per convalidare e ovviamente errori out :) puoi capire che manca la tua convalida personalizzata ..
comunque l'intenzione è quella di blocco o Passa l'xml secondo i dati .. ed è quello che stai facendo ..
Nota: Schematron è diventato di recente una buona pratica! Ecco il tutorial: http://zvon.org/xxl/SchematronTutorial/General/contents.html
fonte
2010-11-10 05:43:40
Sono sicuro che la risposta non è a causa dell'ambiguità: lo schema per il contenitore di tali elementi avrebbe due definizioni diverse. L'unica soluzione è dichiarare facoltativo l'elemento "opzionale/obbligatorio" e utilizzare una convalida della seconda fase. –