2011-02-18 58 views
0
<xsd:element name="CurrencyCode" minOccurs="0" type="xsd:string"> 
     <xsd:simpleType> 
     <xsd:restriction> 
     <xsd:length value="3"/> 
     </xsd:restriction> 
     </xsd:simpleType> 
    </xsd:element> 

我希望我的CURRENCYCODE是一個可選的值,如果在所有存在價值就應該有3個字母的長度..要麼我的貨幣代碼可以有長度= 0或長度= 3XSD驗證錯誤,同時使用

當我使用上述代碼時,有一個空的字段 ERROR

所以我怎樣才能處理該驗證器返回一個錯誤?

+0

你可以發佈示例XML嗎?您是否試圖使`CurrencyCode` *元素*可選,或*值*可選(例如,有一個空元素)。它們是有區別的。 – 2011-02-18 12:13:29

+0

內容是可選的不屬性.. – 2011-02-18 12:34:01

回答

1

沒有嘗試這樣做(沒有合適的env設置這臺機器上),但根據規範,你可以做如下:

<xsd:element name="CurrencyCode" minOccurs="0" type="xsd:string"> 
    <xsd:simpleType> 
     <xsd:restriction base="xsd:string"> 
     <xsd:pattern value="(?:^$|\w{3})"/> 
     </xsd:restriction> 
    </xsd:simpleType> 
</xsd:element> 

正則表達式(?:^$|\w{3})比賽要麼是空字符串或恰好三個單詞字符。如果您想只接受大寫的貨幣代碼,您可以使用(?:^$|[A-Z]{3})