ZVON > Tutorials > XML Schema and Relax NG Tutorial
Index | >> Example 2 / 8 << | Prev | Next |
Contents > Definition of own types > Limiting string length

Limiting string length

  1. XML Schema
  2. Relax NG
XML Schema keys: restriction, base, string, length
Relax NG keys: data, type, param

1. XML Schema

The element "A" must contain a string which is exactly three characters long. We will define our custom type for the string named "myString" and will require the element "A" to be of that type.

Valid document


<A xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >abc</A>

Invalid document
The string is too short.


<A xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >ab</A>

Invalid document
The string is too long.


<A xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >abcd</A>

Correct XML Schema (correct_0.xsd)


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

  <xsd:element name="A" type="myString"/>

  <xsd:simpleType name="myString">
    <xsd:restriction base="xsd:string">
      <xsd:length value="3"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

2. Relax NG

The element "A" must contain a string which is exactly three characters long. We will define our custom pattern - a string exactly three characters long - and the element "A" must contain this pattern.

Valid document


<A xmlns="">abc</A>

Invalid document
The string is too short.


<A xmlns="">ab</A>

Invalid document
The string is too long.


<A xmlns="">abcd</A>

Correct Relax NG schema (correctRelax_0.rng)


<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" >

  <start>
    <element>
      <name ns="">A</name>
      <ref name="myString"/>
    </element>
  </start>

  <define name="myString">
    <data type="string">
      <param name="length">3</param>
    </data>
  </define>
</grammar>