gpt4 book ai didi

xml - 创建具有无限数量元素的 XML-Schema

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

我有一个具有以下结构的 XML 数据

<Data>
<Name />
<Code />
<Prodprop>
<key />
<value />
</Prodprop>
<Prodprop>
<key />
<value />
</Prodprop>
<Tag />
<Blub />
</Data>

我需要此数据的 XML 模式,但标签可以按任何顺序出现,但所有 Prodprop 都是连续的。所有其他元素只需要一次或最多一次因此以下数据也是有效的。

 <Data>
<Code />
<Name />
<Tag />
<Prodprop>
<key />
<value />
</Prodprop>
<Prodprop>
<key />
<value />
</Prodprop>
</Data>

这是我的(而且我知道这是不可能的)架构。

    <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<xsd:element name="Data" type="DataType" />
<xsd:complexType name="DataType">
<xsd:all>
<xsd:element name="Name" type="xsd:string" />
<xsd:element name="Code" type="xsd:string" />
<xsd:element maxOccurs="unbounded" name="Prodprop" type="ProdpropType" />
<xsd:element name="Tag" type="xsd:string" />
<xsd:element name="Blub" type="xsd:string" />
</xsd:all>
</xsd:complexType>
<xsd:complexType name="ProdpropType">
<xsd:sequence>
<xsd:element name="key" type="xsd:string" />
<xsd:element name="value" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

是否有可能为这个场景创建一个有效的 xml 模式?

最佳答案

我认为如果不在 xpath 中使用一些复杂的东西,你想要做的事情是不可能的。

@C。 M. Sperberg-McQueen 是对的。这是可能的,但是,如果您不想将要求更改为更简单的内容,则必须提供标签可能具有的顺序的所有可能组合。虽然这个解决方案非常复杂和麻烦,但完全合法。

一个好主意,接近您所描述的,是将 Prodprop 元素包装在另一个元素中,例如产品 list 。使用这种方法,您可以将所有 Prodprop 项目作为一个批处理,并且无论何时移动它们,它们都会作为一个整体移动。

可以在线测试here

检查这个:XSD

<xsd:schema attributeFormDefault="unqualified"
elementFormDefault="qualified" version="1.0"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Data" type="DataType" />
<xsd:complexType name="DataType">
<xsd:all>
<xsd:element name="Name" type="xsd:string" />
<xsd:element name="Code" type="xsd:string" />
<xsd:element name="ProdpropList" type="ProdpropListType" />
<xsd:element name="Tag" type="xsd:string" />
<xsd:element name="Blub" type="xsd:string" />
</xsd:all>
</xsd:complexType>

<xsd:complexType name="ProdpropListType">
<xsd:sequence>
<xsd:element name="Prodprop" type="ProdpropType"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ProdpropType">
<xsd:sequence>
<xsd:element name="key" type="xsd:string" />
<xsd:element name="value" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

XML

<Data>
<Name />
<Code />
<ProdpropList>
<Prodprop>
<key />
<value />
</Prodprop>
<Prodprop>
<key />
<value />
</Prodprop>
</ProdpropList>
<Tag />
<Blub />
</Data>

关于xml - 创建具有无限数量元素的 XML-Schema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25443405/

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