使用xsd:all意味着;无法分析XML架构";在记事本中++;

使用xsd:all意味着;无法分析XML架构";在记事本中++;,xsd,schema,notepad++,Xsd,Schema,Notepad++,我已经花了两天时间试图解决这个问题,我花了4个小时在互联网上检查我做错了什么,但没有任何成功。。。我希望你能帮助我 我正在尝试使用Notepad++创建XML模式。我想做的是:我有一个叫做a的主元素。在这个元素中,我将有子元素1,2,3和4。所有thos元素都将有自己的SimpleType作为属性(我将它们作为示例的元素) 我的XSD是这样的: <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualifi

我已经花了两天时间试图解决这个问题,我花了4个小时在互联网上检查我做错了什么,但没有任何成功。。。我希望你能帮助我

我正在尝试使用Notepad++创建XML模式。我想做的是:我有一个叫做a的主元素。在这个元素中,我将有子元素1,2,3和4。所有thos元素都将有自己的SimpleType作为属性(我将它们作为示例的元素)

我的XSD是这样的:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="TEST" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="A">
    <xs:complexType>
      <xs:sequence>
      <xs:element name="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="id"/>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="comment"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      <xs:element name="2">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="id"/>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="comment"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      <xs:element name="3">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="id"/>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="comment"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      <xs:element name="4">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="id"/>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="comment"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

关键是我的XML可以是:

<A>
  <3>
    <id>20130</id>
    <name>test</name>
    <comment>Test</comment>
  </3>
  <4>
    <id>98654</id>
    <name>test2</name>
    <comment>Test2</comment>
  </4>
</A>

20130
测试
试验
98654
测试2
测试2
因此,当使用sequence时,我得到一个错误,因为它预期为1。当使用choice时,它不需要4(但只需要3)。使用all,Notepad++告诉我“无法解析XML模式”

注意:我想保留4在3之前出现的可能性,并且我可以多次出现1、2、3或4。使用minOccur和maxoccure可能是一个答案(但因此我必须尊重1、2、3和4的顺序)

非常感谢你的帮助


问候

我想我明白了!通过将xs:sequence替换为xs:choice minoccurs=0 maxoccurs=“unbounded”,我可以写任何我想要的,任何顺序!您的模式中还有一些其他问题;最重要的是,
1
2
3
4
在XML中不是合法的标识符,因此在XSD中不是合法的元素名称。如果您希望四个子元素中的每一个子元素最多有一个,请使用xs:all,而不是重复选择。