2010-11-19 32 views
6

文字列が長い8つの文字であるために、私は、XSD内のスキーム規則を定義しようとしている:XSD正規表現パターン:このオアナッシング

<PostedDate>42183296</PostedDate> 

と空間充填も許可されている:

XSDに私を導いた
<PostedDate>  </PostedDate> 

<xs:simpleType name="DateFormat"> 
    <xs:restriction base="xs:string"> 
     <xs:length value="8" />   //exactly 8 characters long 
</xs:simpleType> 

をその値また、電子することができ(すなわち、ゼロ文字):私を導い

<PostedDate></PostedDate> 
<PostedDate /> 

は単純にしようとする:もちろん許可されていません

<xs:simpleType name="DateFormat"> 
    <xs:restriction base="xs:string"> 
     <xs:length value="8" />   //exactly 8 characters long 
     <xs:length value="0" />   //exactly 0 characters long 
</xs:simpleType> 

。多くの場合、XSDの場合のように

、ほとんどのフォーマットは、XSDで簡単に表すことができないので、私は正規表現のルール試すことにしました:

I型XSDに変換しようとして
.{8} | "" 

を:

<xs:simpleType name="DateFormat"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value=".{8}|''" /> 
    </xs:restriction> 
</xs:simpleType> 

しかし、それは動作しませんでした:

''20101111' is not facet-valid with respect to pattern '.{8}|''' for type 'DateFormat' 

私も

を試してみました
  • <xs:pattern value="[0-9]{8}|''" />
  • <xs:pattern value="([0-9]{8})|('')" />
  • <xs:pattern value="(\d{8})|('')" />

のいずれかに一致 問題を解決し、パターンの誰のことができます - いくつかの特定のパターン - 空

ボーナス:缶誰でもその場所を指すは数字と一致すると言われる?あるいは、他の特別なパターンコードは何ですか?

+0

私は '\ d {8}? 'はうまくいくと思います。 「?」は、それがオプションである前のことを意味します。 –

答えて

11

「8桁または何もない」を意味する\d{8}|のように見えますが、8桁または2つの引用符は意味しません。しかし、これは説明しません、理由は20101111は一致しません。要素値に空白やその他の追加シンボルがないことは確かですか?
\d私はそれ以外の場合は6つの長番号なければならない許可されている空の文字列のように同じような状況にも

+0

これは、\ d {8} |は「8桁で何もない」*を意味するものではありませんでした。卑劣なそしてあなたは正しい。私のパターン '。{8} | ''が前に' 20101111'にマッチしなかった理由は分かりません。前に私はxml + xsdを検証するためにウェブサイトを使用していましたが。昼休み以来、私はよりインタラクティブなフィードバックを提供するためのXMLスタジオプログラムを作成しました。 –

+2

'xs:totalDigits'の制限は** **' xs:pattern'の制限の後に来なければならないことに注意することも重要です。それ以外の場合、パーサーは内部的に '000001'という文字列を1桁の '1'に変換します.6桁ではないのでパターン'(\ d){6} 'に対して検証できません! –

3

セクション「F.1.1文字クラスエスケープ」の数字と一致するように言われています。やっと私は次のように使いました。これは私にとっては役に立ちます

<xs:simpleType name="DateFormat"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="|[0-9]{8}" /> 
    </xs:restriction> 
</xs:simpleType>