2008-11-18 73 views
4

我正在創建一個XML Schema,其中一個值是一年。因此,我想確保所有值都只有4個字符。要做到這一點,我使用的語法如下:如何爲XML模式中的整數設置最小長度?

<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」正確,有人可以通過在「2008」或「200」的「publish_year」值。兩者都是有效的。因此,如何構建我的XSD以確保需要4位數字?乍一看,我猜我會使用一個正則表達式,但我想知道如果我俯瞰東西是已經烤(如「totalDigits」)

UPDATE:

我去採用以下解決方案。這可能是矯枉過正,但它得到了點:

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

你的意思是你想要零填充,即0000,0001到9999? – Greg 2008-11-18 20:25:39

+0

如果沒有填充是必需的,我只是添加了'固定'屬性建議 – VonC 2008-11-18 20:26:22

回答

7

作爲一個額外的限制作用的價值如何?

minInclusive - maxInclusive

例如?

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

但要獲得回totalDigits約束,你爲什麼不設置fixed屬性設置爲true?

如果{固定}爲true,那麼當前類型爲{基本類型定義}的類型不能爲{數值}指定totalDigits的值。

<xs:totalDigits value="4" fixed="true" /> 
0

我會使用的基本類型的xs:gYear的,用另外的約束面,根據需要。欲瞭解更多信息,this可能會有所幫助。

相關問題