0

我正在构建一个以 aitinerary作为输入的 BPEL 流程:这是由一个无限的元素列表和一些属性组成的。
该过程的任务是检查列表中的每个元素“预订”它,为属性分配一些值,然后返回itinerary.
这些元素中的每一个本身都由两个元素组成:预订过程的一些信息(可以正常工作)和特定对象,可能是航班或酒店。我尝试像这样定义该元素:

<xsd:complexType name="ObjectType" abstract="true">
    <xsd:sequence>
        <xsd:element name="objType" type="xsd:string"></xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="FlightType">
    <xsd:complexContent>
        <xsd:extension base="tns:ObjectType">
            <xsd:sequence>
                <xsd:element name="departureCity" type="xsd:string"></xsd:element>
                <xsd:element name="arrivalCity" type="xsd:string"></xsd:element>
                <xsd:element name="departureTime" type="xsd:dateTime"></xsd:element>
                <xsd:element name="arrivalTime" type="xsd:dateTime"></xsd:element>
                <xsd:element name="airline" type="xsd:string"></xsd:element>
            </xsd:sequence>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="ItineraryReservationType">
    <xsd:sequence>
        <xsd:element name="object" type="tns:ObjectType"></xsd:element>
        <xsd:element name="reservation" type="tns:ReservationType"></xsd:element>
    </xsd:sequence>
</xsd:complexType>

然后在具有这种输入的 CompositeApplication 中使用它们

    <urn:itineraryReservation>
      <urn:flight>
        <urn:objType>flight</urn:objType>
        <urn:departureCity>Ottawa</urn:departureCity>
        <urn:arrivalCity>Toronto</urn:arrivalCity>
        <urn:departureTime>2007-10-26T08:36:28</urn:departureTime>
        <urn:arrivalTime>2004-02-14T19:44:14</urn:arrivalTime>
        <urn:airline>Aircanada</urn:airline>
      </urn:flight>
      <urn:reservation>
        <urn:price>3</urn:price>
      </urn:reservation>
    </urn:itineraryReservation>

但是每当进程到达最后一个assign并尝试复制itinerary元素以输出它时,我都会得到一个Particle not found in the complex type. element={urn:ws.bpelschema}flight, complexType={urn:ws.bpelschema}ItineraryReservationType.
显而易见的替代方法是随身携带两张清单,一张用于航班,一张用于酒店,但我认为情况可能会更好,并且找不到有关此主题的任何内容。
感谢您的帮助!

4

1 回答 1

0

据我从 XML Schema 片段中可以看出,您的 XML 的问题在于,您应该使用 <urn:object xsi:type="urn:FlightType">; 而不是 <urn:flight> 那么一切都应该没问题。除非您的意图是使用替换组...从 XSD 片段中也很难分辨。

对于此类问题,我最好的建议是建议使用工具从您验证的 XML Schema 生成 XML 示例文件。它应该为您提供有效 XML 应该是什么样子的可视化,并且从那里任何人都应该很容易为此编写代码。

于 2011-11-24T19:14:25.367 回答