2017-07-12 5 views
0

このXSDスキーマ、以下のグラフが得られるXSDスキーマユニーク制約は数値に対して機能しませんか? INT:

<?xml version="1.0" encoding="UTF-8"?> 
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" 
    xmlns:target="http://www.url.com/validation" 
    xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" 
    elementFormDefault="qualified" attributeFormDefault="unqualified"> 

    <s:element name="myObjects" type="typeObjects"> 
     <s:unique name="uniqueObjectId"> 
      <s:selector xpath="myObject"/> 
      <s:field xpath="id"/> 
     </s:unique> 
    </s:element> 
    <s:complexType name="typeObjects"> 
     <s:sequence maxOccurs="unbounded"> 
      <s:element name="myObject"> 
       <s:complexType> 
        <s:complexContent> 
         <s:extension base="typeObject"/> 
        </s:complexContent> 
       </s:complexType> 
      </s:element> 
     </s:sequence> 
    </s:complexType> 
    <s:complexType name="typeObject"> 
     <s:sequence> 
      <s:element name="id" type="s:int"/> 
     </s:sequence> 
    </s:complexType> 
</s:schema> 

still passes validation

注sと入力した "ID" 要素に設定された固有の制約を考慮してください。

次のインスタンスXMLは、同じ<id>1</id>を2回使用しても検証されます。これは、もはやインスタンスのXMLを検証しませれる文字列

予想通り、::私はsの要素の型を変更した場合

<?xml version="1.0" encoding="utf-8"?> 
<myObjects 
    xmlns:target="http://www.url.ch/validation" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="unique.xsd"> 

    <myObject> 
     <id>1</id> 
    </myObject> 

    <myObject> 
     <id>1</id> 
    </myObject> 
</myObjects> 

私は失敗条件を強制することができ fails validation as expected

Iを同じ結果でoXygen XMLとALtova XML Spyで検証を試みました。

これはバグかXSDの一意制約実装の既知の制限事項かどうかは明らかです。

答えて

関連する問題