2017-02-20 55 views
0

我需要驗證具有2個限制的字符串。字符串長度爲6.前3個元素在[-1000-1000]之間,其他3個元素在[-3.14 -3.14]之間。如何驗證包含2個限制的字符串

例如: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

你嘗試過什麼? – Niitaku

+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> 

Liquid XML Simple Types

+0

我的解決方案接近第二種方法,我分爲兩組,但工會不適合我。 –

+0

如何檢查第二個元素的元素,例如?跳過第一個。 –

相關問題