2016-12-03 10 views
1

私はいつも考えていたように、xs:restrictionは特定のsimpleTypeまたはcomplexTypeを制限するために使用されます。したがって、名前はrestrictionです。しかし、以下のxsdスニペットは正しいです。 Norwegian_customerを見てください。countryはcomplexTypeで上書きされているので、拡張されています。そして名前が変更されました。 xs:restrictionは何を提供したいですか? xs:restrictionは、xs:extensionのスーパーセットですか?スニペットの有効性はWebStormです。なぜこのcomplexType定義が正しいのですか

<xs:complexType name="customer"> 
    <xs:sequence> 
     <xs:element name="firstname" type="xs:string"/> 
     <xs:element name="lastname" type="xs:string"/> 
     <xs:element name="country" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="Norwegian_customer"> 
    <xs:complexContent> 
     <xs:restriction base="customer"> 
     <xs:sequence> 
      <xs:element name="firstname" type="xs:string"/> 
      <xs:element name="lastname" type="xs:string"/> 
      <xs:element name="country1"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="firstname" type="xs:string"/> 
       <xs:element name="lastname" type="xs:string"/> 
       <xs:element name="country" type="xs:string"/> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
     </xs:restriction> 
    </xs:complexContent> 
    </xs:complexType> 

答えて

2

しかし、以下のxsdスニペットが正しいです。

いいえ、XSDスニペットが正しくありませんNorwegian_customercustomerの有効な制限ではないため、countrycountry1のみを許可していません。制限付き基本型のコンテンツモデルのすべての部分は、派生型で明示的に許可する必要があります。

スニペットはWebStormで検証されます。

WebstormがこのXSDを検証した場合、それは不適合です。

は、具体的には、W3C XML Schema Part 1: Structures Second Edition参照:次のようにXercesのベースのバリデータがあなたを通知していたことを

注:

[エラー] try.xsd:13:45:rcase-Recurse.2:パーティクル間に完全な 機能マッピングがありません。

[エラー] try.xsd:13:45:derivation-ok-restriction.5.4.2:タイプ のエラー 'Norwegian_customer'。この種の粒子は、塩基の粒子の有効な制限ではない( )。

関連する問題