Domanda

Credo che questo abbia a che fare con keyref, ma io non sono di sicuro, e sono davvero non sono sicuro che possa essere fatto a tutti.

Ad esempio, dire che ho myElement1 e myElement2. Se non ci sono myElement2 nel file XML, quindi myElement1 deve esistere, altrimenti è facoltativa.

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

È stato utile?

Soluzione

Domande simili è stato chiesto più volte .. in StackOverflow o qualsiasi blog tecnologici ..

, ma la risposta è sempre non è possibile ,


casi come:

(a) convalida Elemento a seconda del valore o la presenza di qualsiasi altro elemento / attributo
valore (b) convalida di un elemento a seconda del valore o la presenza di qualsiasi altro elemento / attributo
(C) convalida attributo seconda del valore o la presenza di qualsiasi altro elemento / attributo
(D) definizione degli elementi / attributi con lo stesso nome con diversi tipi / DataTypes sotto stesso ambito
(E) la convalida di elementi figlio sulla base del 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 voglio dire è "prima passare attraverso la trasformazione e modificare l'XML secondo il vostro requisito,

esempio :: se il campo particolare è previsto con un certo valore .. passare l'XML come è se la condizione è soddisfatta e non passano se non lo fa .. nel blocco successivo XSD sta per errori di convalidare e ovviamente fuori :) si può capire che manca il vostro convalida personalizzata ..

in ogni caso l'intenzione è quella di blocco o Passo il codice XML in base ai dati .. e questo è ciò che si sta facendo ..

Nota: Schematron è stato entrare in buone pratiche di recente! Ecco il tutorial: http://zvon.org/xxl/SchematronTutorial/General/contents. html

Altri suggerimenti

Quello che vorrei suggerire è quello di creare XSD per ogni casi definiti di seguito:

Casi come:

  1. Convalida Elemento seconda del valore o la presenza di qualsiasi altro elemento / attributo.
  2. valore di un elemento a seconda del valore o la presenza di qualsiasi altro elemento / attributo Convalida.
  3. attributo Convalida seconda del valore o la presenza di qualsiasi altro elemento / attributo.
  4. Ignorando elementi (casuale) / attributi dalla convalida non è permesso. (Voglio dire è l'utilizzo di ha delle restrizioni.)
  5. elementi / attributi omonimo aventi differenti DataTypes.
  6. Convalida elementi figlio sulla base del valore o la presenza di eventuali altri elementi / attributi.

e creare lì proprio XML per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top