XSD是否为一个XML元素名称,但在同一父元素中具有不同的属性?
问题描述:
这里是XML:XSD是否为一个XML元素名称,但在同一父元素中具有不同的属性?
<lists>
<list refname="list_refname"/>
<list refname="list_refname_template_1" use_for="template_1"/>
<list refname="list_refname_template_2" use_for="template_2"/>
<list refname="list_refname_template_3" use_for="template_3"/>
</lists>
而且XSD:
<xsd:element name="lists">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="list" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:attribute name="refname" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="list" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="refname" type="xsd:string" use="required"/>
<xsd:attribute name="use_for" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
的理念是:只与属性refname
必须
- 列表元素只出现一次
- 列表元素属性
refname
和use_for might
出现任何 次或无
在XSD中可以吗?
如果是,如何重新编写我的非工作XSD?
答
XSD具有Element Declarations Consistent约束,要求内容模型中的相同命名元素具有一致的内容模型。 list
元素违反了此限制,因为lists
内容模型中有两个不同的内容模型。
分辨率可以采取下列形式之一:
- 重命名
list
元件中的一个。 - 删除两个不一致的
list
内容模型之间的兄弟关系。 - 使用
list
元素的最一般声明。如果使用XSD 1.0,则放弃对属性的附加约束;如果使用XSD 1.1,请使用xs:assert
指定属性的添加约束。
感谢您的帮助! –