PDA

View Full Version : [XSD] Consentire determinati attributi in base al valore di un altro attributo


SnakePlissken
28-12-2007, 21:50
Salve ragazzi! :)

Vengo subito al dunque:
come faccio a creare un elemento che ha un attributo (discriminante) che può assumere determinati valori (restriction/enumeration) e poi una serie di altri attributi in base al valore dell'attributo discriminante?

Chiarisco con un esempio:

<sketch fonte="film" title="The big Lebowski" director="Joel &amp; Ethan Cohen">
...
</sketch>

<sketch fonte="serial" serial="Scrubs" season="1" episode="9">
...
</sketch>


Definisco nello schema che fonte può assumere solo i valori film e serial.
In base al valore dell'attributo "fonte" devo consentire determinati altri attributi: ad esempio, se fonte="film" allora dovranno essere consentiti solo gli attributi title, director. Se invece fonte="serial" allora devono essere consentiti solo gli attributi serial, season, episode, ecc.


È da un po' che mi scervello, ma non sono riuscito a trovare una soluzione (ho smanettato con gli attributi fixed, con gli unique, ma niente...:mc: ), né ho trovato spunti di soluzione da libri letti (uno solo in realtà) o siti che ho visitato (diversi). :muro:

Eppure una soluzione dovrebbe esserci: infatti, nella definizione di un attributo (xs:attribute), l'attributo default non può essere usato se c'è l'attributo fixed, e se è vero che xsd può essere definito tramite xsd stesso, allora chiuque potrebbe fare una cosa simile in un suo schema. O mi sbaglio?

:help: