0

我有一个 XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.xyz.m" xmlns="http://www.xyz.m" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="N1" minOccurs="0">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="N_A">
            <xs:simpleType>
                <xs:restriction base="xs:byte">
                <xs:minInclusive value="0"/>
                <xs:maxInclusive value="3"/>
                <xs:totalDigits value="2">
                </xs:totalDigits>
            </xs:restriction>
                </xs:simpleType>
            </xs:element>
        <xs:element name="N_B" minOccurs="1" maxOccurs="14">
            <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="5"/>
                <xs:enumeration value="6"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
    </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>    

我创建了一个.xjb文件来生成:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">
   <jaxb:bindings node="//xs:schema//xs:complexType[@name='N1']">
        <jaxb:class name="N1_XJB" />
    </jaxb:bindings>    
</jaxb:bindings>

我使用xjc -b binding.xjb TestXSD.xsd了命令,但收到了以下错误消息:

[ERROR] XPath evaluation of "//xs:schema//xs:complexType[@name='N1']" results in empty target node line 6 

我尝试了在 Stackoverflow 上找到的所有方法,但无法生成。

所以我的问题是,.xjb文件中缺少什么?

4

1 回答 1

1

这对我有用:

  1. minOccurs您必须从中删除<xs:element name="N1" minOccurs="0">。因为这个属性会产生如下错误:

[ERROR] s4s-att-not-allowed: Attribute 'minOccurs' cannot appear in element 'element'.

  1. .xjb文件中,您必须更改以下行:

<jaxb:bindings node="//xs:schema//xs:complexType[@name='N1']">

至:

<jaxb:bindings schemaLocation="TestXSD.xsd" node="//xs:schema//xs:element[@name='N1']">
于 2020-07-28T15:19:07.483 回答