xsd验证ERROR同时使用minOccurs和length

时间:2011-02-18 11:43:46

标签: xsd

    <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个字母的长度..要么我的CurrencyCode可以有Length = 0或length = 3

当我使用上面的代码时,验证器会在有空字段时返回错误 ERROR

那我怎么处理这个?

1 个答案:

答案 0 :(得分:1)

没试过(在这台机器上没有设置合适的环境),但根据规格你可以这样做:

<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})