اسکیمای XML (XSD)

XML Schema (XSD) — روش مدرن اعتبارسنجی با انواع داده غنی

XML Schema چیست؟

XML Schema (که با پسوند XSD شناخته می‌شود — XML Schema Definition) جانشین مدرن DTD است. برخلاف DTD، خود Schema یک سند XML است و قابلیت‌های بسیار قوی‌تری دارد:

ویژگیDTDXML Schema
سینتکس XML❌✅
انواع داده (عدد، تاریخ...)❌✅
فضای نام❌✅
تعریف الگو و محدوده❌✅
قدرت بیانمحدودبسیار بالا

مثال: سند XML و Schema آن

سند XML:

<?xml version="1.0"?>
<note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="note.xsd">
    <to>علی</to>
    <from>سارا</from>
    <date>2024-02-14</date>
    <priority>1</priority>
</note>

فایل note.xsd:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="note">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="to" type="xs:string"/>
                <xs:element name="from" type="xs:string"/>
                <xs:element name="date" type="xs:date"/>
                <xs:element name="priority" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

تجزیه Schema

بخشمعنی
<xs:schema>عنصر ریشه هر Schema با فضای نام XSD
<xs:element name="note">تعریف عنصری به نام note
<xs:complexType>عنصری که فرزند دارد (ساختاری)
<xs:sequence>فرزندان باید به همین ترتیب بیایند
type="xs:string"نوع داده عنصر

انواع داده پرکاربرد

نوعتوضیحمثال
xs:stringرشته«سلام»
xs:integerعدد صحیح42
xs:decimalعدد اعشاری9.90
xs:booleanمنطقیtrue / false / 1 / 0
xs:dateتاریخ2024-02-14
xs:timeزمان14:30:00
xs:dateTimeتاریخ و زمان2024-02-14T14:30:00

محدودیت‌ها (Facets)

می‌توانید روی انواع داده محدودیت بگذارید:

<!-- عدد بین ۱ تا ۱۰۰ -->
<xs:element name="age">
    <xs:simpleType>
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="1"/>
            <xs:maxInclusive value="100"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

<!-- رشته با حداقل و حداکثر طول -->
<xs:element name="username">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:minLength value="3"/>
            <xs:maxLength value="20"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

<!-- الگوی regex -->
<xs:element name="phone">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:pattern value="09[0-9]{9}"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

تعداد تکرار فرزندان

ویژگیمعنی
minOccurs="0"حداقل صفر بار (اختیاری)
maxOccurs="unbounded"بدون سقف تکرار
<xs:element name="author" type="xs:string"
            minOccurs="1" maxOccurs="unbounded"/>

ویژگی‌ها در Schema

<xs:attribute name="currency" type="xs:string" use="required"/>
<xs:attribute name="discount" type="xs:decimal" use="optional" default="0"/>

ارجاع سند به Schema

<note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="note.xsd">
XML Schema استاندارد همه‌جا حاضر است: فایل‌های پیکربندی جاوا، WSDL وب‌سرویس‌ها، اسناد Microsoft Office (docx/xlsx) و هزاران استاندارد صنعتی دیگر. یادگیری XSD سرمایه‌گذاری بلندمدت است!

این مبحث بخشی از دوره آموزش کامل XML است.

ابزارهای مرتبط