通过 XSD 允许在无限选择内使用不同的 maxOccurs
XML:
<?xml version="1.0" encoding="UTF-8"?>
<Credits>
<Director>Movie</Director>
<Director>Movie</Director>
<Director>Movie</Director>
<Producer />
<Producer />
<Actor>Jules Verne</Actor>
<Producer />
<Actor>Jules Verne</Actor>
<Actor>Jules Verne</Actor>
</Credits>
XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Credits">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Director" type="xs:string" />
<xs:element name="Producer" type="xs:string" />
<xs:element name="Actor" type="xs:string" />
<xs:element name="Writer" type="xs:string" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
如何定义 XSD 以将 Actor 的 maxOccurs 限制为 1,将 Writer 的 maxOccurs 限制为 5,其余的限制为无界?元素的顺序可能会有所不同。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<Credits>
<Director>Movie</Director>
<Director>Movie</Director>
<Director>Movie</Director>
<Producer />
<Producer />
<Actor>Jules Verne</Actor>
<Producer />
<Actor>Jules Verne</Actor>
<Actor>Jules Verne</Actor>
</Credits>
XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Credits">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Director" type="xs:string" />
<xs:element name="Producer" type="xs:string" />
<xs:element name="Actor" type="xs:string" />
<xs:element name="Writer" type="xs:string" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
How can I define XSD to restrict Actor to maxOccurs 1 and Writer to maxOccurs as 5 and rest as unbounded? Order of elements can vary.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 XSD 1.0 中,出于实际目的这是不可能的(原则上可以通过定义所有可能的组合来完成,但这太复杂了)。
在 XSD 1.1 中,您可以在每个粒子上使用带有 maxOccurs 值的
xsd:any
。问题:你为什么要这样做?为什么要禁止编剧超过 5 人的电影?电影不能有六个编剧,这是物理的基本定律吗?
In XSD 1.0, it's for practical purposes impossible (it can be done in principle by defining all possible combinations, but that's absurdly complex).
In XSD 1.1 you can use
xsd:any
with maxOccurs values on each of the particles.Question: why do you want to do this? Why would you want to disallow movies with more than 5 writers? Is it some fundamental law of physics that movies can't have six writers?