Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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>
like image 537
Arran Avatar asked Jan 04 '23 08:01

Arran


1 Answers

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"/>
like image 126
kjhughes Avatar answered Mar 15 '23 00:03

kjhughes