我正在尝试使用xjc实用程序生成Java类,但得到以下异常:
[错误] src-resolve.4.2:解析组件时出错' act:statusCd'。它 检测到' act:statusCd'在命名空间中 ' http://www.example.org/account/schemas/' ,但来自此的组件 命名空间不能从架构文档中引用 '文件:/ E:/SpringWebServices/BankWebService/xsd/account.xsd' ;.如果这 是不正确的命名空间,也许是' act:statusCd'的前缀。需求 要改变。如果这是正确的命名空间,那么适当 '进口'标签应该添加到 '文件:/ E:/SpringWebServices/BankWebService/xsd/account.xsd' ;.第22行 of file:/ 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文件中做错了什么。我想引用&#34; statusCd&#34;我的回复中的simpleType。
答案 0 :(得分:1)
从此
更改与act
名称空间前缀对应的名称空间URI
xmlns:act="http://www.example.org/account/schemas/"
到此
xmlns:act="http://www.example.org/account"
然后,您对act:statusCd
的引用将正确解析为目标命名空间statusCd
中找到的http://www.example.org/account
简单类型。