文字列の長さが8文字のXSDでスキームルールを定義しようとしています。
<PostedDate>42183296</PostedDate>
スペースを埋めることもできます。
<PostedDate> </PostedDate>
それが私をXSDに導きました:
<xs:simpleType name="DateFormat">
<xs:restriction base="xs:string">
<xs:length value="8" /> //exactly 8 characters long
</xs:simpleType>
ただし、値を空にすることもできます(つまり、長さが0文字)。
<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で簡単に表現できないため、正規表現のルールを試すことにしました。
.{8} | ""
XSD iタイプに変換しようとしています:
<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})|('')" />
誰か他の誰かが一致する問題を解決するパターンのこと-いくつかの特定のパターン-空
ボーナス:XSDドキュメント\d
で数字と一致する場所を誰かが指摘できますか?または、他の特別なパターンコードは何ですか?