Arran
Arran

Reputation: 157

How can I reuse a complex type in XSD for multiple elements?

I have been entirely unable to find any information on this, possibly due to me not having the terminology down. What I want to do is create a template element for currency, which I already have, and use it in two places under two different names (ie. currentBalance and maxBalance).

My current format of this template is:

<xsd:element name="currency">
    <xsd:complexType>
        <xsd:simpleContent>
            <xsd:extension base="xsd:double">
                <xsd:attribute ref="currencyCode" />
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
</xsd:element>

Upvotes: 5

Views: 3747

Answers (1)

kjhughes
kjhughes

Reputation: 111541

Simply globally define and name the complex type you wish to use,

  <xsd:complexType name="currency">
    <xsd:simpleContent>
      <xsd:extension base="xsd:double">
        <xsd:attribute ref="currencyCode" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

then reference it where needed:

  <xsd:element name="currentBalance" type="currency"/>
  <xsd:element name="maxBalance" type="currency"/>

Upvotes: 11

Related Questions