2013-05-23 2 views
5

저는 XML 및 웹 서비스를 처음 접하는 자바 프로그래머입니다. 나는 아래 스 니펫이 포함 된 XSD (필자는 쓰지 않았 음)를 따르는 xml 문서를 만들려고합니다. 내가하고 싶은 것은이 웹 서비스를 호출하여 우편물을 복사하는 것입니다. copy라는 요소가 있는데, 추상 형식 인 "tns : CopyRequest"입니다. 엘레멘트의 타입은 추상적이기 때문에 이클립스는 내가 만들 수 없다고 말한다. CopyMailingRequest 유형 (내가 원하는 것처럼 들리는)이 있지만, 그 유형을 확장하는 요소가 없기 때문에 인스턴스화 방법을 모르겠습니다. 내가 뭘 놓치고 있니?추상 유형의 XSD 요소를 인스턴스화하는 방법

<xs:element name="copy" nillable="true" type="tns:CopyRequest"/> 

<xs:complexType name="CopyMailingRequest"> 
    <xs:complexContent> 
    <xs:extension base="tns:CopyRequest"> 
     <xs:sequence> 
     <xs:element name="fromId" type="tns:MailingId"/> 
     </xs:sequence> 
    </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="StandardMailingId"> 
    <xs:complexContent> 
    <xs:extension base="tns:MailingId"/> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="MailingId"> 
    <xs:complexContent> 
    <xs:extension base="tns:ObjectId"/> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="CopyRequest" abstract="true"> 
    <xs:sequence> 
    <xs:element name="newName" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 
쉽게 아래 최소한의 수정 된 스키마는, 따라 할 수 있도록

답변

9

(임의의 targetNamespace와 스키마 요소를 추가하고, ObjectId가에 대한 더미 정의 추가) :

<?xml version="1.0" encoding="utf-8" ?> 
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) --> 
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" xmlns:tns="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="copy" nillable="true" type="tns:CopyRequest"/> 

    <xs:complexType name="CopyMailingRequest"> 
     <xs:complexContent> 
      <xs:extension base="tns:CopyRequest"> 
       <xs:sequence> 
        <xs:element name="fromId" type="tns:MailingId"/> 
       </xs:sequence> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="StandardMailingId"> 
     <xs:complexContent> 
      <xs:extension base="tns:MailingId"/> 
     </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="MailingId"> 
     <xs:complexContent> 
      <xs:extension base="tns:ObjectId"/> 
     </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="ObjectId"/> 

    <xs:complexType name="CopyRequest" abstract="true"> 
     <xs:sequence> 
      <xs:element name="newName" type="xs:string"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

이것은 무엇을이다 자동 (유효) 생성 된 샘플 XML은 XSD에 대한과 같습니다

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) --> 
<copy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CopyMailingRequest" xmlns="http://tempuri.org/XMLSchema.xsd"> 
    <newName>newName1</newName> 
    <fromId/> 
</copy> 

여기에 주요 포인트는 xsi:type="CopyMailingRequest"이다; 이것은 시나리오에서 구체적인 유형을 제공하는 방법입니다.

관련 문제