2017-05-10 3 views
1

Ich versuche eine Musterübereinstimmung für ein Element zu verwenden, das zu mir kommt, das 1 bis 7 der Kurznamen für den Wochentag auflistet. Ich habe versucht, ein Muster in einem Online-Tool zu erstellen, das dort übereinstimmte, aber in der XSD fehlschlägt und validiert.XSD Einschränkung für 1 oder mehr Wochentage

Elemente Beispiel Wegen können in kommen.

<DayOfWeek>Mon Tue Wed Thu Fri Sat Sun </DayOfWeek> 
<DayOfWeek>Mon Wed Fri </DayOfWeek> 

I verwendet http://www.regexpal.com/ die folgenden RegexMuster helfen zu erstellen. Ich habe versucht, die folgenden verwendet, die auf dem Gelände arbeiten:

(Mon)?(Tue)?(Wed)?(Thu)?(Fri)?(Sat)?(Sun)?[ ]+ 
(Mon[ ]+)?(Tue[ ]+)?(Wed[ ]+)?(Thu[ ]+)?(Fri[ ]+)?(Sat[ ]+)?(Sun[ ]+)? 

Wenn in der folgenden simple angewendet:

<xs:simpleType name="ValidDays"> 
    <xs:restriction base="xs:token"> 
     <xs:pattern value="(Mon[ ]+)?(Tue[ ]+)?(Wed[ ]+)?(Thu[ ]+)?(Fri[ ]+)?(Sat[ ]+)?(Sun[ ]+)?" /> 
    </xs:restriction> 
</xs:simpleType> 

Und hier in der XSD für das Element verwiesen:

<xs:element name="DayOfWeek"> 
       <xs:complexType> 
        <xs:simpleContent> 
         <xs:extension base="ValidDays" /> 
        </xs:simpleContent> 
       </xs:complexType> 
       </xs:element> 

es schlägt mit dieser Nachricht für jede Mustereinschränkung fehl:

The 'DayOfWeek' element is invalid - The value 'Mon Tue Wed Thu Fri Sat Sun ' is invalid according to its datatype 'Token' - The Pattern constraint failed. 

Ich habe sogar versucht, die "/" und "/ g" von der Website, nur für den Fall, und ich bekomme die gleiche Fehlermeldung.

Antwort

1

Verwenden xs:list anstatt regex für Leerzeichen getrennte Listen aufgezählten Werte:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="DayOfWeek"> 
    <xs:simpleType> 
     <xs:restriction> 
     <xs:simpleType> 
      <xs:list itemType="ValidDays"/> 
     </xs:simpleType> 
     <xs:minLength value="1"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
    <xs:simpleType name="ValidDays"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Sun"/> 
     <xs:enumeration value="Mon"/> 
     <xs:enumeration value="Tue"/> 
     <xs:enumeration value="Wed"/> 
     <xs:enumeration value="Thu"/> 
     <xs:enumeration value="Fri"/> 
     <xs:enumeration value="Sat"/> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 
+0

Danke, behandelt, was geprüft werden mussten und error'd heraus für jede falsche Schreibweise, versehentliche Verwendung von Kleinbuchstaben, aber erlaubt 1 oder mehr Leerzeichen. Ich kann das jetzt auch verwenden, um eine Regex für akzeptable mehrstündige Zahlen zu ersetzen, die ich nicht mochte, sie fühlte sich nicht solide genug an. – langc334

Verwandte Themen