XML validation using xsd based on conditions in the XMl fields -


i have xml

<order> <details type = "edit" header = "ok" value ="1"> <details type = "edit" header = "nok" value ="1"> <details type = "edit" header = "reject" value ="1"> <details type = "edit" header = "accept" value ="1"> </order> 

is possible conditional validation using xsd ?. example.

*if  header = "ok"  , value= "1"    header = "nok" , value= "0"   xml valid *if  header = "ok"  , value= "1"    header = "nok" , value= "1"   xml valid *if  header = "ok"  , value= "0"    header = "nok" , value= "1"   xml valid 

if header = "ok" , value= "0"
header = "nok" , value= "0" then xml invalid

is kind of validation possible using xml schema ?

you can use xs:assert node in complextype can xpath 2.0 query inside xsd file. works xsd 1.1

example first test :

   <xs:element name="order">     <xs:complextype>       <xs:sequence>         <xs:element ref="details" minoccurs="1" maxoccurs="unbounded"/>       </xs:sequence>     </xs:complextype>   </xs:element>   <xs:element name="details">     <xs:complextype>       <xs:attribute name="type" type="xs:string" use="required"/>       <xs:attribute name="header" type="xs:string" use="required"/>       <xs:attribute name="value" type="xs:integer" use="required"/>       <xs:assert test="((@header = 'ok') , (@value = 1)) , (./following-sibling::details/@header = 'nok' , ./following-sibling::details/@value eq 0 )/>       <xs:assert test="...."/>       <xs:assert test="..."/>     </xs:complextype>   </xs:element> 

i'm not sure following-sibling though


Comments