2012-11-28 31 views
0

就我所见,以下XML应该通过对它下面的XSD的验证,因为所有“symbolName”值都是唯一的。然而,当我尝试验证它,我收到以下错误xs:唯一的是当它们是唯一的时候匹配多个值

字段标识约束“xxxxxxsdfsdfsdfsdf”的“符号名称”匹配元素的范围之内9次“符号”

<levelSymbolCollection> 
    <levelName>Simple</levelName> 
    <symbols> 
     <symbolName>Letter-A</symbolName> 
     <symbolName>Letter-B</symbolName> 
     <symbolName>Letter-C</symbolName> 
     <symbolName>Letter-D</symbolName> 
     <symbolName>Letter-E</symbolName> 
     <symbolName>Letter-F</symbolName> 
     <symbolName>Letter-I</symbolName> 
     <symbolName>Letter-O</symbolName> 
     <symbolName>Letter-U</symbolName> 
    </symbols> 
</levelSymbolCollection> 

<xs:element name="levelSymbolCollection" maxOccurs="unbounded"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="levelName" type="requiredString"/> 
      <xs:element name="symbols"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="symbolName" type="requiredString" maxOccurs="unbounded"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:unique name="xxxxxxxxsdfsdfsdfsdf"> 
     <xs:selector xpath="symbols"></xs:selector> 
     <xs:field xpath="symbolName"></xs:field> 
    </xs:unique> 
</xs:element> 

回答

1

将“symbolName”添加到选择器,设置字段xpath =“。”。

<xs:element name="levelSymbolCollection" maxOccurs="unbounded"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="levelName" type="requiredString"/> 
      <xs:element name="symbols"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="symbolName" type="requiredString" maxOccurs="unbounded"/> 
        </xs:sequence> 
       </xs:complexType> 
       <xs:unique name="xxxxxxxxsdfsdfsdfsdf"> 
        <xs:selector xpath="symbolName"></xs:selector> 
        <xs:field xpath="."></xs:field> 
       </xs:unique> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
0

你显然对xs:unique有一些误解。您的声明表示每个symbolName都必须具有唯一值,实际上,每个symbolName都具有唯一值。

+0

我想符号名称的每个值是唯一的,但错误信息告诉我,我有9个值相同 –

+0

你所说的正是我想要达到和我所理解的XS:唯一应该表现出来,问题是问题顶部的错误信息 - 验证告诉我他们不是唯一的 –

相关问题