2011-02-18 64 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})