Re: restrictions of a complextype element

Hi David,

David Valera wrote:

> Hello,
>
> I am trying to restrict the value space of an element like this:
>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified">
>  <xsd:element name="Test">
>    <xsd:complexType>
>     <xsd:simpleContent>
>         <xsd:restriction base="xsd:string">
>           <xsd:enumeration value="hello world"></xsd:enumeration>
>           <xsd:enumeration value="this is me"></xsd:enumeration>
>         </xsd:restriction>
>     </xsd:simpleContent>
>     <xsd:attribute name="myAtt" type="xsd:string"></xsd:attribute>
>    </xsd:complexType>
>  </xsd:element>
> </xsd:schema>
>
> The important part here is that I want to restrict an element which also has
> attributes. Is this example correct?

Not really. To achieve what you try to do you first need to create a global
simpleType for your base type like this:

<xs:simpleType name="enumType">
   <xs:restriction base="xsd:string">
      <xs:enumeration value="hello world"/>
      <xs:enumeration value="this is me"/>
   </xs:restriction>
</xs:simpleType>

When you have done this you can extend your complexType based on this enumType
by adding an attribute:

<xsd:element name="Test">
   <xsd:complexType>
      <xsd:simpleContent>
         <xsd:extension base="enumType">
            <xsd:attribute name="myAtt" type="xsd:string"></xsd:attribute>
         </xsd:extension>
      </xsd:simpleContent>
   </xsd:complexType>
</xsd:element>

Cheers,
/Eddie

Received on Thursday, 21 June 2001 03:48:56 UTC