Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用选项时发生XSD验证错误_Java_Xml_Validation_Xsd - Fatal编程技术网

Java 使用选项时发生XSD验证错误

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>

我需要元素A或元素B,或者两者都需要。如果我使用choices,那么它会抛出一个异常元素'A'不能有字符[children],因为该类型的内容类型是Element only。 如何达到预期的效果

        <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。这很有帮助