2017-05-10 9 views
1

私は、曜日のショートネームの1から7をリストする要素にパターンマッチを使用しようとしています。私はそこで一致したオンラインツールでパターンを作成しようとしましたが、XSDで失敗して検証されました。要素が入ってくることができXSD週の1日以上の制限

サンプルの方法。

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

私は、次の正規表現パターンを作成するためのhttp://www.regexpal.com/を使用。私は、サイト上で動作する、以下を使用してみました:

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

それを:ここXSDで要素の

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

、参照:以下単純に適用

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

いずれかのパターン制限のためにこのメッセージで失敗します:

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. 

私はサイトの '/'と '/ g'の適用を試みたこともあります。同じ失敗メッセージが表示されます。

答えて

1

使用xs:listではなく、列挙値のスペースで区切られたリストのための正規表現より:

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

おかげで、チェックするために必要なものを取り扱い、任意のスペルミス、下例不慮の使用のためにerror'dが、1することができますまたはそれ以上の空白。私は今これを使用して、好きではない許容可能な複数の時間数に対して正規表現を置き換えることができます。十分に固く感じられませんでした。 – langc334