June 2008
Intermediate to advanced
986 pages
27h 8m
English
A common way to create new datatypes is to restrict the values of another datatype. We’ll look at three approaches: ranges, enumerations, and regular expressions.
For our first example, we’ll use a range to define a datatype
called age based on xs:integer. We would
like for the age datatype to have a
value between 0 and 130. (We’re being optimistic about longevity
here.) Here’s how we define a range of valid values:
<?xml version="1.0" encoding="UTF-8"?> <!-- person1.xsd --> <xs:schema xmlns="http://www.oreilly.com/xslt" targetNamespace="http://www.oreilly.com/xslt" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element ref="age"/> </xs:sequence> <xs:attribute name="eyeColor" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="name" type="xs:string"/> <xs:simpleType name="age-type"> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="130"/> </xs:restriction> </xs:simpleType> <xs:element name="age" type="age-type"/> </xs:schema>
We’ve defined a new datatype, age-type, and we’ve used it as the datatype
for the element <age>. Here’s
a valid document for this schema:
<?xml version="1.0" encoding="utf-8"?>
<!-- person1.xml --> <person xmlns="http://www.oreilly.com/xslt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oreilly.com/xslt person1.xsd" eyeColor="brown"> <name>Doug ...Read now
Unlock full access