是否可以从我的 XML 模式中删除这种冗余?
我有以下问题:
我有两个复杂类型,foo
和 bar
以及成员 foobar
:
<xs:complexType name="foo">
<xs:sequence>
<xs:element name="foobar" type="xs:string" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="bar">
<xs:sequence>
<xs:element name="foobar" type="xs:string" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
为了减少冗余,我想声明一个foobar 作为复杂类型,在 foo
和 bar
中都被引用,如下所示:
<xs:complexType name="foobar">
<xs:sequence>
<xs:element type="xs:string />
</xs:sequence>
</xs:complexType>
但这似乎不是正确的方式。这在 XML 模式中实际上可能吗?
I have the following problem:
I have two complexTypes, foo
and bar
with both the member foobar
:
<xs:complexType name="foo">
<xs:sequence>
<xs:element name="foobar" type="xs:string" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="bar">
<xs:sequence>
<xs:element name="foobar" type="xs:string" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
To reduce redundancy, I want to declare a foobar as a complexType, which gets referenced in both foo
and bar
, something like this:
<xs:complexType name="foobar">
<xs:sequence>
<xs:element type="xs:string />
</xs:sequence>
</xs:complexType>
But this doesn't seem to be the right way. Is this actually possible in XML Schema?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为此,您最好使用
xs:group
元素,而不是复杂类型:您无法将序列直接表示为
xs:complexType
的一部分。You are probably better off using an
xs:group
element for that rather than a complex type:You can't express the sequence directly as part of an
xs:complexType
.我还没有检查以下内容的正确性,但我相信你可以这样做:
然后“扩展”这个抽象类型:
I have yet to check the following for correctness, but I believe you can do it like this:
And then "extend" this abstract type: