从元素名称中包含名称空间的XSD生成JAXB类

时间:2013-10-24 19:10:40

标签: xml jaxb xml-namespaces xjc

我正在尝试从XSD下面生成JAXB类文件

     <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified"   version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <xsd:element name="comp:myItems">
            <xsd:complexType>
               <xsd:sequence>
               <xsd:element name="style" type="xsd:string" />
              </xsd:sequence>
           </xsd:complexType>
         </xsd:element>
       </xsd:schema>  

但是在生成JAXB类文件

时我遇到了错误

C:\ JAVA \ jdk1.6.0_26 \ bin&gt; xjc.exe myFile.xsd

  

解析模式......   [错误] s4s-att-invalid-value:元素'element'中'type'的属性值无效。记录原因:UndeclaredPrefix:无法将'comp:myItems'解析为QName:未声明前缀'comp'。     文件第2行:/ C:/JAVA/jdk1.6.0_26/bin/myFile.xsd

无法解析架构。

我得到错误因为元素名称是comp:myItems

有没有办法从XSD上面生成JAXB类文件?
任何帮助将非常感谢。

1 个答案:

答案 0 :(得分:0)

XML Schema中指定的元素名称不得包含冒号(:)。如果您希望元素是名称空间限定的,则需要在targetNamespace元素上指定schema。您还需要声明此命名空间。

<xsd:schema 
    ...
    targetNamespace="http://www.example.com/foo"
    xmlns:comp="http://www.example.com/foo">