2011-05-12 8 views
2

xsd 스키마 파일에 문제가 있습니다. XSD 스키마 추상 형식 문제

나는 나의 스키마에이 추상 복합 형식을 가지고

<complexType name="Action" abstract="true"> 
    <sequence> 
     <element name="actionType"> 
      <complexType> 
       <choice> 
        <element name="ALARMACTION"/> 
        <element name="REPORTDATAACTION"/> 
        <element name="ENABLEOBSERVATIONACTION"/> 
        <element name="DISABLEOBSERVATIONACTION"/> 
        <element name="SETOBSERVATIONSCHEDULEACTION"/> 
      <element name="VERIFYOVERTIMEACTION"/> 
       </choice> 
      </complexType> 
     </element> 
    </sequence> 
</complexType> 

이 액션 추상적 인 요소의 구체적인 구현 :

<complexType name="Conclusion"> 
    <sequence> 
     <element minOccurs="0" name="observationSet" type="ref:ObservationSet"/> 
     <element name="action" type="ref:Action"/> 
    </sequence> 
</complexType> 
:

<complexType name="AlarmAction"> 
    <complexContent> 
     <extension base="ref:Action"> 
      <sequence> 
       <element name="alarmCode" type="integer"/> 
       <element name="report" type="string"/> 
      </sequence> 
     </extension> 
    </complexContent> 
</complexType> 

이 요소는 추상적 인 액션 요소를 참조

이 XML 인스턴스에 오류가 발생했습니다 :

  <Conclusion> 
       <observationSet> 
        <observationPhenomenum>HIGH_HEARTBEAT</observationPhenomenum> 
       </observationSet> 
       <action> 
        <actionType> 
         <ENABLEOBSERVATIONACTION></ENABLEOBSERVATIONACTION> 
        </actionType> 
       <observationId>1</observationId> 
       <observationId>2</observationId> 
       </action> 
     </Conclusion> 

netbeans의 오류는 다음과 같습니다. cvc-type.2 : 유형 정의는 요소 조치에 대해 추상적이어서는 안됩니다. [104]

나를 도와 줄 사람이 있습니까?

답변

5

스키마가 유효하다고 가정합니다. XYZAction과 같이 로컬 이름이 "결론"인 전역 요소에 대한 정의와 동작에서 파생 된 추상화되지 않은 복합 유형의 어딘가에 observationId 요소가 반복됩니다. 당신이 XSI를 추가하면

귀하의 문제는 rezolved한다 : 유형 = "XYZAction" 당신의 행동 요소에 속성으로. 다시 말하지만, 속성 값은 추상적 인 액션에서 파생 된 비 추상적 인 유형의 이름과 일치해야합니다.

내 조언은 당신이 염두에두고있는 시나리오에 대한 샘플 XML을 생성하기 위해 도구를 사용하는 것입니다. XML 스키마 요소의 간단한 끌어서 놓기를 사용하여 상상할 수있는 시나리오를 쉽게 만들 수 있으므로 QTAssistant을 사용하고 있습니다.

4

추상 complexType을 요소 유형으로 사용할 수 있지만이 스키마를 사용하여 XML 인스턴스 문서를 작성하는 사용자는 요소의 유형을 명시해야합니다.

<Conclusion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="conclusion.xsd"> 
    <observationSet> 
    <observationPhenomenum>HIGH_HEARTBEAT</observationPhenomenum> 
    </observationSet> 
    <action xsi:type="AlarmAction"> 
    <actionType> 
     <ENABLEOBSERVATIONACTION></ENABLEOBSERVATIONACTION> 
    </actionType> 
    <alarmCode>10</alarmCode> 
    <report>Whatever</report> 
    </action> 
</Conclusion> 

자세한 내용은 여기를 살펴 근래 : http://pic.dhe.ibm.com/infocenter/wci/v6r0m0/index.jsp?topic=%2Fcom.ibm.websphere.cast_iron.doc%2Fmap_Selecting_a_Substitution_Type.html

귀하의 예를 들어

이 다음과 같이 당신이 그것을 작성해야 의미