复选框类型的字段具有XML架构
我有以下一段XSD:复选框类型的字段具有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: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”
则可以拥有所有元素。但是现在您可以多次选择相同的元素,因此必须限制它,这就是
发挥作用的地方
但是请注意,这个示例并非没有限制,因为您不能限制元素的顺序(即加强
限制)