2009-09-10 14 views
13

¿Puedo expresar esto en un XSD?Esquema XML (XSD): si un elemento tiene un valor específico, debe estar presente otro elemento y viceversa

Por ejemplo: Un elemento es un elemento requerido bool llamado EmployedMoreThanThirteenWeeks y si el valor se establece en false Quiero el esquema de exigir la existencia de otro elemento llamado EmploymentDate. Y al revés si el valor es verdadero, idealmente se debería denegar el elemento EmploymentDate, pero puedo aceptarlo como opcional.

Respuesta

7

No. Un XSD solo define la estructura y los tipos de datos, no las relaciones. Es posible agregar una referencia de clave entre elementos, pero eso no evitará nodos inválidos, solo valores inválidos.

Puede crear un archivo XSLT (una hoja de estilos XML) que validará el archivo XML y generará un informe de errores.

+2

"No" es la respuesta correcta a partir de Schema 1.0. Schematron o XML Schema 1.1 proporcionan soluciones http://www.xfront.com/ExtendingSchemas.html http://www.ibm.com/developerworks/library/x-xml11pt2/ –

0

Creo que XSD CANT hace eso, porque los esquemas solo verifican una ESTRUCTURA (árbol), y no VALORES (aunque puede verificar el formato del valor). Debe considerar otras formas de validación.

Cuestiones relacionadas