2017-02-20 2 views
0

Ich muss Zeichenfolge mit 2 Einschränkungen validieren. Die Saitenlänge ist 6. Die ersten 3 Elemente liegen zwischen [-1000-1000] und die anderen 3 Elemente liegen zwischen [-3.14 -3.14].Wie validiere Zeichenfolge, die 2 Einschränkung enthalten

Zum Beispiel: 1000 1000 900 3 2 3,14

Ich habe versucht, dies:

<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

erhalten Haben Sie etwas versucht? – Niitaku

+0

ja, ich habe den Beitrag bearbeitet –

Antwort

0

Sie können für jeden einzelnen Wert Regeln erstellen (wie Sie getan haben), aber ihre ist keine Art und Weise Zu sagen, dass eine Liste von Werten unterschiedliche Validierungsregeln für jedes Element aufweist.

Die nächste, die ich glaube, ist eine Regex (xs: pattern), die jeden Wert einschränkt. So etwas wie das

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

(ich regex Sachen nicht groß bin, aber ich denke, das ist nahe!)

Ein besserer Ansatz ist vielleicht die 6 Werte aus in separate 2 (vielleicht 6) Element zu brechen/Attribute. Dann können Sie die Validierungsregeln anwenden, die Sie bereits haben. zu jeder Gruppe von Werten.

Splitting ich den Wert über 2 Attribute würden Sie so etwas wie

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

Meine Lösung ist in der Nähe der zweiten Ansatz, teilte ich in zwei Gruppen, aber die Union funktioniert nicht für mich. –

+0

Wie kann ich zum Beispiel die Elemente für das zweite Element überprüfen? Um über den ersten zu springen. –

Verwandte Themen