我有一组封装在complexType中的某些元素,如果用户想以某种方式开展业务,那么这些元素是必需的(让我们这样调用x):
<xs:element name="us">
<xs:complexType>
<xs:sequence>
<xs:element name="usAttribute1" type="xs:string"/>
<xs:element name="commonAttribute1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
和一组封装在不同complexType中的元素,如果用户想以不同的方式开展业务,则需要这些元素(让我们这样调用y):
<xs:element name="uk">
<xs:complexType>
<xs:sequence>
<xs:element name="ukAttribute1" type="xs:string"/>
<xs:element name="commonAttribute1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
两个集合之间存在元素重叠,因此某些元素对于两个集合都是通用的。假设用户希望以x和y方式做生意。我们如何组合这两组元素,以便没有任何元素重复?
答案 0 :(得分:1)
您不提供任何示例代码,因此很难说出您想要解决的问题以及解决方法,但听起来您可以尝试使用<xs:group>
元素。
形成一组包含元素要求的公共元素,然后在适当的时候从两个复杂类型中引用该组。
答案 1 :(得分:1)
你想要的基本上是&#34;多重继承&#34;在XML Schema中。
不可能直接(您只从一种类型派生),但有选项:
xs:group
,xs:attributeGroup
),您可以参考其中的几个(信用转到@jasso)。根据我的阅读in the specification,您应该能够将commonAttribute1
元素包含两次,只要包含内容大致相同。