gpt4 book ai didi

作为特定复杂类型的扩展的任何类型元素的 xsd 序列

转载 作者:行者123 更新时间:2023-12-04 16:59:37 31 4
gpt4 key购买 nike

基本上,如果这是 .NET,它看起来像这样:

ISomething
{
string A { get; }
int B { get; }
}

var somethings = new List<ISomething>();
something.Add(new SomethingSomething());
something.Add(new AnotherSomething());
something.Add(new AnythingSomething());

基本上,我希望元素序列可以任意命名,只要它们的复杂类型是我定义的复杂类型的扩展。

所以它可能看起来像:
<somethings>
<something-something a="foo" b="0" />
<another-something a="bar" b="1" />
<example:anything-something a="baz" b="2" />
</somethings>

我确定这是可能的,我猜的替代方案是组合,其中我有一个标准元素,该元素可以包含一个至少是“某物”的 child 。

提前致谢,xsd 不是我的强项。

编辑,好的,到目前为止我发现的最接近的东西基本上是:
<somethings>
<something xsi:type="something-something" a="foo" b="0" />
<something xsi:type="another-something" a="bar" b="1" />
<something xsi:type="example:anything-something" a="baz" b="2" />
</somethings>

我想这是唯一的处理方式吗?如果是这样,这还不算太糟糕,而且 vs 智能感知似乎已经足够了解这一点。

谢谢。

最佳答案

这是一个很好的问题。您可以执行一系列“any”,这将允许您在内部任意命名元素 - 但这不会以任何方式限制它们。或者,下面的架构限制了名称和属性,但没有其他限制(如您的第二个示例)

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="somethingsType" >
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:attribute name="a" type="xs:string"/>
<xs:attribute name="b" type="xs:string"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="somethingsSeq" >
<xs:sequence>
<xs:element name="something" type="somethingsType"/>
</xs:sequence>
</xs:complexType>

<xs:element name="somethings" type="somethingsSeq"/>

</xs:schema>

我找不到限制类型而不是元素名称的方法。

关于作为特定复杂类型的扩展的任何类型元素的 xsd 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2007221/

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