1

以前の 2 つの投稿 (投稿 1投稿 2 ) への参照。今、私は別の奇妙な問題で立ち往生しています(私はJAXBの初心者です)。book.xsd (ルート要素として bookList と book を含む) を使用して Java クラスを生成しました。すべてが正常に機能しています。現在、レビュー用に完全に個別の XSD を作成しています。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="reviews">
    <xs:complexType>
         <xs:sequence>
             <xs:element name="review" type="reviewType" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
         <xs:attribute name="self" type="xs:anyURI" />
    </xs:complexType>
</xs:element>

<xs:complexType name="reviewType">
    <xs:sequence>
        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="comments" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="rating" type="xs:integer" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
     <xs:attribute name="self" type="xs:anyURI" />
</xs:complexType>

JAXBを使用してJavaクラスを生成すると、次のようなエラーが発生し始めますThe element declaration with name 'reviews' and namespace '' cannot be resolved

何か案が ?

UPDATED 複数のxsdで使用されている基本情報を持つcommon.xsdを使用していることがわかった。などの情報authorType。現在、common.xsd は自分の books.xsd と reviews.xsd でも使用されており、おそらくそれがこの名前空間エラーが発生する理由です。ここでこのエラーを回避するにはどうすればよいですか?

スキーマはすでにここにあります。

4

1 に答える 1

4

スキーマの要素を名前空間に配置する必要があります。これは、JAXB が「レビュー」を解決できないように見えるためです (これはグローバル名前空間 '' にあります。2 つの目盛りは '' 空の名前空間を表します)。これを行うには、スキーマのヘッダーを次のように変更します。

<?xml version='1.0' encoding='UTF-8'?>
<xs:schema targetNamespace="http://your/namespace/goes/here"
 xmlns="http://your/projects/namespace/goes/here"
 xmlns:xs='http://www.w3.org/2001/XMLSchema'
 elementFormDefault='qualified'>

行 2 は、名前空間をスキーマのターゲット名前空間として定義します。行 3 は、名前空間を .xsd ファイルのグローバル名前空間に配置します (したがって、スキーマの要素に xs: をプレフィックスとして付けるように、要素にプレフィックスを付ける必要はありません)。もちろん、スキーマ全体で使用したい場合は、その行を独自のプレフィックスに変更できます。

 xmlns:mylib="http://your/namespace/goes/here"

また、要素が名前空間内にあるため、要素を検索する名前空間を XML ファイルに指示する必要があります (同時に複数の名前空間を持つことができます)。

 <reviews xmlns="http://your/namespace/goes/here">
 ....
 </reviews>

スキーマ名前空間の詳細については、本をお勧めします: XML Schema、著者: Eric van der Vlist、O'REILLY

于 2013-04-04T21:29:22.040 に答える