2013-05-23 22 views
5

私は、XMLとWebサービスの新しいJavaプログラマーです。私は以下のスニペットを含むXSD(私は書いていない)に準拠したXML文書を作成しようとしています。私がしたいことは、このWebサービスを呼び出してメーリングをコピーすることです。コピーと呼ばれる要素があります。この要素は抽象型 "tns:CopyRequest"です。要素の型は抽象型なので、Eclipseは私にはそれを作成できないと伝えます。 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"です。これは、シナリオで具体的なタイプを指定する方法です。

関連する問題