Monday, March 9, 2009

Blank Space or null String validation using XSD schema

Regarding null values:

The W3C Schema "nillable" and "nill" attributes can be used to indicate that an element has a null (nill) value in an XML instance document.
The "nillable" attribute is used in a schema, and the "nill" attribute is used in an XML instance document.

For example, the following schema declaration indicates that the element "SomeElement" is nillable (i.e. can be marked as null in an XML instance document):

<xsd:element name="SomeElement" type="xsd:string" nillable="true"/>



This declaration allows the following to appear in an XML instance document:

<SomeElement xsi:nill="true"></SomeElement>



For a "not null" specification (as you indicate below), simply set the "nillable" attribute in the schema to "false":

<xsd:element name="SomeElement" type="xsd:string" nillable="false"/>



Regarding whitespace:

The W3C Schema "whiteSpace" facet can be used to indicate to an XML processor how whitespace should be handled for an element of datatype string.

There are 3 possible values:
(1) preserve - do not normalize (i.e. preserve all whitespace)
(2) replace - all occurences of tab (#x9), linefeed (#xA), and carriage return (#xD) are replaced with space (#x20)
(3) collapse - performs the same processing as "replace", plus: collapses contiguous spaces (#x20) to a single space, and removes leading and trailing spaces.

An example is as follows:


<xsd:simpleType name="SomeType">

<xsd:restriction base="string">

<xsd:whiteSpace value="replace"/>

</xsd:restriction>

</xsd:simpleType>

To define type which allows only not null value you can define simple type as follows

<xsd:simpleType name="nonEmptyString">

<xsd:restriction base="xsd:string">

<xsd:minLength value="1"/>

<xsd:whiteSpace value="collapse"/>

</xsd:restriction>

</xsd:simpleType>


No comments: