我需要验证2个限制的字符串。字符串长度为6.前3个元素在[-1000-1000]之间,其他3个元素在[-3.14 -3.14]之间。
例如:1000 1000 900 3 2 3.14
我试过这个:
<xs:complexType name="aaa">
<xs:simpleContent>
<xs:extension base="bb">
<xs:attribute name="size" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="bb">
<xs:union memberTypes="listtry listtry2 ">
</xs:union>
</xs:simpleType>
<xs:simpleType name="listtry">
<xs:restriction base="mytry">
<xs:length value="6"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mytry">
<xs:list itemType="try1"></xs:list>
</xs:simpleType>
<xs:simpleType name="try1">
<xs:restriction base="xs:double">
<xs:maxInclusive value="100000"/>
<xs:minInclusive value="-100000"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="listtry2">
<xs:restriction base="mytry2">
<xs:length value="6"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mytry2">
<xs:list itemType="tryPI"> </xs:list>
</xs:simpleType>
<xs:simpleType name="tryPI">
<xs:restriction base="xs:double">
<xs:maxInclusive value="3.14"/>
<xs:minInclusive value="-3.14"/>
</xs:restriction>
</xs:simpleType>
答案 0 :(得分:0)
您可以为每个单独的值创建规则(正如您所做的那样),但是他们无法说每个元素的值列表都有不同的验证规则。
我认为你最接近的是一个限制每个值的正则表达式(xs:pattern)。像这样的东西
- ?\ d {1,4} - ?\ d {1,4} - ?\ d {1,4} - ?\ d(。\ d +)? - ?\ d(\ d +)? - ?\ d(。\ d +)
(我对正则表达式的东西并不擅长,但我认为这很接近!)
更好的方法可能是将6个值分解为单独的2个(可能是6个)元素/属性。然后,您可以应用已有的验证规则。每组价值观。
我将2个属性的值拆分为
<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio 2017 (https://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Thing">
<xs:complexType>
<xs:attribute name="Values3x1000" type="list3Value1000Type" />
<xs:attribute name="Value3Pi" type="list3ValuePiType" />
</xs:complexType>
</xs:element>
<xs:simpleType name="value1000Type">
<xs:restriction base="xs:double">
<xs:maxInclusive value="1000" />
<xs:minInclusive value="-1000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="listValue1000Type">
<xs:list itemType="value1000Type" />
</xs:simpleType>
<xs:simpleType name="list3Value1000Type">
<xs:restriction base="listValue1000Type">
<xs:length value="3" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="valuePiType">
<xs:restriction base="xs:double">
<xs:maxInclusive value="3.14" />
<xs:minInclusive value="-3.14" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="listValuePiType">
<xs:list itemType="valuePiType" />
</xs:simpleType>
<xs:simpleType name="list3ValuePiType">
<xs:restriction base="listValuePiType">
<xs:length value="3" />
</xs:restriction>
</xs:simpleType>
</xs:schema>