JAXB生成XSD验证错误“Unique Particle Attribution”

时间:2016-03-11 16:13:13

标签: java validation xsd jaxb

我有一个JAXB类,它有一个来自另一个命名空间的元素。我想有一个ANY元素,它收集JAXB类中没有描述的所有元素。所以我添加了Bluetooth注释@XmlAnyElement。

我已经从JAXB类生成了一个XSD,但是当我验证时我收到一个错误:“cos-nonambig:”nb“:b和WC [## other:”“](或替换它们的元素) group)违反“Unique Particle Attribution”。在针对此模式进行验证期间,将为这两个粒子创建歧义。“

JAXB类

List<Object>

JAXB生成的XSD

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
public class Foo {

  @XmlElement
  String a;

  @XmlElement(namespace="nb")
  Bar b;

  @XmlAnyElement
  List<Object> other;
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:ns1="nb" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:import namespace="nb" schemaLocation="schema1.xsd"/>

  <xs:complexType name="foo">
    <xs:sequence>
      <xs:element name="a" type="xs:string" minOccurs="0"/>
      <xs:element ref="ns1:b" minOccurs="0"/>
      <xs:any processContents="skip" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bar">
    <xs:sequence>
      <xs:element name="bid" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

我应该如何添加XmlAnyElement来传递验证?

0 个答案:

没有答案