0

日付フィールドを含むスキーマを作成しようとしています。この日付フィールドの形式は DD-MM-YYYY です。BizTalk は既定で、YYYY-MM-DD 形式の日付を受け入れます。

正規表現を使用してみましたが、以下は該当するフィールドの xsd スニペットです

<xs:element name="FieldName">
    <xs:simpleType>
        <xs:restriction base="xs:date">
            <xs:pattern value="[0-3]{1}[0-9]{1}-[0,1]{1}[0-9]{1}-[0-9]{4}" /> 
        </xs:restriction>
    </xs:simpleType>
</xs:element>

次に、これを使用してファイルを検証しようとしましたが、パターン制約が失敗してエラーが発生しました。

正規表現の何が問題になっていますか?

前もって感謝します

4

2 に答える 2

0

問題は、フィールドのタイプがxs:date. BizTalk が YYYY-MM-DD 形式を受け入れるという事実は、BizTalk のものではなく、XSD 仕様自体に由来します。ここを参照してください: http://www.w3schools.com/schema/schema_dtypes_date.asp

正規表現が としてスキーマに追加されていることに気付くでしょうxs:restriction。これは、そのノードに含まれるデータをさらに制限するために使用されますが、有効なxs:date. したがって、これに対処する唯一の方法は、フィールドのタイプを変更しxs:stringて、日付を別の方法で処理することです (おそらくマップで変換します)。

于 2014-07-04T04:00:06.343 に答える
0

39-19-9999 などの無効な日付が許可されるため、この正規表現を使用しないことはほとんどお勧めしません。

そのような無効な日付を許可したい場合はあなた次第ですが、許可しない場合は、次の正規表現を見つけました:

^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$

31-06-2014 (6 月には 31. 日はありません) などの無効な日付も許可されますが、この正規表現内で許可される無効な日付は少なくなります。

于 2014-06-20T07:54:01.143 に答える