2011-07-27 8 views
1

jaxb2-maven-plugin 1.3オブジェクトの属性をスキップします。 XSDは変更できません。なぜJAXB(jaxb2-maven-plugin)がこの属性をスキップするのですか?

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="classA" type="classA" substitutionGroup="classSubA"/> 

    <xs:complexType name="complexClassA" mixed="true"> 

    <xs:attribute name="attA"> 
     <xs:annotation> 
      <xs:appinfo> 
       <moProperty value="classA:attA"/> 
       <label value="Attribute A" default="true"/> 
       <externAccess value="readWrite"/> 
      <description value="NO COMMENTS"/> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="off"/> 
      <xs:enumeration value="on"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:attribute> 

<xs:attribute name="id" type="xs:unsignedInt"> 
    <xs:annotation> 
     <xs:appinfo> 
      <moProperty value="myClassB:id"/> 
      <label value="Id" default="true"/> 
      <externAccess value="readWrite"/> 
      <description value="NO COMMENTS"/> 
     </xs:appinfo> 
    </xs:annotation> 
</xs:attribute> 
</xs:schema> 

得られJava Object(断片):XSD(断片)に

public class ComplexClassA { 
    @XmlSchemaType(name = "unsignedInt") 
    protected Long id; 
} 

は、なぜそれがattA体を生成しないのですか?

インライン列挙が発生する可能性がありますか?

ありがとうございます。

Udo。

答えて

1

ありがとうございます。

1

問題を示す完全なXMLスキーマを提供できますか?ラインの下に私が試したことがあり、すべてが期待どおりに動作するように見えます。私は、次のXMLスキーマにXJCを実行すると


<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/Foo" xmlns="http://www.example.org/Foo" 
    elementFormDefault="qualified"> 

    <xs:complexType name="complexClassA" mixed="true"> 

     <xs:attribute name="attA"> 
      <xs:annotation> 
       <xs:appinfo> 
        <moProperty value="classA:attA"/> 
        <label value="Attribute A" default="true"/> 
        <externAccess value="readWrite"/> 
        <description value="NO COMMENTS"/> 
       </xs:appinfo> 
      </xs:annotation> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
       <xs:enumeration value="off"/> 
       <xs:enumeration value="on"/> 
       </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 

     <xs:attribute name="id" type="xs:unsignedInt"> 
      <xs:annotation> 
       <xs:appinfo> 
        <moProperty value="myClassB:id"/> 
        <label value="Id" default="true"/> 
        <externAccess value="readWrite"/> 
        <description value="NO COMMENTS"/> 
       </xs:appinfo> 
      </xs:annotation> 
     </xs:attribute> 

    </xs:complexType> 

</xs:schema> 

予想通り、私は次のクラスを取得する:あなたは

package org.example.foo; 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlSchemaType; 
import javax.xml.bind.annotation.XmlType; 
import javax.xml.bind.annotation.XmlValue; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "complexClassA", propOrder = { 
    "content" 
}) 
public class ComplexClassA { 

    @XmlValue 
    protected String content; 
    @XmlAttribute 
    protected String attA; 
    @XmlAttribute 
    @XmlSchemaType(name = "unsignedInt") 
    protected Long id; 

    public String getContent() { 
     return content; 
    } 

    public void setContent(String value) { 
     this.content = value; 
    } 

    public String getAttA() { 
     return attA; 
    } 

    public void setAttA(String value) { 
     this.attA = value; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long value) { 
     this.id = value; 
    } 

} 
+0

インライン列挙型はどうですか?どこですか?申し訳ありませんが、XSDを公開することはできません。私は明日私が事務所にいるより有意義な例を追加します。あなたの時間をありがとう。 – ssedano

0

何JAXBバージョンを使用していますか?インラインEnumerationは、Java enumに正しく変換する必要があります。

属性定義の外でsimpleTypeを定義しようとすると、おそらく役に立ちます。

すべてが正常に動作しているのmaven-JAXB2-プラグイン

org.jvnet.jaxb2.maven2 に行く後

+0

お返事ありがとうございます。ファイルを変更できません。 – ssedano

関連する問題