2009-09-10 10 views
13

Posso esprimere questo in un XSD?Schema XML (XSD) - se un elemento ha un valore specifico, deve essere presente un altro elemento e viceversa

Ad esempio: Un elemento è un elemento bool obbligatorio denominato EmployedMoreThanThirteenWeeks e se il valore è impostato su false, desidero che lo schema richieda l'esistenza di un altro elemento denominato EmploymentDate. E viceversa se il valore è vero, idealmente l'elemento EmploymentDate dovrebbe essere negato, ma posso accettare che sia facoltativo.

risposta

7

No. Un XSD definisce solo struttura e tipi di dati, non relazioni. È possibile aggiungere una chiave di riferimento tra gli elementi ma ciò non impedirà i nodi non validi, solo valori non validi.

È possibile creare un file XSLT (un foglio di stile XML) che convaliderà il file XML e genererà quindi un rapporto di errori.

+2

"No" è la risposta corretta a partire da Schema 1.0. Schematron o XML Schema 1.1 forniscono soluzioni http://www.xfront.com/ExtendingSchemas.html http://www.ibm.com/developerworks/library/x-xml11pt2/ –

0

Penso che XSD CANT lo faccia, perché gli schemi verificano solo una STRUTTURA (albero), e non VALORI (sebbene sia possibile controllare il formato del valore). Dovresti considerare altri modi di convalida.

Problemi correlati