Jump to content

Multiple Elements In Any Order

Recommended Posts

Hi all;Let's see if I can get any responses to this one ...I have a schema for contact information,including alternate phone numbers (numbersother than a home phone number).I want the schema to reflect the fact that thenumbers (work and cell) can occur in any order,and in any number (including zero).Here is my test XML file:

<?xml version="1.0" encoding="UTF-8"?>  <all_names>    <fullpersoninfo>      <personinfo>        <firstname>Fred</firstname>        <middlename>Willis</middlename>        <lastname>Workman</lastname>      </personinfo>      <AddressRef>        <address>233 Pine Street</address>        <city>Austin</city>        <country>USA</country>        <home_phone>111</home_phone>      </AddressRef>        <alt_PhoneNumbers>          <cell>333</cell>          <work>222</work>        </alt_PhoneNumbers>    </fullpersoninfo>    <fullpersoninfo>      <personinfo>        <firstname>Fred</firstname>        <middlename>Willis</middlename>        <lastname>Walker</lastname>      </personinfo>      <AddressRef>        <address>233 Pine Street</address>        <city>Austin</city>        <country>USA</country>        <home_phone>4444</home_phone>      </AddressRef>        <alt_PhoneNumbers>          <cell>234</cell>        </alt_PhoneNumbers>    </fullpersoninfo>    <fullpersoninfo>      <personinfo>        <firstname>Joe</firstname>        <lastname>Smith</lastname>      </personinfo>      <AddressRef>        <address>1243 Long Road</address>        <city>Houston</city>        <country>USA</country>      </AddressRef>        <alt_PhoneNumbers>          <work>2222</work>          <cell>234</cell>          <cell>234</cell>        </alt_PhoneNumbers>    </fullpersoninfo>    <fullpersoninfo>      <personinfo>        <firstname>Janet</firstname>        <lastname>Burns</lastname>      </personinfo>      <AddressRef>        <address>1243 Short Road</address>        <city>Conroe</city>        <country>USA</country>      </AddressRef>    </fullpersoninfo>  </all_names>

This is my schema:

<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:complexType name="personinfo_type">  <xs:sequence>	<xs:element name="firstname" type="xs:string"/>	<xs:element name="middlename" type="xs:string"  minOccurs="0"/>	<xs:element name="lastname" type="xs:string"/>  </xs:sequence></xs:complexType><xs:complexType name="AddressRef_type">  <xs:sequence>		<xs:element name="address" type="xs:string"/>		<xs:element name="city" type="xs:string"/>		<xs:element name="country" type="xs:string"/>		<xs:element name="home_phone" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>  </xs:sequence></xs:complexType><xs:complexType name="PhoneNumbers_type">	  <xs:all>		<xs:element name="work" type="xs:string" minOccurs="0" maxOccurs="1" />		<xs:element name="cell" type="xs:string" minOccurs="0" maxOccurs="1" />	  </xs:all></xs:complexType>	<xs:complexType  name="fullpersoninfo_type" >	  <xs:sequence>		<xs:element name="personinfo"  type="personinfo_type"/>		<xs:element name="AddressRef"  type="AddressRef_type" minOccurs="0" maxOccurs="unbounded"/>		<xs:element name="alt_PhoneNumbers"  type="PhoneNumbers_type" minOccurs="0"  maxOccurs="unbounded"/>	  </xs:sequence>	</xs:complexType><xs:element name="all_names"><xs:complexType>  <xs:sequence>	<xs:element name="fullpersoninfo" type="fullpersoninfo_type"  maxOccurs="unbounded" >	</xs:element>  </xs:sequence></xs:complexType></xs:element></xs:schema>

It fails to validate for Joe Smith.Does anyone have any ideas as to what I should try?Thanks!!!

Link to post
Share on other sites

Before anyone suggests it, getting rid of "maxOccurs" will not solve the problem:

<xs:complexType name="PhoneNumbers_type">	  <xs:all>		<xs:element name="work" type="xs:string" minOccurs="0" />		<xs:element name="cell" type="xs:string" minOccurs="0" />	  </xs:all></xs:complexType>


Link to post
Share on other sites
  • 1 year later...

I certainly hope you have found the answer to this someplace else considering the age of this post... The work around I have been using for this sort of issue is this:

<xs:complexType name="PhoneNumbers_type">  <xs:choice minOccurs="0" maxOccurs="2">    <xs:element name="work" type="xs:string" />    <xs:element name="cell" type="xs:string" />  </xs:choice></xs:complexType>

Edited by evanc
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...