2014-07-19 71 views
1

我試圖使用生成實用XJC,但得到的異常下面的Java類的XSD:無法解析,因爲命名空間衝突

[錯誤] SRC-resolve.4.2:錯誤解決組件的行爲:statusCd「。它檢測到 'act:statusCd'在命名空間 'http://www.example.org/account/schemas/'中,但來自此 命名空間的組件不能從架構文檔 'file:/ E:/SpringWebServices/BankWebService/xsd/account.xsd'中引用。如果此 是不正確的名稱空間,則可能需要更改'act:statusCd'的前綴 。如果這是正確的命名空間,則應在 '文件中添加適當的 '導入'標記:/ E:/SpringWebServices/BankWebService/xsd/account.xsd'。第22行的文件 :/ E:/SpringWebServices/BankWebService/xsd/account.xsd

這裏是我的XSD:

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

    <xs:element name="AccountRequest"> 
    <xs:complexType> 
     <xs:all> 
      <xs:element name="AccountNumber" type="xs:string"/> 
     </xs:all> 
    </xs:complexType> 
</xs:element> 

<xs:element name="AccountResponse"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="AccountNumber" type="xs:string"/> 
      <xs:element name="AccountName" type="xs:string"/> 
      <xs:element name="AccountBalance" type="xs:double"/> 
      <xs:element name="AccountStatus" type="act:statusCd"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:simpleType name="statusCd"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Active"/> 
     <xs:enumeration value="Inactive"/> 
    </xs:restriction> 
</xs:simpleType> 
</xs:schema> 

請讓我知道我做錯了在XSD文件。我想在我的回覆中引用「statusCd」simpleType。

回答

1

更改對應act命名空間前綴從這個

xmlns:act="http://www.example.org/account/schemas/" 

這個

xmlns:act="http://www.example.org/account" 

空間URI然後您參考act:statusCd將正確解析爲statusCd簡單類型在目標命名空間中找到,http://www.example.org/account