verifica sirven que programas partir para los esquema ejemplos ejemplo diseño definido dato cómo cumple crear archivos xml validation schema xsd

xml - sirven - ¿Cómo se puede validar elementos basados ​​en un valor de atributo usando un esquema?



programas en xml (1)

No puedes hacer esto en XML Schema 1.0. En XML Schema 1.1, podrá usar el elemento <xs:assert> para hacerlo, pero supongo que quiere algo que pueda usar ahora.

Puede usar Schematron como una segunda capa de validación que le permitirá probar aserciones XPath arbitrarias sobre su documento XML. Hay un artículo bastante antiguo sobre la incrustación de Schematron en XSD que puede ser útil.

Harías algo como:

<rule context="element"> <report test="@attribute = ''foo'' and *[not(self::bar)]"> This element''s attribute is ''foo'' but it holds an element that isn''t a bar. </report> <report test="@attribute = ''hello'' and *[not(self::world)]"> This element''s attribute is ''hello'' but it holds an element that isn''t a world. </report> </rule>

O, por supuesto, puede cambiar a RELAX NG , que hace esto mientras duerme:

<element name="element"> <choice> <group> <attribute name="attribute"><value>foo</value></attribute> <element name="bar"><empty /></element> </group> <group> <attribute name="attribute"><value>hello</value></attribute> <element name="world"><empty /></element> </group> </choice> </element>

El XML que intento validar es el siguiente:

<root> <element attribute="foo"> <bar/> </element> <element attribute="hello"> <world/> </element> </root>

¿Cómo se puede validar esto usando un esquema?

Nota:

elemento solo puede contener barra cuando atributo = "foo" .

elemento solo puede contener mundo cuando atributo = "hola"