• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

[XSD] complexType conditional

 
Brian Grey
Ranch Hand
Posts: 43
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
XML FILE:
<wap-provisioningdoc version="1.0">
<characteristic type="BOOTSTRAP">
<parm name="PROVURL" value="http://55555"/>
</characteristic>
<characteristic type="PXLOGICAL">
<parm name="PROXY-ID" value="PROXY1"/>
<parm name="NAME" value="Proxy 1"/>
<parm name="STARTPAGE" value="Homepage_URL"/>
<characteristic type="PORT">
<parm name="PORTNBR" value="8080"/>
</characteristic>
<characteristic type="PXPHYSICAL">
<parm name="PXADDR" value="131.111.3.4"/>
<parm name="PXADDRTYPE" value="IPV4"/>
<parm name="TO-NAPID" value="Browsing_GPRS"/>
</characteristic>
</characteristic>
.....


I'd like to use a XML schema file to perform validation tests. The XML to test is very particular. I will try to give you a clear explanation.

For instance an element characteristic that has an attribute type "PXLOGICAL" can occur 0 or more times. If it exists, the element parm with name "NAME" MUST exist, the others are optional.

How can do this? How can I create different "complexType" and used them depending of the characteristic type?

<xs:complexType name="characteristicType">
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="BOOTSTRAP"/> (occur 0 or more)
<xs:enumeration value="PXLOGICAL"/> (occur 0 or more) But if exits, should follow parmTypePXLOGICAL rules
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>


<xs:complexType name="parmTypePXLOGICAL">
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="PROXY-ID"/> (the paramater is required)
<xs:enumeration value="NAME"/> (the paramater is required)
<xs:enumeration value="STARTPAGE"/> (occur 0 or 1 time)
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic