我正在尝试创建一个概念上很简单的需求的XSD架构文档,但是我已经花了两天的时间研究并测试了解决方案,但是没有运气。请帮忙!
我试图要求每个“ item”元素以任意顺序包含许多必需的子元素,但同时也允许“ item”元素与任何其他任意子元素一起扩展。
从概念上讲,这就是我所需要的:
<xs:element name="item">
<xs:complexType>
<xs:all>
<xs:element name="title" type="xs:string"></xs:element>
<xs:element name="id" type="xs:int"></xs:element>
<xs:element name="description" type="xs:string"></xs:element>
<xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded">
</xs:all>
</xs:complexType>
</xs:element>
也就是说,以下两项均应有效:
<item>
<title>Some-title</title>
<id>1</id>
<description>Some-description</description>
</item>
<item>
<description>Some-description</description>
<id>1</id>
<title>Some-title</title>
<customProperty>I don't care about other elements</customProperty>
</item>
但这应该无效:
<item>
<title>Some invalid item with no id</title>
<description>Some-description</description>
<otherProperty>Other properties should simply be irrelevant - I only care that all required fields are provided</otherProperty>
</item>
请注意,实际上我实际上需要大约十二个特定的属性,而不仅仅是“ id”,“ title”和“ description”,但为简洁起见,在此省略了它们。原理是相同的-应该按要求将它们枚举,但可以任何顺序。
我不控制XML-目标是创建一个松散的XSD文档来验证来自客户的XML提交。
对我来说,这似乎是一个简单的用例,但是我的研究尚未使我找到解决方案。
使用XSD可以吗?任何帮助表示赞赏!