如何在没有targetNamespace的XML模式中引用复杂类型

时间:2016-12-02 03:25:37

标签: xml oracle11g xsd soa bpel

目前,我实现了许多接口来使用外部系统的XML数据。我应该接收的数据都是格式良好的XML文档。但问题是,它们都没有名称空间,如下面的示例所示。

<ReturnOfFileApplicationDetails>
   <ApplicationNo>APP-2015-1214-000847</ApplicationNo>
   <CourtOrderRefNo></CourtOrderRefNo>
   <SourceRequestNo></SourceRequestNo>
   <Status>A</Status>
   <RejectionReason></RejectionReason>
   <CourtEventDetails>
      <NextCourtNo>26</NextCourtNo>
      <NextCourtDateTime>201601111500</NextCourtDateTime>
      <NextCourtJOName></NextCourtJOName>
   </CourtEventDetails>
   <IODetails>
      <Name>CPIB IO</Name>
      <Designation>Special Investigation Officer</Designation>
      <DivisionAgency>CPIB</DivisionAgency>
      <ReportNo></ReportNo>
      <IPNo></IPNo>
   </IODetails>
</ReturnOfFileApplicationDetails>

因此,从我到目前为止所学到的知识,我不能在我构建的XSD架构中使用targetNamespace来描述这些数据。例如,下面是我为上述有效负载创建的XSD。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://oscar.pactera.com/icms/schema">
    <xsd:include schemaLocation="CourtEvent.xsd"/>
    <xsd:include schemaLocation="InvestigationOfficer.xsd"/>

    <xsd:complexType name="FileApplication">
        <xsd:sequence>
            <xsd:element name="ApplicationNo" type="xsd:string" minOccurs="0" nillable="true"/>
            <xsd:element name="ApplicationType" type="xsd:string" minOccurs="0" nillable="true"/>
            <xsd:element name="CourtOrderRefNo" type="xsd:string" minOccurs="0" nillable="true"/>
            <xsd:element name="SourceRequestNo" type="xsd:string" minOccurs="0" nillable="true"/>
            <xsd:element name="CaseNo" type="xsd:string" minOccurs="0" nillable="true"/>
            <xsd:element name="Status" type="xsd:string" minOccurs="0" nillable="true"/>
            <xsd:element name="RejectionCode" type="xsd:string" minOccurs="0" nillable="true"/>
            <xsd:element name="RejectionReason" type="xsd:string" minOccurs="0" nillable="true"/>

            <xsd:element name="CourtEventDetails" type="CourtEvent" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="IODetails" type="InvestigationOfficer" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="ReturnOfFileApplicationDetails" type="FileApplication"/>
</xsd:schema>

我现在遇到的问题是我的IDE抱怨它无法找到我为FileApplication元素添加的复杂类型ReturnOfFileApplicationDetails,即使它们确实在同一个XSD中。由于CourtEvent.xsdInvestigationOfficer.xsd也没有targetNamespace,因此我的IDE无法找到CourtEventInvestigationOfficer复杂类型。

如果您能告诉我我没有targetNamespace正确构建我的XSD,我将非常感激。

干杯,

James Tran

1 个答案:

答案 0 :(得分:1)

您需要删除默认命名空间声明

xmlns="http://oscar.pactera.com/icms/schema"