Jump to content

Complex Type With Mutliple Definitions


JoshuaP

Recommended Posts

Hi,I want to define a type in my XSD that will validate both the XML examples below.

<!-- Example 1 --><my_root_node>	<street_type>STREET</street_type></my_root_node>

<!-- Example 2 --><my_root_node>	<street_type>		<street_type>STREET</street_type>		<street_type_alias>ST</street_type_alias>	</street_type></my_root_node>

However I do not want to define a mixed type as I don't want the following XML example to be valid.

<!-- XML --><my_root_node>	<street_type>STREET		<street_type>STREET</street_type>		<street_type_alias>ST</street_type_alias>	</street_type></my_root_node><!-- XSD -->  <xs:complexType name="TYPE_street_type_COMPLEX2" mixed="true">    <xs:complexContent mixed="true">      <xs:restriction base="xs:anyType">        <xs:sequence>          <xs:element minOccurs="0" name="street_type" type="xs:string" />          <xs:element minOccurs="0" name="street_type_alias" type="xs:string" />        </xs:sequence>      </xs:restriction>    </xs:complexContent>  </xs:complexType>

Also the above example fails when I put <xs:restriction base="xs:string"> which seems odd.ERRMSG: The <complexType> [TYPE_street_type_COMPLEX2], is of Type [http://www.w3.org/2001/XMLSchema:string].'>http://www.w3.org/2001/XMLSchema:string]. However [http://www.w3.org/2001/XMLSchema:string] is not defined as a root item (either a <complexType> or <simpleType>), within this schema or any included or imported schemas.I have tried a union, but this only worked with simple types.I have also thought of other ways to achieve the same thing, like with the example below, but wanted to avoid putting the street_type are an attribute.

<my_root_node>	<street_type type="STREET">		<street_type_alias>ST</street_type_alias>	</street_type></my_root_node>

Is there another way to have multiple definitions for one type? I have read some things on this site about substitutions but didn't really understand it. I basically want to join the two following type definitions together.

  <xs:simpleType name="TYPE_street_type_SIMPLE">    <xs:restriction base="xs:string" />  </xs:simpleType>    <xs:complexType name="TYPE_street_type_COMPLEX">    <xs:sequence>      <xs:element minOccurs="0" name="street_type" type="xs:string" />      <xs:element minOccurs="0" name="street_type_alias" type="xs:string" />    </xs:sequence>  </xs:complexType>

Can anyone help?Josh

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...