2016-12-02 4 views
1

Im Moment implementiere ich eine Reihe von Schnittstellen, um XML-Daten von externen Systemen zu verwenden. Die Daten, die ich erhalten soll, sind alle wohlgeformte XML-Dokumente. Das Problem ist jedoch, dass alle ohne Namespaces wie das folgende Beispiel kommen.So verweisen Sie im XML-Schema auf einen komplexen Typ ohne targetNamespace

<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> 

also von dem, was ich bisher gelernt habe, habe ich nicht targetNamespace im XSD-Schema verwendet, kann ich gebaut, diese Daten zu beschreiben. Zum Beispiel ist unten die XSD, die ich für die obige Nutzlast erstellt habe.

<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> 

Das Problem, das ich jetzt habe, ist, dass meine IDE beschwert, dass es nicht die komplexe Art finden FileApplication ich für das ReturnOfFileApplicationDetails Element setzen in die, obwohl sie buchstäblich in der gleichen XSD sind. Da die CourtEvent.xsd und die InvestigationOfficer.xsd auch ohne targetNamespace kommen, kann meine IDE die komplexen Typen CourtEvent und InvestigationOfficer ebenfalls nicht finden.

Ich wäre sehr dankbar, wenn Sie mir zeigen könnten, dass ich meine XSD ordnungsgemäß ohne targetNamespace baue.

Cheers,

James Tran

Antwort

1

Sie müssen den Standard-Namespace-Deklaration

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