7

この XSD を考えると:

<xsd:element name="ServiceList">
    <xsd:complexType>
        <xsd:sequence>
            ...
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

<xsd:complexType name="ServiceList">
    <xsd:sequence>
        ...
    </xsd:sequence>
</xsd:complexType>

これら2つの意味的な違いは何ですか? つまり、 a の直接の子であるelements およびsという名前が付けられます。complexTypeschema

私が質問する理由は、XSD でこれを実行しようとしたためです。

<xsd:element name="AvailableServices" type="cm:ServiceList" />
<xsd:element name="ExistingServices" type="cm:ServiceList" />
<xsd:complexType name="ServiceList">
    <xsd:sequence>
        ...
    </xsd:sequence>
</xsd:complexType>

しかし、これを Maven JAXB プラグインを使用して Java クラスにコンパイルすると、new ServiceList(). AvailableServices生成されたクラスの中にさえ存在してExistingServicesいないようです。それで、ここで何が起こっているのですか?

4

1 に答える 1

2

複合型に対応するクラス

JAXB (JSR-222)では、Java クラスは複合型に対応します。グローバル要素の名前付き複合型と匿名複合型は、ルート レベルのクラスに対応します。デフォルトでは、ネストされた複合型は静的内部クラスとして生成されます。このデフォルトの動作は次のように変更できます。

グローバル要素

グローバル要素が複合型 (無名の複合型を持つグローバル要素) に一意に関連付けられている場合、注釈が付けられ@XmlRootElementます。グローバル型に対応するグローバル要素は、クラス @XmlElementDeclの注釈に対応します。ObjectFactory

詳細については

于 2012-11-01T14:47:51.433 に答える