xsd验证错误,同时使用minOccurs和length

xsd验证错误,同时使用minOccurs和length,xsd,Xsd,我希望我的Currencycode是一个可选值,如果有一个值,它的长度应该是3个字母。。我的CurrencyCode的长度可以为0,也可以为3 当我使用上述代码时,当存在空字段时,验证程序返回一个错误 那么我该如何处理这个问题呢?没有尝试过这个方法(没有在这台机器上设置合适的env),但是根据规范,您可以执行以下操作: <xsd:element name="CurrencyCode" minOccurs="0" type="xsd:string"> <

我希望我的Currencycode是一个可选值,如果有一个值,它的长度应该是3个字母。。我的CurrencyCode的长度可以为0,也可以为3

当我使用上述代码时,当存在空字段时,验证程序返回一个错误

那么我该如何处理这个问题呢?

没有尝试过这个方法(没有在这台机器上设置合适的env),但是根据规范,您可以执行以下操作:

    <xsd:element name="CurrencyCode" minOccurs="0" type="xsd:string">
        <xsd:simpleType>
        <xsd:restriction>
        <xsd:length value="3"/>
        </xsd:restriction>
        </xsd:simpleType>
    </xsd:element>


正则表达式
(?:^$|\w{3})
匹配空字符串或正好匹配三个单词字符。您可以使用
(?:^$|[A-Z]{3})
以防您只接受大写的货币代码。

您可以发布示例XML吗?您是否试图将
CurrencyCode
元素设置为可选,或将值设置为可选(例如,具有空元素)。这是有区别的。内容是可选的,不是属性。这是同一用户提出的问题的完全副本。目前,这两个问题都已被接受。在这个问题上,我有三种不同的方法来解决这个问题。是否应该以某种方式合并它们?InvalidRegex:Pattern值“(?:^$|[A-Z]{3})”不是有效的正则表达式。报告的错误是:“当前选项设置不支持此表达式。”在列“3”处。我收到了此错误:(XML架构中的RegExp被隐式锚定)。@Praneel:简单的
<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>