STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ
    Nội dung
    0
    0
    Chia sẻ

    XML Schema

    Giới thiệu XML Schema, các kiểu dữ liệu trong schema và các dạng khai báo element
    06/09/2015 23/09/2020 3 phút đọc
    XML Schema

    Để mô tả dữ liệu trong một tài liệu XML, DTD được sử dụng rất phổ biến vì tính đơn giản của nó. Tuy nhiên đối với các tài liệu XML lớn và phức tạp, DTD bắt đầu bộc lộ nhiều hạn chế như: không hỗ trợ nhiều kiểu dữ liệu, không quy định được khoảng giá trị… Để khắc phục những hạn chế đó của DTD, XML schema được tạo ra.

    XML Schema

    XML Schema là gì?

    Cùng một mục đích với DTD là kiểm tra cấu trúc và tính đúng đắn của một tài liệu XML. Tuy nhiên được ra đời sau, XML Schema được kế thừa những thành công của DTD và mở rộng thêm một số tính năng để khắc phục những hạn chế của DTD.

    XML Schema được phát triển trên nền tảng của DTD và nổi trội hơn ở một số đặc điểm:

    • Schema cũng là một dạng tài liệu theo chuẩn XML, do đó để mô tả cấu trúc của dữ liệu người dùng schema không cần phải làm quen với cấu trúc mới (DTD).
    • Schema có thể mở rộng, người dùng có thể định nghĩa thêm các kiểu dữ liệu riêng từ các kiểu dữ liệu chuẩn.
    • Schema hỗ trợ namespace.
    • Schema hỗ trợ nhiều kiểu dữ liệu, định phạm vi giá trị dữ liệu, do đó có thể dễ dàng khai báo, tìm kiếm và kiểm tra tính đúng đắn của dữ liệu.

    Các kiểu dữ liệu trong schema

    Trong schema dữ liệu được chia làm hai loại:

    • Loại có sẵn.
    • Loại do người dùng tự định nghĩa.
    Schema Data Types

    Các dữ liệu có sẵn (built-in) bao gồm các loại: string, bool, numeric, date Time, binary, anyURI, integer, decimal, time.

    Ngoài các kiểu dữ liệu có sẵn, trong trường hợp cần thiết, người dùng có thể tự định nghĩa kiểu dữ liệu riêng.

    Các dạng khai báo element trong schema

    Simple Element

    Cú pháp để khai báo 1 element đơn giản.

    <xs:element name="element-name" type="element-type"/>
    Các element đơn giản
    Nội dung XML
    <fullname>Hòa Đinh</fullname>
    <age>21</age>
    <dateborn>04-11-1993</dateborn>
    Schema tương ứng
    <xs:element name="fullname" type="xs:string"/>
    <xs:element name="age" type="xs:integer" />
    <xs:element name="dateborn" type="xs:date" />
    Các attribute trong element
    Nội dung XML
    <xs:attribute name="attribute_name" type="attribute_type"/>

    Với 1 element có chứa attribute.

    <article author="Hòa Đinh">XML</article>
    Schema tương ứng
    <xs:attribute name="author" type="xs:string"/>

    Complex Element

    Cú pháp để khai báo một complex element:

    <xs:element name="element-name">
    	<xs:complexType>
    		content
    	</xs:complexType>
    </xs:element>
    Element rỗng
    Nội dung XML
    <student id="110005" />
    Schema tương ứng
    <xs:element name="student">
    	<xs:complexType>
    		<xs:attribute name="id" type="xs:Integer"/>
    	</xs:complexType>
    </xs:element>
    Element chỉ chứa các element con
    Nội dung XML
    <article>
    	<author>Hòa Đinh</author>
    	<editor>Larige Thai</editor>
    </article>
    Schema tương ứng
    <xs:element name="person">
    	<xs:complexType>
    		<xs:sequence>
    			<xs:element name="author" type="xs:string"/>
    			<xs:element name="editor" type="xs:string"/>
    		</xs:sequence>
    	</xs:complexType>
    </xs:element>
    Element chỉ chứa text
    Nội dung XML
    <product size="6">lumia 1320</product>
    Schema tương ứng
    <xs:element name="product">
    	<xs:complexType>
    		<xs:simpleContent>
    			<xs:extension base="xs:string">
    				<xs:attribute name="size" type="xs:integer" />
    			</xs:extension>
    		</xs:simpleContent>
    	</xs:complexType>
    </xs:element>
    Element chứa text và các element con
    Nội dung XML
    <article>
    	Number <number>103</number>
    	Author <name>Kevin La</name>.
    	Title <title>So Sánh null Và Rỗng</title>
    </article>
    Schema tương ứng
    <xs:element name="article">
    	<xs:complexType mixed="true">
    		<xs:sequence>
    			<xs:element name="number" type="xs:integer"/>
    			<xs:element name="name" type="xs:string"/>
    			<xs:element name="title" type="xs:string"/>
    		</xs:sequence>
    	</xs:complexType>
    </xs:element>

    Schema Indicator

    Để nâng cao khả năng đặc tả cấu trúc tài liệu XML, schema cung cấp thêm khái niệm "indicator". XML Schema cung cấp một số indicators:

    • All: các element con xuất hiện tối thiểu 1 lần, với thứ tự bất kì. 
    • Choice: chỉ một trong số các element con được xuất hiện.
    • Sequence: các element con phải xuất hiện đúng theo thứ tự.
    • maxOccurs: số lần xuất hiện tối đa của một element.
    • minOccurs: số lần xuất hiện tối thiểu của một element.

    Một số ví dụ để minh họa indicator:

    Schema mô tả các element phải xuất hiện đúng thứ tự.

    <xs:element name="email">
    	<xs:complexType>
    		<xs:sequence>
    			<xs:element name="EmailFrom" type="xs:string"/>
    			<xs:element name="EmailTo" type="xs:string"/>
    			<xs:element name="Subject" type="xs:string"/>
    			<xs:element name="Body" type="xs:string"/>
    			<xs:element name="SMTPServer" type="xs:string"/>
    			<xs:element name="SMTPClient" type="xs:string"/>
    		</xs:sequence>
    	</xs:complexType>
    </xs:element>

    Schema mô tả số lần xuất hiện tối đa và tối thiểu của các element.

    <xs:element name="staff">
    	<xs:complexType>
    		<xs:sequence>
    			<xs:element name="department" type="xs:string"/>
    			<xs:element name="full_name" type="xs:string"/>
    			<xs:element name="child_name" type="xs:string"
    							maxOccurs="2" minOccurs="0"/>
    		</xs:sequence>
    	</xs:complexType>
    </xs:element>
    0 Bình luận
    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021