7

文字列の長さが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で数字と一致する場所を誰かが指摘できますか?または、他の特別なパターンコードは何ですか?

4

2 に答える 2

12

\d{8}|パターンは「8桁か何もない」という意味のように見えるはずですが、8桁または2つの引用符ではないと思います。しかし、これは説明していません、なぜ20101111一致しないのですか。要素の値に空白やその他の追加の記号がないことを確認しますか?
\d「F.1.1文字クラスのエスケープ」セクションの数字と一致すると言われています

于 2010-11-19T19:54:07.723 に答える
3

私も空の文字列が許可されているのと同じ状況で、そうでなければ6つの長さの数字でなければなりません。とうとう以下のように使いました。これは私のために働く

<xs:simpleType name="DateFormat">
    <xs:restriction base="xs:string">
        <xs:pattern value="|[0-9]{8}" />
    </xs:restriction>
</xs:simpleType>
于 2012-07-18T01:56:49.850 に答える