如何在没有 targetNamespace 的情况下引用 XML 模式中的复杂类型
How to refer to a complex type in XML schema with no targetNamespace
目前,我正在实现一些接口来使用来自外部系统的 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 抱怨它找不到我为 ReturnOfFileApplicationDetails
元素输入的复杂类型 FileApplication
,即使它们确实在同样XSD。由于 CourtEvent.xsd
和 InvestigationOfficer.xsd
也没有 targetNamespace
,我的 IDE 也找不到 CourtEvent
和 InvestigationOfficer
复杂类型。
如果你能告诉我如何在没有 targetNamespace
的情况下正确构建我的 XSD,我将不胜感激。
干杯,
詹姆斯·陈
您需要删除默认命名空间声明
xmlns="http://oscar.pactera.com/icms/schema"
目前,我正在实现一些接口来使用来自外部系统的 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 抱怨它找不到我为 ReturnOfFileApplicationDetails
元素输入的复杂类型 FileApplication
,即使它们确实在同样XSD。由于 CourtEvent.xsd
和 InvestigationOfficer.xsd
也没有 targetNamespace
,我的 IDE 也找不到 CourtEvent
和 InvestigationOfficer
复杂类型。
如果你能告诉我如何在没有 targetNamespace
的情况下正确构建我的 XSD,我将不胜感激。
干杯,
詹姆斯·陈
您需要删除默认命名空间声明
xmlns="http://oscar.pactera.com/icms/schema"