Java 使用选项时发生XSD验证错误
我需要元素A或元素B,或者两者都需要。如果我使用choices,那么它会抛出一个异常元素'A'不能有字符[children],因为该类型的内容类型是Element only。 如何达到预期的效果Java 使用选项时发生XSD验证错误,java,xml,validation,xsd,Java,Xml,Validation,Xsd,我需要元素A或元素B,或者两者都需要。如果我使用choices,那么它会抛出一个异常元素'A'不能有字符[children],因为该类型的内容类型是Element only。 如何达到预期的效果 <xsd:complexType> <xsd:sequence> <xsd:element name="A"> <xsd:complexType>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="A">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="C"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="B"/>
</xsd:sequence>
</xsd:complexType>
示例XML是
<start>
<A>
<C>hhg</C>
</A>
</start>
<start>
<A>
<C>hhg</C>
</A>
<B>fgeg</B>
</start>
<start>
<B>fergf</B>
</start>
hhg
hhg
fgeg
费格夫
使用minOccurs=“0”
,例如:
<xs:element name="A" minOccurs="0">
...
<xs:element name="B" minOccurs="0"/>
...
对于XML:
<root>
<start>
<A>
<C>hhg</C>
</A>
</start>
<start>
<A>
<C>hhg</C>
</A>
<B>fgeg</B>
</start>
<start>
<B>fergf</B>
</start>
</root>
hhg
hhg
fgeg
费格夫
适当的XSD应为:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="start">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="A">
<xs:complexType>
<xs:sequence>
<xs:element name="C" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="B" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
使用minOccurs=“0”
,例如:
<xs:element name="A" minOccurs="0">
...
<xs:element name="B" minOccurs="0"/>
...
对于XML:
<root>
<start>
<A>
<C>hhg</C>
</A>
</start>
<start>
<A>
<C>hhg</C>
</A>
<B>fgeg</B>
</start>
<start>
<B>fergf</B>
</start>
</root>
hhg
hhg
fgeg
费格夫
适当的XSD应为:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="start">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="A">
<xs:complexType>
<xs:sequence>
<xs:element name="C" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="B" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这在氧气中验证正常…
这在氧气中验证正常…即使我给出minOccurs=“0”,我也会得到相同的错误。我假设这是因为元素A中有一个复杂类型C@Abhishek,提供示例XML。为了更好地查看,我还添加了有问题的示例XML。谢谢Kirill。即使我给出minOccurs=“0”,也会得到同样的错误。我假设这是因为元素A中有一个复杂类型C@Abhishek,提供示例XML。为了更好地查看,我还添加了有问题的示例XML。谢谢Kirill。这很有帮助