2011-05-12 90 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="AlarmAction"> 
    <complexContent> 
     <extension base="ref:Action"> 
      <sequence> 
       <element name="alarmCode" type="integer"/> 
       <element name="report" type="string"/> 
      </sequence> 
     </extension> 
    </complexContent> 
</complexType> 

這個元素引用抽象Action元素:

<complexType name="Conclusion"> 
    <sequence> 
     <element minOccurs="0" name="observationSet" type="ref:ObservationSet"/> 
     <element name="action" type="ref:Action"/> 
    </sequence> 
</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

我假設模式是有效的;您確實有一個全局元素的定義,其中使用本地名稱「結論」以及來自Action的非抽象複雜類型,其中包含重複observationId元素(例如XYZAction)。

你的問題,那麼,如果你添加XSI是rezolved:TYPE = 「XYZAction爲您行動元素的屬性。同樣,屬性值必須匹配從抽象Action派生的非抽象類型的名稱。

我給你的建議是有疑問時,使用工具來生成你心目中的情景示例XML。我使用的是QTAssistant,因爲它允許我使用簡單的XML Schema元素拖放來輕鬆構建任何想象的場景。

4

您可以使用一個抽象的複雜類型的元素類型,但用戶寫這個模式的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