Il CustomUBL permette di personalizzare documenti XML Schema UBL mediante l'aggiunta di vincoli semplici e co-constraint. I vincoli all'interno del CustomUBL vengono definiti utilizzando XML Schema 1.1. XML schema 1.1 è una estensione conservativa di XML Schema 1.0 che introduce nel linguaggio il supporto ai vincoli di tipo co-constraint.
Vincoli semplici: vincoli (non co-constraint) già definibili utilizzando XML Schema 1.0.
- variare o definire il numero minimo e massimo di occorrenze;
- definire il numero esatto di cifre;
- variare o definire il massimo numero di decimali dopo la virgola;
- definire un valore di default o un valore fisso obbligatorio;
- definire l’insieme dei valori ammessi;
- definire pattern ed espressioni regolari;
- variare o definire la lunghezza minima, massima o fissa;
- variare o definire il minimo e massimo valore incluso/escluso;
- fare in modo che un elemento/attributo che ammette contenuto nullo sia
obbligatoriamente nullo;
- fare in modo che un attributo opzionale sia obbligatorio.
Vincoli co-constraint: restrizioni "dipendenti dal contesto" o meglio vincoli incrociati sull’esistenza e sui valori assunti da elementi/attributi, in relazione alla presenza ed ai valori di altri elementi/attributi. Tali vincoli sono definibili utilizzando le estensioni introdotte da XML Schema 1.1.
- vincoli di mutua dipendenza: legano la presenza/assenza di un elemento attributo alla presenza/assenza di un altro elemento/attributo;
- restrizioni sull’open content: permettono di verificare la presenza/assenza di specifici elementi/attributi all’interno di un content model non precisamente definito;
- vincoli matematici e aritmetici: permettono di verificare che il valore di un elemento o di attributo soddisfi una condizione
matematica calcolata su altre parti del documento;
- contenuto dipendente dal contesto: legano il content model ammesso per un elemento/attributo alla posizione o alla presenza/assenza di elementi/attributi nel resto del documento;
- contenuto dipendente da vincoli sul valore: legano il content model ammesso per un elemento/attributo ai valori assunti da altri elementi/attributi.
|