0
我有以下XSD已經有一個獨特的項目,但我試圖添加另一個沒有成功。有xsd問題:唯一
我想在整個文檔結構中使WikiArticle - Filename唯一,但儘管存在幾種不同的變體,我無法使其失敗。
任何想法?
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AllMeta">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="WikiMeta">
<xs:complexType>
<xs:sequence>
<xs:element name="Subject" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="PageTitle" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="PageMetaDescription" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="Articles">
<xs:complexType>
<xs:sequence>
<xs:element name="WikiArticle" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="FileName" type="xs:string" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Groups">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="WikiGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueSubject">
<xs:selector xpath="WikiMeta"/>
<xs:field xpath="Subject"/>
</xs:unique>
</xs:element>
</xs:schema>
感謝Petru的建議 - 這是完美的。是的,我將爲WikiGroup添加一個約束,但因爲它只需要受到約束,所以該組只能在每個WikiMeta中存在一次,但在文檔中多次存在。與其他例子有所不同,它需要更多的研究/問題提問。你能給我一個關於這可能如何工作的想法嗎? – dotnetnoob
@dotnetnoob,約束僅限於包含元素。對於你的羣組問題,只需在WikiMeta元素下創建你的約束,而不是AllMeta。 –