Re: Problem with pattern and empty element

Hi Kevin,

> I am using XML SPY to validate my XML using the SCHEMA I created.
> The problem I am having is leaving this element as an empty element,
> like <XXX/>. XML SPY says that the XML doc isn't well formed unless
> I insert a value conforming to my pattern.
>
> Is there a way to define a NULL value or some kind of default value
> that will allow this element to be left empty?

The other alternative to changing the regular expression is to make
the element nillable:

<xsd:element name="XXX" nillable="yes">
        <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="([0-9]+|[A-Z]+)+" />
                </xsd:restriction>
        </xsd:simpleType>
</xsd:element>

and then use xsi:nil on the instance:

<XXX xsi:nil="true" />

This specifically highlights the fact that XXX is a null value.

Alternatively you can add a default value that matches the regular
expression:

<xsd:element name="XXX" default="YYY">
        <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="([0-9]+|[A-Z]+)+" />
                </xsd:restriction>
        </xsd:simpleType>
</xsd:element>

If the element is empty in the instance, then it will be 'seen' as if
it has the value YYY.

It depends on what information you want the application receiving the
PSVI to have. Likely as not you don't have an application receiving
the PSVI, so it doesn't really matter. But if you do, then there is a
distinct difference between "a value that is an empty string", "a nil
value" and "the value 'YYY'" and which alternative you choose depends
on which of those values you want the application to see.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/

Received on Friday, 16 November 2001 07:12:47 UTC