4

私は XML スキーマを作成中ですが、私の値の 1 つは年です。そのため、すべての値が正確に 4 文字であることを確認したいと思います。そのために、次の構文を使用しています。

<xs:element name="publish_year" maxOccurs="1">
  <xs:simpleType>
    <xs:restriction base="xs:positiveInteger">
      <xs:totalDigits value="4"/>
    </xs:restriction>
  </xs:simpleType>                                      
</xs:element>

「totalDigits」を正しく理解していれば、誰かが「publish_year」の値として「2008」または「200」を渡すことができます。どちらも有効でしょう。そのため、4 桁が必要になるように XSD を構成するにはどうすればよいですか? 一見したところ、正規表現を使用すると思いますが、既に組み込まれているもの (「totalDigits」など) を見落としているかどうかを知りたいです。

アップデート:

私は次の解決策を取りました。やり過ぎかもしれませんが、要点は次のとおりです。

<xs:simpleType>
    <xs:restriction base="xs:positiveInteger">
        <xs:totalDigits value="4" fixed="true"/>
        <xs:minInclusive value="1900"/>
        <xs:pattern value="^([1][9]\d\d|[2]\d\d\d)$"/>
    </xs:restriction>
</xs:simpleType>
4

2 に答える 2

7

追加の制限として価値のあるプラージュはどうですか?

( minInclusive - maxInclusive )

例えば ​​?

<xs:minInclusive value="1900"/> et <xs:maxInclusive value="2008"/>

しかし、 totalDigits制約に戻るには、fixed属性を true に設定しないのはなぜですか?

{fixed} が true の場合、現在の型が {base type definition} である型は、{value} 以外の totalDigits の値を指定できません。

<xs:totalDigits value="4" fixed="true" />
于 2008-11-18T20:17:18.757 に答える
0

基本型 xs:gYear を使用し、必要に応じて制約ファセットを追加します。詳細については、これが役立つ場合があります。

于 2011-08-24T00:38:22.527 に答える