Creating an optional item using xsd -cvc-length-valid ERROR

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

But if my value is empty, it returns an error

cvc-length-valid: A value of '' with length = '0' is not faceted with respect to length '3' for type '#AnonType_CurrencyCodeServiceServiceList'.

So how can I handle this?

+5
source share
2 answers

Your schema allows you to skip an element CurrencyCode, but if it is present, its value should be a string exactly 3 characters long.

You can relax your restriction to allow values ​​of length 0 by specifying the minimum and maximum lengths:

<xs:element name="CurrencyCode" minOccurs="0">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:minLength value="0" />
            <xs:maxLength value="3" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>

, , , "", .


, :

<xs:element name="CurrencyCode" minOccurs="0">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value=""/>
            <xs:enumeration value="USD"/>
            <xs:enumeration value="GBP"/>
            <xs:enumeration value="EUR"/>
            <!-- add all currency codes you need -->
        </xs:restriction>
    </xs:simpleType>
</xs:element>
+5

<CurrencyCode> . , - .

- 3 , 3 , , (= ).

1,

, 3 .

<xs:element minOccurs="0" name="CurrencyCode-regex">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="|.{3}" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

| , . {3} 3. eh... "", .

2, nillable

nillable="true" <xs:element>. xsi:nil="true" , .

<xs:element minOccurs="0" name="CurrencyCode-nil" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="3" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

XML:

<CurrencyCode-nil xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:nil="true"></CurrencyCode-nil>

, , xsi:nil="true". xsi.

<!-- This causes a validation error -->
<CurrencyCode-nil></CurrencyCode-nil>

3,

. . XML .

<xs:element minOccurs="0" default="XXX" name="CurrencyCode-default">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="3" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

XML :

<CurrencyCode-default></CurrencyCode-default>

:

<CurrencyCode-default>XXX</CurrencyCode-default>

XML-,

:

<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence maxOccurs="2">
        <xs:element minOccurs="0" name="CurrencyCode-regex">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="|.{3}" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element minOccurs="0" name="CurrencyCode-nil" nillable="true">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:length value="3" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element minOccurs="0" default="XXX" name="CurrencyCode-default">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:length value="3" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CurrencyCode-regex>ABC</CurrencyCode-regex>
  <CurrencyCode-nil>ABC</CurrencyCode-nil>
  <CurrencyCode-default>ABC</CurrencyCode-default>
  <CurrencyCode-regex></CurrencyCode-regex>
  <CurrencyCode-nil xsi:nil="true"></CurrencyCode-nil>
  <CurrencyCode-default></CurrencyCode-default>
</root>
+5

All Articles