复选框类型的字段具有XML架构

复选框类型的字段具有XML架构,xml,xsd,Xml,Xsd,我有以下一段XSD: <xsd:complexContent> <xsd:extension base="mes:Request"> <xsd:sequence> <xsd:element name="empId" type="xsd:string"/> <xsd:element name="empTaskId" type="xsd:int"/>

我有以下一段XSD:

<xsd:complexContent>
    <xsd:extension base="mes:Request">
         <xsd:sequence>
           <xsd:element name="empId" type="xsd:string"/>
           <xsd:element name="empTaskId" type="xsd:int"/>
           <xsd:element name="empStateName" type="xsd:string"/>
           <xsd:element name="empTypeName" type="xsd:string"/>
           <xsd:element name="empActionName" type="xsd:string"/>
           <xsd:element name="empTransactionId" type="xsd:int"/>                               
        </xsd:sequence>
    </xsd:extension>
</xsd:complexContent>

我想要的是,只允许从
中列出的任何字段中选择一个必填字段。我尝试使用
,但它的行为就像单选按钮;我想要复选框的功能(1个或多个字段-多选)


有谁能帮助我实现这一点吗?

当您开始进入“验证逻辑”时,您就遇到了XML模式的局限性。XML Schema无法做到这一点,因此您需要在应用程序的较低层中使用XML Schema执行基本验证,而在较高层中则需要加强XML Schema无法处理的逻辑,或者

除此之外,我所能想到的用XML模式强制实现您的需求的最好方法是:

<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="http://tempuri"
            elementFormDefault="qualified"
            xmlns:t="http://tempuri"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Demo">
    <xsd:complexType>
      <xsd:choice minOccurs="1" maxOccurs="6">
        <xsd:element name="empId" type="xsd:string"/>
        <xsd:element name="empTaskId" type="xsd:int"/>
        <xsd:element name="empStateName" type="xsd:string"/>
        <xsd:element name="empTypeName" type="xsd:string"/>
        <xsd:element name="empActionName" type="xsd:string"/>
        <xsd:element name="empTransactionId" type="xsd:int"/>
      </xsd:choice>
    </xsd:complexType>
    <xsd:unique name="unique1">
      <xsd:selector xpath="."/>
      <xsd:field xpath="t:empId"/>
    </xsd:unique>
    <xsd:unique name="unique2">
      <xsd:selector xpath="."/>
      <xsd:field xpath="t:empTaskId"/>
    </xsd:unique>
    <xsd:unique name="unique3">
      <xsd:selector xpath="."/>
      <xsd:field xpath="t:empStateName"/>
    </xsd:unique>
    <xsd:unique name="unique4">
      <xsd:selector xpath="."/>
      <xsd:field xpath="t:empTypeName"/>
    </xsd:unique>
    <xsd:unique name="unique5">
      <xsd:selector xpath="."/>
      <xsd:field xpath="t:empActionName"/>
    </xsd:unique>
    <xsd:unique name="unique6">
      <xsd:selector xpath="."/>
      <xsd:field xpath="t:empTransactionId"/>
    </xsd:unique>
  </xsd:element>
</xsd:schema>

您可以使用
元素仅选择一种类型的元素,并使用
minOccurs=“1”
,这样您至少可以拥有其中一种元素,而
maxOccurs=“6”
则可以拥有所有元素。但是现在您可以多次选择相同的元素,因此必须限制它,这就是
发挥作用的地方

但是请注意,这个示例并非没有限制,因为您不能限制元素的顺序(即加强
限制)