XSD - 最大的孩子?

时间:2013-11-15 12:18:28

标签: xml xml-parsing xsd

尝试解决这个问题,我们将不胜感激。

我有一个xml文件,如下所示:

<?xml version="1.0" ?> 
<test>
<Name>Folder exists check</Name>
<type>
    <DoesFolderExist>
        Synchronisation Errors
    </DoesFolderExist>
</type>
</test>

对于<type>部分,我希望我的xsd只能有一个孩子,但实际类型可能会有所不同,可能不一定是“DoesFolderExist” - 它可能是“FolderCount”,或者随你。基本上,它只能有一个孩子,但该孩子可能是我的用户可以选择的任何预定义类型之一。我可以在这里得到一个简单的例子,说明如何在我的xsd中列出它吗?

这是我目前所拥有的,而且我不确定从哪里开始:

       string XSDMarkup = 
        @"xsd:schema xmlns:xsd='http://www.ws.org/2001/XMLSchema'>
            <xsd:element name='tests'>
                <xsd:sequence>
                    <xsd:element name='test' minOccurs='1'/>
                    <xsd:element name='type' minOccurs='1' maxOccurs='1'>
                        <xsd:sequence>
                            <xsd:element
        "; 

我知道上面的xsd是不完整的,不起作用,但我显然还没有完成。

再次感谢

1 个答案:

答案 0 :(得分:0)

您想要type元素的类型选择,而不是序列。

您的架构文档还有其他问题:特别是,元素的类型必须使用type属性或作为元素声明的子元素出现的类型定义来给出。因此,tests(例如)的声明应采用

形式
<xsd:element name='tests'>
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="test"> ... </xsd:element>
      <xsd:element name="type"> ... </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

使用优秀的XSD教程花半小时的时间可能是值得的。