gpt4 book ai didi

xml - 编写 XSD 以允许可扩展元素

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

我想编写一个 XSD 来验证 XML 文件。 XML 文件的示例可能如下所示:

<person>
<fullname>John Doe</fullname>
<age>25</age>
<gender>male</gender>
</person>

其中一个要求是 <person>标签是可扩展的,这意味着除了上面 3 个必需的子元素之外,它还可以包含任意名称的任意元素。因此,当 XSD 验证该文档时,该文档将有效。

 <person>
<fullname>John Doe</fullname>
<age>25</age>
<gender>male</gender>
<address>USA</address>
<profession>worker</profession>
</person>

我读到了 <xs:any />元素,但 XSD 不允许我放置 <xs:any /><xs:all /> 里面元素。我想要 <fullname> , <gender><age>元素是必需的,并且每个元素都必须恰好出现一个。除此之外,可以有零个或多个可选元素。

是否可以使用受支持的 XSD 规则实现此目的?

最佳答案

组合 xs:all 和 xs:any 可以创建模棱两可的内容,这就是不允许这样做的原因。但是如果内容包含在 xs:sequence 中,您可以这样做。

注意:确保 xs:any 上的命名空间和 processContent 属性已根据您的要求正确设置。

他们使用 xs:openContent 更好地支持 XSD 1.1 中的这种可扩展性标记,但是支持 XSD 1.1。仍然有限。

enter image description here

 <?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid XML 2016 Developer Bundle Edition 14.1.3.6618 (https://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="fullname" type="xs:string" />
<xs:element name="age" type="xs:int" />
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="male" />
<xs:enumeration value="female" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:any namespace="##any" processContents="skip" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

关于xml - 编写 XSD 以允许可扩展元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14491056/

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