2013-11-15 38 views
0

试图解决这个问题,任何帮助将不胜感激。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不完整,将无法正常工作,但我显然还没有结束。

再次感谢

回答

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教程。