I have input XML Document: <?xml version="1.0"?> <ediroot> <interchange Standard="EDIFACT" Date="080403" Time="1422"> <sender> <address Id="5400102000086" Qual="14"/> </sender> <receiver> <address Id="5425007009989" Qual="14"/> </receiver> <group> <transaction Control="1" DocType="ORDERS" Version="D" Release="96A" Agency="UN" Association="EAN008" Name="Purchase Order Message"> <segment Id="DTM"> <element Id="DTM01" Composite="yes"> <subelement Sequence="1">2</subelement> <subelement Sequence="2">200804080700</ subelement> <subelement Sequence="3">203</subelement> </element> </segment> <segment Id="DTM"> <element Id="DTM01" Composite="yes"> <subelement Sequence="1">137</subelement> <subelement Sequence="2">200804031422</ subelement> <subelement Sequence="3">203</subelement> </element> </segment> <loop Id="SG02"> <segment Id="NAD"> <element Id="NAD01">BCO</element> <element Id="NAD02" Composite="yes"> <subelement Sequence="1">5400102000086</ subelement> <subelement Sequence="3">9</subelement> </element> </segment> </loop> </transaction> </group> </interchange> </ediroot> This Xsd that used to validate xml Document <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="ediroot"> <xs:complexType> <xs:sequence> <xs:element ref="interchange"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="interchange"> <xs:complexType> <xs:sequence> <xs:element ref="sender"/> <xs:element ref="receiver"/> <xs:element ref="group"/> </xs:sequence> <xs:attribute name="Date" use="required" type="xs:integer"/> <xs:attribute name="Standard" use="required" type="xs:NCName"/> <xs:attribute name="Time" use="required" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="sender" type="address"/> <xs:element name="receiver" type="address"/> <xs:element name="group"> <xs:complexType> <xs:sequence> <xs:element ref="transaction"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="transaction"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" ref="segment"/> <xs:element ref="loop"/> </xs:sequence> <xs:attribute name="Agency" use="required" type="xs:NCName"/> <xs:attribute name="Association" use="required" type="xs:NCName"/ > <xs:attribute name="Control" use="required" type="xs:integer"/> <xs:attribute name="DocType" use="required" type="xs:NCName"/> <xs:attribute name="Name" use="required"/> <xs:attribute name="Release" use="required" type="xs:NMTOKEN"/> <xs:attribute name="Version" use="required" type="xs:NCName"/> </xs:complexType> </xs:element> <xs:element name="loop"> <xs:complexType> <xs:sequence> <xs:element ref="segment"/> </xs:sequence> <xs:attribute name="Id" use="required" type="xs:NCName"/> </xs:complexType> </xs:element> <xs:complexType name="address"> <xs:sequence> <xs:element ref="address"/> </xs:sequence> </xs:complexType> <xs:element name="address"> <xs:complexType> <xs:attribute name="Id" use="required" type="xs:integer"/> <xs:attribute name="Qual" use="required" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="segment"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" ref="element"/> </xs:sequence> <xs:attribute name="Id" use="required" type="xs:NCName"/> </xs:complexType> </xs:element> <xs:element name="element"> <xs:complexType mixed="true"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" ref="subelement"/> </xs:sequence> <xs:attribute name="Composite" type="xs:NCName"/> <xs:attribute name="Id" use="required" type="xs:NCName"/> </xs:complexType> </xs:element> <xs:element name="subelement"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="Sequence" use="required" type="xs:integer"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:schema> I need to validate segment Id="DTM" where (Sequence="1")= 137 Or 138
heshamelesawy@gmail.com wrote: > I need to validate segment Id="DTM" where (Sequence="1")= 137 Or 138 I don't understand what you want to achieve. Do you want to know whether the schema can be changed to specify the constraint you are trying to formulate above? -- Martin Honnen --- MVP XML http://JavaScript.FAQTs.com/
On Jun 11, 2:56 pm, Martin Honnen wrote: > I don't understand what you want to achieve. Do you want to know whether > the schema can be changed to specify the constraint you are trying to > formulate above? > i need to change the schema to validate the <subelement Sequence="1">137</subelement> where the valid values are 137 Or 138
heshamelesawy@gmail.com wrote: > i need to change the schema > to validate the <subelement Sequence="1">137</subelement> > where the valid values are 137 Or 138 You can restrict subelement to contain only the values 137 or 138 but not depending on the Sequence attribute value. Such constraints where an element values depends on an attribute value are not possible in the W3C XML schema language. -- Martin Honnen --- MVP XML http://JavaScript.FAQTs.com/