2012-11-28 30 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:唯一應該表現出來,問題是問題頂部的錯誤信息 - 驗證告訴我他們不是唯一的 –

相關問題