質問

ようにしていを定義するスキームのルール、XSD、文字列が8文字:

<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>

その価値 ができ することも空(ゼロの字)

<PostedDate></PostedDate>
<PostedDate />

いnaivelyみ:

<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ていただいたものとさせていた:

<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 試合桁?又はその他の特殊なパターンをコードす。

役に立ちましたか?

解決

私はpattersが\d{8}|のように見えるべきであると推測することを意味し、「8桁または何も」ではなく、8桁または2重引用符。 20101111が一致しない理由しかし、これは、説明していません。あなたは必ず要素の値には空白または他の追加のシンボルが存在しないことがありますか?
\dは、セクション「F.1.1文字クラスエスケープ」の数字と一致するように言われている。

他のヒント

私も、空の文字列のように同じような状況で、それ以外の場合は6つの長番号なければならない許可されています。最後に私は、次のように使用しました。私にとってこの作品

<xs:simpleType name="DateFormat">
    <xs:restriction base="xs:string">
        <xs:pattern value="|[0-9]{8}" />
    </xs:restriction>
</xs:simpleType>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top