Xml 在扩展复杂类型中更改对简单类型的限制

Xml 在扩展复杂类型中更改对简单类型的限制,xml,xsd,Xml,Xsd,我正在尝试创建一个有2种地址类型的模式。第一个地址类型要求元素第1行的值至少为10个字符。第二个类型otheraddresstype从中派生,具有相同的元素,但不需要第1行的值 我尝试了不同的方法,但总是出现架构错误,此错误为: 通过限制进行的粒子派生无效-'Derived element'{namespace}:Line1'根据Elt:Elt--NameAndTypeOK'不是基元素'{namespace}:Line1'的有效限制。 如果我将类型xs:string添加到otheraddress

我正在尝试创建一个有2种地址类型的模式。第一个
地址类型
要求元素
第1行
的值至少为10个字符。第二个类型
otheraddresstype
从中派生,具有相同的元素,但不需要
第1行的值

我尝试了不同的方法,但总是出现架构错误,此错误为:

通过限制进行的粒子派生无效-'Derived element'{namespace}:Line1'根据Elt:Elt--NameAndTypeOK'不是基元素'{namespace}:Line1'的有效限制。

如果我将类型
xs:string
添加到
otheraddresstype: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>

恐怕我没有完整的答案给你,因为我没有时间详细研究这个问题,但是,您的派生类型似乎不是有效的限制:minLength为0的字符串不是minLength为10的字符串的限制:minLength为0的字符串多于minLength为10的字符串