اسکیمای XML (XSD)
XML Schema (XSD) — روش مدرن اعتبارسنجی با انواع داده غنی
XML Schema چیست؟
XML Schema (که با پسوند XSD شناخته میشود — XML Schema Definition) جانشین مدرن DTD است. برخلاف DTD، خود Schema یک سند XML است و قابلیتهای بسیار قویتری دارد:
| ویژگی | DTD | XML 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 است.