在 XSD 中定义混合元素允许 "nesting"

Defining mixed element in XSD allowing "nesting"

我面临以下问题。我需要为我的 XML 文件创建一个 XSD 模式。假设我有几个 "Conversation Objects" 个节点:

这些是我能够在 XSD 中描述的简单元素。然后我有一个特别的叫:

这种元素的结构如下:

<yesOrNoAnswer actor="" bar="" points="" percentage=""> message text
    <yes>
    ...
    </yes>
    <no>
    ...
    </no>
</yesOrNoAnswer>

在那些 "yes" 和 "no" 节点中,我可以重复使用开头定义的任何简单 "Conversation Objects" 或 "yesOrNoAnswer" 节点,允许嵌套我想要多少级别。如何在 XSD 中定义整个 "yesOrNoAnswer" 节点(包括属性、文本、"yes" 和 "no" 节点)?提前致谢!

XSD 1.0

此 XSD 将代表您描述的约束并验证您的 XML:

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

  <xs:group name="ConversationObjectGroup">
    <xs:choice>
      <xs:element name="Message"/>
      <xs:element name="End"/>
      <xs:element name="Effect"/>
    </xs:choice>
  </xs:group>

  <xs:element name="yesOrNoAnswer" type="YesOrNoAnswerType"/>

  <xs:complexType name="YesOrNoAnswerType" mixed="true">
    <xs:sequence>
      <xs:element name="yes" type="yesOrNoType"/>
      <xs:element name="no" type="yesOrNoType"/>
    </xs:sequence>
    <xs:attribute name="actor"/>
    <xs:attribute name="bar"/>
    <xs:attribute name="points"/>
    <xs:attribute name="percentage"/>
  </xs:complexType>

  <xs:complexType name="yesOrNoType" mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:group ref="ConversationObjectGroup"/>
      <xs:element ref="yesOrNoAnswer"/>
    </xs:choice>
  </xs:complexType>

</xs:schema>