0

要件があります:最大。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>
4

1 に答える 1

3

簡潔に言えば、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> 
于 2012-08-31T12:26:54.893 に答える