XML
Beginner
1 min read
XML Schema (XSD) Basics
Example
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/books"
xmlns:bk="http://example.com/books"
elementFormDefault="qualified">
<!-- Top-level element declaration -->
<xs:element name="library" type="bk:LibraryType"/>
<!-- Complex type: library contains 1..∞ book elements -->
<xs:complexType name="LibraryType">
<xs:sequence>
<xs:element name="book" type="bk:BookType"
minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- Complex type with attributes and child elements -->
<xs:complexType name="BookType">
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="author" type="xs:string"
minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="year" type="xs:gYear"/>
<xs:element name="price" type="bk:PriceType"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="category" type="bk:CategoryEnum" use="required"/>
</xs:complexType>
<!-- Simple type: restriction on string -->
<xs:simpleType name="CategoryEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="fiction"/>
<xs:enumeration value="non-fiction"/>
<xs:enumeration value="reference"/>
</xs:restriction>
</xs:simpleType>
<!-- Simple type for price: decimal ≥ 0 -->
<xs:complexType name="PriceType">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="currency" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>