2009-06-26 12 views
6

XSDを定義しています。 yyyymmddという形式で日付を取る要素を定義する必要があります。この形式のみを受け入れるようにXSDで制限を定義するにはどうすればよいですか?XSD日付書式オーバーライド

答えて

9

は、必ず正規表現で制限文字列に基づいて制限単純型、としてそれを定義することができます:あなたは本当にスマートな取得したい場合は、さらに多くのことを正規表現を微調整することができ

<xs:simpleType name="FormattedDateType"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="\d{8}"/> 
    </xs:restriction> 
</xs:simpleType> 

日付の一致の(例えば、月が唯一できることの情報が含まれている01から12など):

<xs:simpleType name="FormattedDateType"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])"/> 
    </xs:restriction> 
</xs:simpleType> 

マルク・

+0

Marc私はこの表現を知っていましたが、正しい方法ではないと思いました。私はxs:dateを拡張してフォーマットをオーバーライドする必要があると思った。 –

+0

かなり正直なところ、私はxs:dateやxs:dateTimeを制限することは考えていませんでした。そして、パターンを設定しました。 –

+3

xs:extensionではなく単純なタイプを拡張することはできず、ベースの一部として無効なものを制限することはできません。 yyyymmdd形式の日付は有効なxs:日付ではありません(yyyy-mm-dd形式が必要です)ので、marc_sのようなものが必要です –

-2

あなたはMM/DD/YYの形式をしたい場合YYをxmlに変換すると、このコードはこの形式に役立ちます

<xs:element name="StartDate"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"/> 
    <xs:length value="10"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:element> 
+0

\t \t \t \t \t \t \t \ {0-1} \ d | [2] [0-3] \t

+0

これを実行しようとしました –

+0

@SamirVasani、XMLスキーマはパターンマッチングのときに^や$のようなアンカー要素をサポートしているとは思いませんでした。あなたの提案をテストしましたか? –