Now I have an XSD file (e.g. FOO_SCHEMA.xsd) that looks something like this:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="FOO">
<xs:annotation>
<xs:documentation>Comment</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="BAR1" type="xs:string" />
<xs:element name="BAR2" type="xs:string" />
<xs:element name="BAR3" type="xs:string" />
<xs:element name="BAR4" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
I want to modify two of the elements (say BAR1 and BAR2) to use a single time. I know how to use it for one of them,
<xs:element name="BAR1">
<xs:simpleType>
<!-- my type definition here -->
</xs:simpleType>
</xs:element>
But I want to use it in two (and maybe more) elements, and I am not sure how I can do this without copying the same simple type definition everywhere. From googling, it seems that I need to declare the type with a name
But I don't know where to put this declaration. I try to put it in the same level in as xs:complexType and several other level, but it was rejected by the schema validator. Any idea where to put this declaration? Any idea?
All referenceable components in an XSD file must be placed directly under the
xs:schema
element. In other words, your global simple type declarations must be siblings of theFOO
element.