Actionscript 3 如何在XSD中使用complexTypes设计列表

Actionscript 3 如何在XSD中使用complexTypes设计列表,actionscript-3,xsd,schema,Actionscript 3,Xsd,Schema,我在将AS3类转换为XML时遇到问题。 有一个列表-items:Array,其中包含可能的类 class ImageVO extends BaseSceneElementVO class ShapeVO extends BaseSceneElementVO 需要转换: <xs:element name="items" type="imageList"/> 其中: <xs:complexType name="imageList"> <!-- here i'm

我在将AS3类转换为XML时遇到问题。 有一个列表-items:Array,其中包含可能的类

class ImageVO extends BaseSceneElementVO
class ShapeVO extends BaseSceneElementVO
需要转换:

<xs:element name="items" type="imageList"/>

其中:

<xs:complexType name="imageList">
<!-- here i'm hesitate-->
    <xs:choice>
        <xs:element name="Image" type="Image" minOccurs="0" maxOccurs="unbounded" />
        <xs:element name="Shape" type="Shape" minOccurs="0" maxOccurs="unbounded" />
    </xs:choice>
</xs:complexType>

    <xs:complexType name="Image">
        <xs:complexContent>
            <xs:extension base="BaseSceneElement">
                <xs:sequence>
                    <xs:element .../>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="Shape">
        <xs:complexContent>
            <xs:extension base="BaseSceneElement">
                <xs:sequence>
                    <xs:element .../>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="BaseSceneElement">
        ...
    </xs:complexType>

...
如果我将ShapeVOImageVO放入数组,我将得到下一个结果

<items>
      <Image/>
      <Image/>
      <Shape/>
      <Shape/>
</items>

i、 g.每个对象在图像形状中转换。 我需要设计XSD结构,但我不知道如何设计

我试着去理解,但没有意义。
请帮帮我

我假设您需要一个与您的类匹配的XSD,即扩展BaseSceneElementVO的多态选择列表;这将与您给出的示例XML相匹配

在XSD中(您犹豫的部分):


这是一个列表选择:一个
元素的列表一个
元素的列表-因此它不是一个混合它们的列表,而是一个只包含
的列表。但为了匹配类并验证示例XML,您需要一个选择列表,如下所示:

<xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="Image" type="Image" />
    <xs:element name="Shape" type="Shape" />
</xs:choice>

使用表达式符号进行总结:您有
i*| s*
,但您需要
(i | s)*


顺便说一句:您也可以使用替换组,但这些不太清楚,有点罕见,我知道并不是所有的工具都支持它们。

非常感谢您的快速响应。我使用的是来自mx.rpc.xml包的standart Adobe工具,但似乎不支持选项列表(我将尝试使用替代组,但我是这方面的新手。有人能帮我吗?提前谢谢。@adellantado很奇怪,你说选择列表不受支持-它是基本的。我刚刚检查了mx.rpc.xml,xml序列化类的唯一对象是[SimpleXMLEncoder](-这根本不使用xml模式。我认为,如果您退后一步,重新定义您想在问题中实现什么(以及为什么要实现什么),这会很有帮助-可能有一种更简单的方法来实现它。mx.rpx.xml中的大多数类都标有元数据“[ExcludeClass],所以我在我的src和comment标签中复制了这个包。如果我使用选择列表,你可以找到更多信息,抛出错误-绝对疯狂:“字符串‘myArray’不是布尔值。”。我尝试了更多的实验,但没有意义。谢谢
<xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="Image" type="Image" />
    <xs:element name="Shape" type="Shape" />
</xs:choice>