xsd中基于标记值的约束

xsd中基于标记值的约束,xsd,xsd-validation,Xsd,Xsd Validation,我必须根据标记值在下面的xml上创建约束 <struct> <member> <name>Identifier</name> <value><i4>11002</i4></value> </member> <member> <name>StartDate</name> <value><dateTime.iso8601>201607

我必须根据标记值在下面的xml上创建约束

<struct>
<member>
<name>Identifier</name>
<value><i4>11002</i4></value>
</member>
<member>
<name>StartDate</name>
<value><dateTime.iso8601>20160701T12:00:00+0000</dateTime.iso8601>      
</value>
</member>
<member>
<name>Type</name>
<value><i4>0</i4></value>
</member>
</struct>

标识符
11002
起始日期
20160701T12:00:00+0000
类型
0
我创建的xsd格式就像,它只是代码的简短形式,使用在线工具生成

<xs:element minOccurs="0" name="struct">
    <xs:complexType>
         <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="member">
                <xs:complexType>
                     <xs:sequence>
                         <xs:element minOccurs="0" name="name" type="xs:string" />
                         <xs:element minOccurs="0" name="value">
                         <xs:complexType>
                            <xs:sequence>
                                <xs:element minOccurs="0" name="string" type="xs:string" />
                            </xs:sequence>
                         </xs:complexType>
                        </xs:element>
                     </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

我需要的是对startDate进行约束,确保它的格式正确。
标识符的长度只有5到10位。

您的XML设计过于元化,因此阻碍了您使用XSD 1.0表达数据值约束的能力

您可以执行以下操作之一:

  • 重新设计XML以使用具体的标记名,如
    标识符
    起始日期
  • i4
    dateTime.iso8601
    约束在
    name
    之外
  • 使用XSD 1.1断言根据
    名称
  • 建议您选择#1