gpt4 book ai didi

xml - 使用 'choice' 和 'extension' 元素验证 XSD 时出现问题

转载 作者:数据小太阳 更新时间:2023-10-29 02:43:12 25 4
gpt4 key购买 nike

我将发布两个示例,一个可以验证,一个没有。我有兴趣了解为什么第二个不起作用,因为它们非常相似。

示例 1(验证)

xsd:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<xsd:element name="root" type="BBB"/>
<xsd:complexType name="AAA">
<xsd:choice maxOccurs="2">
<xsd:element name="x" type="xsd:string"/>
<xsd:element name="y" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="BBB">
<xsd:complexContent>
<xsd:extension base="AAA"/>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>

xml:

<root xsi:noNamespaceSchemaLocation="incorrect.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<x>1</x>
<y>1</y>
</root>

示例 2(未验证)

xsd:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<xsd:element name="root" type="BBB"/>
<xsd:complexType name="AAA">
<xsd:choice maxOccurs="2">
<xsd:element name="x" type="xsd:string"/>
<xsd:element name="y" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="BBB">
<xsd:complexContent>
<xsd:extension base="AAA">
<xsd:choice>
<xsd:element name="z" type="xsd:string"/>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>

xml:(同例1)

<root xsi:noNamespaceSchemaLocation="incorrect.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<x>1</x>
<y>1</y>
</root>

为了节省您对 xsd 运行差异的时间,唯一的区别是在第二个示例中复杂类型 BBB 有一个 <choice>

xmllint 对示例 2 的说明如下:

$ xmllint --noout --schema example2.xsd example2.xml

example2.xml:3: element y: Schemas validity error : Element 'y': This element is not expected. Expected is ( z ).

example2.xml fails to validate


示例松散地基于 http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_ext_patterns_st1.html

最佳答案

在无效案例的 xml 中,您缺少必需的“z”元素。

<root xsi:noNamespaceSchemaLocation="incorrect.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<x>1</x>
<y>1</y>
<z>1</z>
</root>

DecisionsSoft's Validator 上验证和 xmlme's validator

关于xml - 使用 'choice' 和 'extension' 元素验证 XSD 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com