2011-05-12 61 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