JAXB-XJC 编译关于编译具有 <xsd:complexType> 的模式的区别 有名和不带名



我有一个使用JAXB/XJC编译模式的应用程序。当我们要在应用服务器中部署web服务代码时,我想确定真正的问题。在这里,我们的模式包含元素,它确实具有类型导致问题。我想检查我们是否给编译器提供了正确的模式。假设下面给出的XSD定义。这导致了问题。真正的区别在于标准定义生成的类文件web服务没有得到部署。但是,如果我们完全删除该元素,则web服务将成功部署。有人能给我指路吗?

问题模式(根据w3schools)

<xsd:complexType name="PersonType">
     <xsd:sequence>
          <xsd:element name="nom" type="xsd:string" />
          <xsd:element name="prenom" type="xsd:string" />
          <xsd:element name="date_naissance" type="xsd:date" />
          <xsd:element name="etablissement" type="xsd:string" />
          <xsd:element name="num_tel" type="xsd:string" />
     </xsd:sequence>
</xsd:complexType>
<xsd:element name="row" type="PersonType"/>

工作模式,(Webservice get deployment)

<xsd:complexType name="PersonType">
     <xsd:sequence>
          <xsd:element name="nom" type="xsd:string" />
          <xsd:element name="prenom" type="xsd:string" />
          <xsd:element name="date_naissance" type="xsd:date" />
          <xsd:element name="etablissement" type="xsd:string" />
          <xsd:element name="num_tel" type="xsd:string" />
     </xsd:sequence>
</xsd:complexType>

应该为xsd定义一个名称空间,并为每个复杂类型定义一个前缀。

XSD应为

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema elementFormDefault="qualified"
    targetNamespace="http://yournamespace"
    xmlns:your_prefix="http://yournamespace"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="PersonType">
        <xsd:sequence>
            <xsd:element name="nom" type="xsd:string" />
            <xsd:element name="prenom" type="xsd:string" />
            <xsd:element name="date_naissance" type="xsd:date" />
            <xsd:element name="etablissement" type="xsd:string" />
            <xsd:element name="num_tel" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="row" type="your_prefix:PersonType"/>
</xsd:schema>

最新更新