Limitazione di elementi XML basati su un altro elemento tramite XSD

Credo che questo abbia a che fare con keyref ma non sono sicuro, e non sono affatto sicuro che possa essere fatto.

Ad esempio, supponiamo che abbia myElement1 e myElement2. Se non ci sono myElement2 nel file XML, allora myElement1 deve esistere, altrimenti è opzionale.

C’è un modo per forzare questo tipo di convalida nel mio file XSD?

Domande simili sono state poste più volte .. in StackOverflow o in qualsiasi blog tecnologico ..

ma la risposta è sempre imansible ,

casi come:

(a) Elemento di convalida in base al valore o alla presenza di qualsiasi altro elemento / attributo
(b) validazione del valore di un elemento in base al valore o alla presenza di qualsiasi altro elemento / attributo
(c) attributo di convalida in base al valore o alla presenza di qualsiasi altro elemento / attributo
(d) definizione di elementi / attributi dello stesso nome con tipi / tipi di dati diversi nell’ambito dello stesso ambito
(e) convalidare elementi figli sulla base del valore o della presenza di altri Elementi / Attributi

tutti i casi sopra citati non sono possibili per raggiungere ..

ma se puoi implementare qualche cosa di trasformazione .. allora puoi ottenere aiuto. quello che intendo dire è “prima passare attraverso la trasformazione e modificare l’XML secondo le tue esigenze,

esempio: se il particolare campo è previsto con qualche valore .. passa l’XML così com’è se la condizione è soddisfatta e non passa se non lo fa .. nel prossimo blocco XSD sta per convalidare e ovviamente errori fuori 🙂 puoi capire che manca la tua convalida personalizzata ..

comunque l’intenzione è di bloccare o passare l’xml in base ai 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

Quello che vorrei suggerire è creare XSD per ogni caso definito di seguito:

Casi come:

  1. Convalida elemento in base al valore o alla presenza di qualsiasi altro elemento / attributo.
  2. Validazione del valore di un elemento in base al valore o alla presenza di qualsiasi altro elemento / attributo.
  3. Convalida dell’attributo in base al valore o alla presenza di qualsiasi altro elemento / attributo.
  4. Ignorare elementi (casuali) / attributi dalla convalida non è permesso. (Voglio dire, l’uso di ha delle restrizioni.)
  5. Elementi / attributi con lo stesso nome con diversi tipi di dati.
  6. Convalidare elementi figlio sulla base del valore o presenza di altri Elementi / Attributi.

E creare lì proprio XML per questo.