I have a question of Style and Substance in XSD
I have a number of top-level elements that are variants of one another. Each of these appears in multiple Types (worthy of top-lelvelness).
Let’s say we have uid as a simple base type.
<xs:element name="uid" type="UidType"/>
<xs:simpleType name="UidType">
<xs:annotation>
<xs:documentation>Unique Identifier</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
A) One approach has me fully typing each derived element
<xs:element name="fooID" type="FooType"/>
<xs:simpleType name="FooType">
<xs:annotation>
<xs:documentation>Identification of foo. </xs:documentation>
</xs:annotation>
<xs:restriction base="UidType"/>
</xs:simpleType>
<xs:element name="feeID" type="FeeIDType"/>
<xs:simpleType name="FeeIDType">
<xs:annotation>
<xs:documentation>Identification of fee </xs:documentation>
</xs:annotation>
<xs:restriction base="UidType"/>
</xs:simpleType>
<xs:element name="fieID" type="FieIDType"/>
<xs:simpleType name="FieIDType">
<xs:annotation>
<xs:documentation>Identification of fie </xs:documentation>
</xs:annotation>
<xs:restriction base="UidType"/>
</xs:simpleType>
<xs:element name="fumID" type="FumIDType"/>
<xs:simpleType name="FumIDType">
<xs:annotation>
<xs:documentation>Identification of Fum </xs:documentation>
</xs:annotation>
<xs:restriction base="UidType"/>
</xs:simpleType>
B) The other approach has me simply declaring each element.
<xs:element name="fooID" type="UidType">
<xs:annotation>
<xs:documentation>Identification of foo. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="feeID" type="UidType">
<xs:annotation>
<xs:documentation>Identification of fee </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="fieID" type="UidType">
<xs:annotation>
<xs:documentation>Identification of fie </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="fumID" "UidType">
<xs:annotation>
<xs:documentation>Identification of Fum </xs:documentation>
</xs:annotation>
</xs:element>
Question: Why would I choose (A) or (B)?
SO far, I can find that in many code bases, in the first, I can’t say
this.FooID = that.FeeID
but must instead say something like
this.FooID = cast(that.FeeID ).to FooIDType
(varies on language, implementation, of course)
This may be god if a FooId should never be a FeeId but may be bad in other cicumstances.
Is this more than a style concern?Are there deeper concerns I am overlooking?
Thanks
tc
“The single biggest problem in communication is the illusion that it has taken place.”
– George Bernard Shaw.
Toby Considine
TC9, IncTC Chair: oBIX & WS-Calendar
TC Editor: EMIX, EnergyInterop
U.S. National Inst. of Standards and Tech. Smart Grid Architecture Committee
Email: Toby.Considine@gmail.com
Phone: (919)619-2104