无序强制和可选标记的XSD架构

时间:2012-09-14 06:44:37

标签: xsd

我想表达在XSD中重复发生的无序强制和可选标记。 任何人都能说出如何解决这个问题吗? 如果不可行,可以采取什么方法。

更新

<xs:element name="Tag1" type="xs:string" />
<xs:element name="Tag2" type="xs:string" />
<xs:element name="Tag3" type="xs:string" maxoccurs="Unbounded"/> 

所有这些标签都显示在Complext类型下,tag1和tag2是必需的。 tag3是可选的,可以发生任意次。 tag1,tag2和tag3可以按任何顺序出现

1 个答案:

答案 0 :(得分:1)

您可以使用“all”组选择器并使用minOccurs来表示强制性。

<xs:schema xmlns="http://Message1" targetNamespace="http://Message1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:all>
        <xs:element name="TheValue" type="xs:string" />
        <xs:element name="TheValue2" type="xs:string" minOccurs="0" />
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>

这是正确的:

<ns0:Root xmlns:ns0="http://BizTalk_Server_Project1.Message1">
  <TheValue2>somevalue</TheValue2>
  <TheValue>somevalue</TheValue>
</ns0:Root>

所以:

<ns0:Root xmlns:ns0="http://BizTalk_Server_Project1.Message1">
  <!--<TheValue2>somevalue</TheValue2>-->
  <TheValue>somevalue</TheValue>
</ns0:Root>

但不是这样:

<ns0:Root xmlns:ns0="http://BizTalk_Server_Project1.Message1">
  <!--<TheValue2>somevalue</TheValue2>-->
  <!--<TheValue>somevalue</TheValue>-->
</ns0:Root>