2016-09-01 5 views
1

に役立つ私は、私は、Java Beanのプロパティにマップしたい理解しているいけないこのXML型定義を持っている:XML-スキーマ: `XSを制限するこのタイプは何ですか:anyType`

<xs:complexType mixed="true" name="SimpleLiteral">  
    <xs:complexContent mixed="true"> 
     <xs:restriction base="xs:anyType"> 
      <xs:sequence> 
       <xs:any maxOccurs="0" minOccurs="0" processContents="lax"/> 
      </xs:sequence> 
     </xs:restriction> 
    </xs:complexContent> 
</xs:complexType> 

これをStringのプロパティにマップすることをお勧めします。しかし、そのtypedefitionは何のために有益でしょうか?

答えて

2

タイプ自体の値のスペースは、単純なタイプxs:stringの値のスペースと同じになります。私が何か不足している場合を除きます。私は型システムと階層の面で違いがあると思う。

単純型xs:stringとは異なり、複雑な型であるという意味で、要素タグを持つサブタイプを作成したり、または属性。これは、XQueryなどのXMLスキーマで検証されたインスタンスを使用する言語に影響を与える可能性があります。

私は、これは必ずしも上記の宣言の意図で言っていないのですが、これはどのような場合に行うことができるものです。

<xs:complexType name="stringWithTags"> 
    <xs:complexContent mixed="true"> 
     <xs:extension base="SimpleLiteral"> 
      <xs:sequence> 
       <xs:element name="some-tag" type="xs:string"/> 
      </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 
+0

ああ、可能ユースケースになります。 'maxOccurs =" 0 "'のため、その型を拡張して要素を追加するべきではないと思います。しかし、完全なxsdを見ると、実際には追加の属性を追加するタイプがあります。ありがとう! – frifle

+1

XMLスキーマ型システムでは、サブタイプの値空間がスーパータイプの値空間のサブセットであることを厳密には強制しません。基底型に要素と属性を追加することができるため、拡張による派生が反例です。 –

+0

あなたは正しいです - もう一度ありがとう! – frifle

関連する問題