2010-05-02 42 views
0

我試圖創建一個具有2種地址類型的模式。第一個AdressType要求元素Line 1的值至少爲10個字符。第二種類型OtherAdressType由此得出相同的元素,但不需要Line 1的值。在擴展複雜類型中更改簡單類型的限制

我已經嘗試了不同的方法,但總是架構錯誤,這個錯誤是:

Invalid particle derivation by restriction - 'Derived element '{namespace}:Line1' is not a valid restriction of base element '{namespace}:Line1' according to Elt:Elt -- NameAndTypeOK.'.

如果我添加一個類型xs:stringOtherAdressType:Line1然後我得到其他錯誤。

<xs:complexType name="AdressType"> 
    <xs:sequence> 
     <xs:element name="Line1" minOccurs="1" maxOccurs="1"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:minLength value="10" /> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:element> 
     <xs:element name="Line2" type="xs:string" minOccurs="1" maxOccurs="1" /> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="OtherAdressType"> 
    <xs:complexContent> 
     <xs:restriction base="AdressType"> 
     <xs:sequence> 
      <xs:element name="Line1" nillable="true"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
       <xs:minLength value="0" /> 
       </xs:restriction> 
      </xs:simpleType> 
      </xs:element> 
      <xs:element name="Line2" type="xs:string" minOccurs="1" maxOccurs="1" /> 
     </xs:sequence> 
     </xs:restriction> 
    </xs:complexContent> 
    </xs:complexType> 

回答

1

我沒有給你一個完整的答案,我很害怕,因爲我沒有時間來研究這個詳細,,你的派生類型似乎並沒有成爲一個有效限制:最小長度爲0的字符串是而不是對最小長度爲10的字符串的限制:有更多的字符串,其最小長度爲0,比有10的字符串長。