0

私が見る限り、次の XML はその下にある XSD に対する検証に合格するはずです。これは、すべての「symbolName」値が一意であるためです。ただし、検証しようとすると、次のエラーが表示されます

ID 制約 'xxxxxxsdfsdfsdfsdf' のフィールド 'symbolName' は、要素 'symbols' の範囲内で 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>
4

2 に答える 2

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>
于 2012-11-29T17:12:26.610 に答える
0

xs:unique の意味を明らかに誤解しています。あなたの宣言は、すべての symbolName に一意の値が必要であり、実際、すべての symbolName に一意の値があることを示しています。

于 2012-11-28T16:15:22.397 に答える