2017-02-20 6 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

のようなものになるだろう2つの属性間で値を分割するには、あなたは何をしようとしたことがありますか? – Niitaku

+0

はい、投稿を編集しました –

答えて

0

(あなたが行ったように)あなたは、個々の値のルールを作成することができますが、何の道は自分ではありませんが言い換えれば、値のリストには各要素のバリデーションルールが異なります。

あなたが得ようとしているのは、各値を制限する正規表現(xs:pattern)です。このようなもの

- ?\ d {1,4} - ?\ d {1,4} - ?\ d(?\ d +)? - ?\ d(。\ d +)? - ?\ d(。\ d +)?

(私は正規表現のもので素晴らしいではありませんが、私はこれが近いと思います!)

より良いアプローチは、おそらく別の2(多分6)要素/属性に6つの値を抜け出すことです。次に、すでに持っている検証ルールを適用することができます。各値のグループに割り当てます。

私はあなたが

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

私の解決策は2番目のアプローチに近いです。私は2つのグループに分かれていますが、組合は私のために働いていません。 –

+0

たとえば、2番目の要素の要素を確認するにはどうすればよいですか?最初に飛び越す –

関連する問題