2011-12-03 3 views
2

는 직관적으로 "확장"기본 유형을 수정하지, 기본 유형에 무언가를 추가하는 것을 의미한다. 다음 XSD는 XML 스키마 확장의 의미

<complexType name="B"> 
    <attribute name="A1" type="int" use="required" /> 
    <anyAttribute namespace="##other" processContents="strict" /> 
</complexType> 
<complexType name="D"> 
    <complexContent > 
     <extension base="tns:B"> 
      <!--???--> 
      <attribute name="A1" type="int" use="optional" /> 
      <anyAttribute namespace="##other" processContents="lax" /> 
     </extension> 
    </complexContent> 
</complexType> 

컴파일해야합니다. 그러나 XML 스키마 컴파일러 (System.Xml.Schema.XmlSchema)는 오류를 발생시키지 않습니다. 이 반 직관적 디자인의 이성은 무엇입니까? 스키마에 문제가 있습니다

+0

나는 이유를 알고 : XML 스키마는 "구조 입력"이 아닌 "공칭 입력"입니다 ...... –

답변

0

: D에서

  • , 당신은 속성 A1에게 두 번째 시간을 추가하려고합니다. 확장에

목록 뭔가 정의에 추가합니다. 이 경우 "A1"이 이미 있습니다. 모든 확장 된 인스턴스는 기본의 유효한 인스턴스 여야합니다. 만약 A1이 없다면 그것은 기지의 유효한 구성원이 아닐 것이다. 당신은 당신이 선택하게 할 경우 B의 유형을 제한 할 필요가 같은

는 것 같습니다.