要件があります:最大。2 桁 - 数字のみ、次のコードは正しいですか:
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{2}" />
<xsd:maxLength value="2" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
簡潔に言えば、XSDスニペットは正しい可能性があり、考慮すべき点がいくつかあります。
maxという単語を使用すると、lessも許可される可能性があると思います。その場合、パターンのメンテナンスが必要です。
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1,2}"/>
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
数値のように見えるものの基本型としてxsd:stringを使用することも興味深いです(意図しない可能性があります)。これは、nillableを使用せずに、ワイヤ上で空の値を許可したいシナリオでは重要な違いです。その場合、パターンは次のようになります。
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{0,2}"/>
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
ここでのもう1つの問題は、正/負の数や0のパディングに関連する問題である可能性があります。これは、パターンがもう少し複雑になる可能性がある場所です。
xsd:stringを基本型として使用することが学習曲線の一部である場合は、数値の基本型とそれに付随するファセットを使用して、同じ「範囲」の制限を実現できます。たまにこのチャートを再訪します; そこで、ニーズに合ったタイプを選択してクリックし、どの制約ファセットがそれに適用されるかを確認できます。たとえば、unsignedShortを選択した場合、次のようになります。
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:unsignedShort">
<xsd:totalDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>