xml – XSD发生界限是否在序列或元素上?
发布时间:2020-12-16 07:52:48 所属栏目:百科 来源:网络整理
导读:如果我有一个元素与一个或多个子元素,min / maxoccurs属性应该在xsd:sequence元素,xsd:元素,两者或两者? xsd:element name="books" xsd:complexType xsd:sequence minOccurs="1" maxOccurs="unbounded" !-- here? -- xsd:element ref="book" minOccurs="1
如果我有一个元素与一个或多个子元素,min / maxoccurs属性应该在xsd:sequence元素,xsd:元素,两者或两者?
<xsd:element name="books"> <xsd:complexType> <xsd:sequence minOccurs="1" maxOccurs="unbounded"> <!-- here? --> <xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/> <!-- or here? --> </xsd:sequence> </xsd:complexType> </xsd:element>
在几乎所有的情况下,你想把元素的最小/最大值发生在序列中,而不是在序列上.使用你的例子:
<xsd:element name="books"> <xsd:complexType> <xsd:sequence> <xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> 这是明确的.如果您有一系列书籍元素,您可以指出正在生成它们的模式项目.然而: <xsd:element name="books"> <xsd:complexType> <xsd:sequence minOccurs="1" maxOccurs="unbounded"/> <xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> 在这里,如果你有两个“书”元素,你有两个序列在??一行,还是一个序列与两个书元素?这不符合Unique Particle Attribution要求. 最后,如果将序列中的最小/最大值发生了,然后再添加一个附加元素: <xsd:element name="books"> <xsd:complexType> <xsd:sequence minOccurs="1" maxOccurs="unbounded"/> <xsd:element ref="book"/> <xsd:element ref="ebook"/> </xsd:sequence> </xsd:complexType> </xsd:element> 那么这可能允许以下XML,这可能不是你打算的: <books> <book/><ebook/><book/><ebook/><book/><ebook/><book/><ebook/> </books> 而如果你有: <xsd:element name="books"> <xsd:complexType> <xsd:sequence/> <xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/> <xsd:element ref="ebook" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> 那么你打算什么是清楚和明确的:一个或多个书籍元素的序列后面是一个或多个电子书单元的序列. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |