Advanced XSD: Restrictions, Extensions, and Identity Constraints

Unit 3CLO02, 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.