是否可以将 xs:union 用于复杂类型?
<xs:element name="Kunde" type="tKunde"/>
<xs:complexType name="tKunde">
<xs:union memberTypes="tPerson tStudent"></xs:union>
</xs:complexType>
<xs:complexType name="tPerson">
<xs:sequence>
<xs:element name="Vorname" type="xs:string"/>
<xs:element name="Nachname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tStudent">
<xs:complexContent>
<xs:extension base="tPerson">
<xs:sequence>
<xs:element name="Matrikelnummer" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
这就是它应该看起来的样子。任务是从 Person 派生出 Student,然后可以使用元素 Kunde 的两种类型之一。
这似乎是无效的。
<xs:element name="Kunde" type="tKunde"/>
<xs:complexType name="tKunde">
<xs:union memberTypes="tPerson tStudent"></xs:union>
</xs:complexType>
<xs:complexType name="tPerson">
<xs:sequence>
<xs:element name="Vorname" type="xs:string"/>
<xs:element name="Nachname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tStudent">
<xs:complexContent>
<xs:extension base="tPerson">
<xs:sequence>
<xs:element name="Matrikelnummer" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Thats what it should look like. The task is to derive a Student from Person and then make it possible to use one of the two types for the element Kunde.
This seems to be invalid.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不能为此使用 xs:union。您可以使用 xs:choice,或者将元素放入替换组中,以便它们中的任何一个都可以出现在替换组开头的元素的位置。
You can't use xs:union for this. You can either use xs:choice, or put the elements in a substitution group so any of them can appear in place of the element at the head of the substitution group.