XML Schema là dạng tài liệu theo chuẩn XML được đề xuất bởi tổ chức W3C năm 2001. XML Schema được dùng để mô tả cấu trúc và các kiểu dữ liệu của một tài liệu XML thay thế cho chuẩn DTD (Document Type Definition) trước đây. Việc này giúp định nghĩa một tài liệu XML hợp lệ cũng như các metadata cần thiết để sử dụng trong nhiều loại ứng dụng và công nghệ hiện nay như XAML, ADO.NET, WebService,…
Bài viết này chỉ đem lại cho bạn một cái nhìn tổng quát về XML Schema, nếu muốn tìm hiểu thêm về chuẩn này, vui lòng xem tại trang sau (nguồn tham khảo):
http://www.w3schools.com/Schema/schema_intro.asp
XML Namespace là gì?
Các tài liệu XML có thể sử dụng cùng một tên thẻ để định nghĩa dữ liệu. Điều này có thể dẫn đến hậu quả là dữ liệu có thể được nhận dạng sai khi được sử dụng. Vì thể một định danh toàn cục là cần thiết để xác định tính duy nhất của một tài liệu XML, và định danh này được gọi là namespace.
Một XML namespace được đặt tên bằng một chuỗi URI (Uniform Resource Identifier). Ví dụ tên của một XML namespace mà bạn thường gặp: http://www.w3.org/2001/XMLSchema.
Để thêm một XML namespace vào tài liệu, bạn sử dụng attribute xmlns (viết tắt của XML Name Space). Attribute này thường được theo sau bởi dấu hai chấm “:” và sau đó là tên prefix được gán cho namespace. Ví dụ gán namespace “http://www.w3.org/2001/XMLSchema” cho prefixxs:
xmlns:xs="http://www.w3.org/2001/XMLSchema”
Ví dụ về XML và XML Schema
Với tài liệu XML như sau:
<?xml version="1.0"?><Blog><Title>Let me know what you think</Title><Author>Yin Yang</Author></Blog>
<?xml version="1.0"?>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Blog">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Title" type="xsd:string" />
<xsd:element name="Author" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Đặc điểm của tài liệu XML Schema
Tài liệu XML Schema được lưu trữ theo dạng plaint text với phần mở rộng xsd (XML Schema Definition).
Một tài liệu XML Schema tương tự như một tài liệu XML, dòng mở đầu của tài liệu là câu khai báo: <?xml version="1.0"?>, theo sau đó luôn là phần tử gốc <schema>. Ví dụ một tài liệu XML Schema thông thường sẽ có dạng sau:
<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.w3schools.com"xmlns="http://www.w3schools.com"elementFormDefault="qualified">…</xs:schema>
Cấu trúc của XML Schema
Phần tử gốc <schema>
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified"
<xs:element name="xxx" type="yyy"/>
Các kiểu dữ liệu thông dụng:
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
Ví dụ với các phần tử XML sau:
<lastname>YinYang</lastname>
<dateborn>1970-03-27</dateborn>
Ta sẽ có các Simple Element tương ứng:
<xs:element name="lastname" type="xs:string"/>
<xs:element name="dateborn" type="xs:date"/>
Attribute
Các Simple Element không thể chứa attribute. Định nghĩa một attribute:
<xs:attribute name="xxx" type="yyy"/>
Ví dụ một phần tử XML:
<lastname lang="EN">Smith</lastname>
Có định nghĩa attribute tương ứng:
<xs:attribute name=”lang” type=”xs:string”/>
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Phần kết
Bài viết không trình bày tất cả kiến thức mà tôi tổng hợp được, nếu bạn quan tâm về vấn đề này, cách tốt hơn là tham khảo tại trang hướng dẫn mà tôi đã đề nghị ban đầu (http://www.w3schools.com/Schema/). Tuy nhiên tại thời điểm hiện tại, tôi chưa cần đi quá sâu vào vấn đề này. Tất nhiên có những công cụ cho phép bạn tạo ra schema tự động để bạn có thể sử dụng mà không cần biết chi tiết về XML Schema. Tôi sẽ giới thiệu một vài công cụ trong một bài viết khác.