Advanced XSD: Restrictions, Extensions, and Identity Constraints
Unit 3•CLO02, CLO05
Learning Objectives
Course Learning Outcomes
CLO02
CLO05
Course Outcomes
CO03
ℹ️
Introduction
Beyond structure, XSD lets you express business rules: allowed ranges, controlled vocabularies, and relational links. It also supports reuse through type derivation.
Study tracker
Mark what you have completed for this topic.
0% done
The Basics
Facets = constraints
- Range: minInclusive, maxInclusive, minExclusive, maxExclusive.
- Vocabulary: enumeration.
- Shape: length, minLength, maxLength.
- Pattern: regular expressions for formats (phone, code, ids).
Derivation strategies
- Restriction: narrow an existing type.
- Extension: add elements/attributes to an existing type.
Identity constraints
- xs:unique → values must be unique in scope.
- xs:key → primary-key-like constraint.
- xs:keyref → foreign-key-like reference.
Technical Details
Concrete snippets
Range restriction
<xs:simpleType name="CgpaType">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0.0"/>
<xs:maxInclusive value="10.0"/>
</xs:restriction>
</xs:simpleType>
Enumeration
<xs:simpleType name="DeptType">
<xs:restriction base="xs:string">
<xs:enumeration value="CSE"/>
<xs:enumeration value="ECE"/>
<xs:enumeration value="ME"/>
</xs:restriction>
</xs:simpleType>
Identity constraints
<xs:element name="library">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:key name="bookId">
<xs:selector xpath="book"/>
<xs:field xpath="@id"/>
</xs:key>
</xs:complexType>
</xs:element>
Examples
Pattern example
<xs:simpleType name="PhoneType">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{10}"/>
</xs:restriction>
</xs:simpleType>
Extension example
<xs:complexType name="StaffType">
<xs:complexContent>
<xs:extension base="PersonType">
<xs:attribute name="role" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Self-check
Real-World Use
Do it
- Add an enumeration for department codes and a pattern for phone numbers.
- Introduce xs:key for unique IDs and xs:keyref for referencing them.
- Derive one new type using extension (e.g., StaffType extends PersonType).
📝 For exams
Exam direction
- Explain how facets differ from derivation.
- Write one example each for key and keyref.
- State two real benefits of identity constraints in XML integration.
✨ Key points
Takeaways
- Facets encode business rules; derivation encodes reuse.
- Identity constraints give XML relational-style integrity.
- Always document the scope of selectors when using keys.