在元素A下面可以有B,C,D这三种元素,它们的出现顺序是随机的,而B和C最多只能出现一次,但D可以出现任意次数。比如:<A>
  <B />
  <C />
  <D />
</A><A>
  <C />
  <B />
</A><A>
  <D />
  <D />
  <B />
</A>以上都可以认为是合法的,而下面的是不合法的,因为B出现了两次。<A>
  <B />
  <B />
  <D />
</A>

解决方案 »

  1.   

    <xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema>
        <xsd:element name=”D” type=”xsd:string” minOccurs=”0” maxOccurs=”unbounded” />
     <xsd:element name=”name”>
            <xsd:complexType>
                <xsd:all minOccurs=”0”>
                    <xsd:element name=”B” type=”xsd:string” />
                    <xsd:element name=”C” type=”xsd:string” />
                </xsd:all>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>参考:http://www.cnblogs.com/tomin/archive/2009/04/02/1427742.html
      

  2.   

    晕倒,xs:all不能用在xs:extension下面。有没有什么更好的解决办法?
      

  3.   

    http://social.msdn.microsoft.com/Forums/zh-SG/xmlandnetfx/thread/5f0354db-7777-4c87-a9cc-42e1f03db18a
    这里描述的方案似乎可以满足你的需求
      

  4.   

    <A>
      <B />
      <C />
      <D />
    </A><A>
      <C />
      <B />
    </A><A>
      <D />
      <D />
      <B />
    </A>把这个XML保存成一个xml文件
    然后打开Visual Studio Tools中的命令行,输入命令 XSD 文件名.xml
    就可以生成xsd文件了,