angle-left null Tiêu chuẩn Lược đồ XML 1.1 (eXtensible Markup Language Schema 1.1 – XSD 1.1)
Trang chủ

14/05/2020 10:56

(data.gov.vn) Lược đồ XML 1.0 ban đầu được xuất bản vào năm 2001, với phiên bản thứ hai sau năm 2004 để sửa một số lượng lớn lỗi. Lược đồ XML 1.1 đã trở thành Khuyến nghị của tổ chức W3C vào ngày 05 tháng 4 năm 2012. Lược đồ XML 1.1 được cung cấp để sử dụng bởi các thành viên W3C và công chúng...

I. Giới thiệu

Lược đồ XML 1.0 ban đầu được xuất bản vào năm 2001, với phiên bản thứ hai sau năm 2004 để sửa một số lượng lớn lỗi. Lược đồ XML 1.1 đã trở thành Khuyến nghị của tổ chức W3C vào ngày 05 tháng 4 năm 2012. Lược đồ XML 1.1 được cung cấp để sử dụng bởi các thành viên W3C và công chúng. Lược đồ XML 1.1 giữ lại tất cả các tính năng thiết yếu của Lược đồ XML 1.0 nhưng thêm một số tính năng mới để hỗ trợ chức năng do người dùng yêu cầu, sửa nhiều lỗi trong Lược đồ XML 1.0 và làm rõ từ ngữ.

Trước khi Lược đồ XML ra đời đã có nhiều kiểu định dạng văn bản điện tử như GML (Generalized Markup Language) của IBM, SGML (Standard Generalized Markup Language) của ANSI vào năm 1980 và HTML (Hyper Text Markup Language). Tuy nhiên các phương pháp này có nhiều nhược điểm như GML và SGML không thích hợp để truyền dữ liệu trên Web, HTML chủ yếu chú trọng vào việc làm cách nào hiển thị thông tin hơn là chú trọng đến nội dung truyền tải. Chính vì vậy Lược đồ XML (eXtensible Markup Language) được tạo ra để giải quyết các nhược điểm trên.

Mục đích của Lược đồ XML là xác định và mô tả một lớp tài liệu XML bằng cách sử dụng các thành phần lược đồ để ràng buộc và ghi lại ý nghĩa, cách sử dụng và mối quan hệ của các bộ phận cấu thành của chúng: kiểu dữ liệu, phần tử và nội dung và thuộc tính của chúng và các giá trị của chúng. Các lược đồ cũng có thể cung cấp cho đặc tả thông tin tài liệu bổ sung, chẳng hạn như chuẩn hóa và mặc định các giá trị thuộc tính và thành phần.

Lược đồ XML là một tập hợp các thành phần như định nghĩa kiểu và khai báo phần tử. Chúng có thể được sử dụng để đánh giá tính hợp lệ của các mục thông tin thuộc tính và yếu tố được hình thành và hơn nữa, để chỉ định thông tin bổ sung về các mục đó và nhánh của chúng. Các phần bổ sung cho tập thông tin này tạo ra thông tin rõ ràng được trình bày ngầm trong tài liệu gốc (hoặc trong tài liệu gốc và lược đồ quản lý được ghép lại với nhau), chẳng hạn như các giá trị được chuẩn hóa và / hoặc mặc định cho các thuộc tính, phần tử, các loại phần tử và mục thông tin thuộc tính. Bộ thông tin đầu vào cũng được tăng thêm thông tin về tính hợp lệ hoặc về các thuộc tính khác cũng được mô tả.

Kể từ khi giới thiệu Lược đồ XML 1.0, tiêu chuẩn đã được áp dụng rộng rãi. Các nhà phát triển đã yêu cầu một số thay đổi trong những năm qua, đáng chú ý nhất là khả năng chỉ định và xác thực các quy tắc nghiệp vụ chi tiết hơn và cũng cho phép cải tiến lược đồ linh hoạt. Có rất nhiều thay đổi và cải tiến trong Lược đồ XML 1.1 nhằm giải quyết các vấn đề này.

II. Đặc điểm nổi bật XML Schema 1.1

Lược đồ XML là những chữ cái viết tắt của cụm từ eXtensible Markup Language; XML dùng để phục vụ cho việc mô tả dữ liệu (thông tin lưu trữ bao gồm những gì, lưu trữ ra sao) để các hệ thống khác nhau có thể đọc và sử dụng những thông tin này một cách thuận tiện; Các thẻ (tag) của XML thường không được định nghĩa trước mà chúng được tạo ra theo quy ước của người tạo, hoặc Chương trình tạo ra XML theo những quy ước của chính họ; XML sử dụng các khai báo kiểu dữ liệu DTD (Document Type Definition) hay lược đồ Schema để mô tả dữ liệu.

Ưu điểm của XML: là dữ liệu độc lập. Do XML chỉ dùng để mô tả dữ liệu bằng dạng văn bản (text) nên tất cả các chương trình đều có thể đọc được XML; Dễ dàng đọc và phân tích dữ liệu, nhờ ưu điểm này mà XML thường được dùng để trao đổi dữ liệu giữa các hệ thống khác nhau; Dễ dàng để tạo một file XML; Lưu trữ cấu hình cho website; Sử dụng cho phương thức RPC (Remote Procedure Calls – Thủ tục cuộc gọi từ xa) phục vụ web service.

Tóm lại Lược đồ XML được phát tirển trên nền tảng DTDs, tuy nhiên Lược đồ XML có nhiều ưu điểm vượt trội hơn như:

- Lược đồ XML viết theo định dạng như XML nên người dùng quen thuộc hơn so với DTDs, người dùng không cần phải làm quen với cấu trúc mới;

- Lược đồ XML có thể mở rộng còn DTDs thì không: có thể sử dụng cho lược đồ khác, người dùng có thể tự định nghĩa ra kiểu dữ liệu riêng từ các kiểu dữ liệu chuẩn, có thể dùng nhiều lược đồ cho một file XML cùng lúc;

- Lược đồ XML hỗ trợ Namespace;

- Lược đồ XML hỗ trợ nhiều dạng kiểu dữ liệu: dễ dàng kiểm tra tính đúng đắn của dữ liệu, dễ dàng khai báo định dạng, phạm vi của dữ liệu.

Một Lược đồ XML được xem là đúng cú pháp khi thỏa mãn tất cả các điều kiện sau:

• Chỉ có duy nhất có một phần tử thuộc cấp cao nhất trong tài liệu, còn gọi là nút gốc (root element)

• Mỗi một thẻ mở đều phải có thẻ đóng và tên thẻ là phân biệt hoa thường

• Các thẻ khi đóng phải theo đúng trình tự (mở sau đóng trước)

• Tên thẻ không nên có khoảng trắng, không nên bắt đầu bằng “xml”

• Các thuộc tính (atributes) của một thẻ luôn luôn tồn tại theo cặp theo quy ước: <tên> = “<giá_trị>”; không nên đặt tên thuộc tính trùng nhau, và giá trị của thuộc tính phải đặt trong cặp dấu nháy kép hay nháy đơn. Tên của thuộc tính (atribute) sẽ theo qui luật đặt tên giống như đối với tên thẻ

• Các thẻ (tag) trong XML có thể lồng nhau (Thẻ này có thể chứa nhiều thẻ khác ở bên trong).

Các kiểu dữ liệu trong XML Schema 1.1

Trong Schema, kiểu dữ liệu được chia làm 2 loại: kiểu dữ liệu có sẵn và kiểu dữ liệu do người dùng tự định nghĩa:

 

Các kiểu dữ liệu có sẵn (Built-in datatypes) bao gồm các kiểu dữ liệu sau:

- string: dạng chuỗi

- boolean: kiểu dữ liệu có một trong hai giá trị (thường được kí hiệu là đúng (true) và sai (false)

- numeric: dạng số

- dateTime: dạng ngày tháng, thời gian

- binary: dạng nhị phân

- anyURI: các chuỗi URI

- integer: số nguyên

- decimal: số thập phân

- time: thời gian

Thẻ <schema>:

Thẻ <schema> là thẻ gốc cho tất cả các file schema, thẻ <schema> có một số thuộc tính như sau:

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3schools.com"

elementFormDefault="qualified">

...

...

</xsd:schema>

...

</xsd:schema[/B]>[/PHP]

- xmlns:xsd="http://www.w3.org/2001/XMLSchema" : chỉ ra rằng các kiểu element, kiểu dữ liệu dùng trong schema được khai báo trong namespace http://www.w3.org/2001/XMLSchema với tiền tố “xsd”

- xmlns="http://www.w3schools.com": namespace mặc định là http://www.w3school.com

- elementFormDefault="qualified": chỉ ra rằng tên các thành phần được sử dụng trong file XML có khai báo schema phải thỏa mãn các khai báo namespace.

Các dạng khai báo Element trong Schema:

Có 2 dạng khai báo phần tử (Element) trong lược đồ là phần tử đơn (simple element) và phần tử phức (complex element)

- Simple Element: được dùng để khai báo cho các element chỉ chứa text không có khai báo các thẻ con hay thuộc tính

- Complex Element: complex element được dùng khai báo các khai báo Element có chứa element con, thuộc tính…. Có 4 dạng complex element: Element rỗng, Element chỉ chứa các thẻ con, Element chỉ chứa text và Element chứa thẻ con và text.

Complex Element:

- Cú pháp khai báo 1 complex element như sau:

<xsd:element name=”tên thẻ”>

<xsd:complexType>

Nội dung thẻ

</xsd:complexType>

</xsd:element>

1. Element rỗng:

Ví dụ: <product prodid="1345" />

Như khai báo trên, thẻ product có 1 thuộc tính prodid chỉ nhận giá trị là số khai báo như sau:

<xsd:element name="product">

<xsd:complexType>

<xsd:attribute name="prodid" type="xsd:positiveInteger"/>

</xsd:complexType>

</xsd:element>

Trong đó <xsd:attribute name="tên thuộc tính" type="xsd:type"/> dùng để khai báo thuộc tính.

2. Element chỉ chứa các thẻ con

Ví dụ:

<person>

<firstname>John</firstname>

<lastname>Smith</lastname>

</person>

Như khai báo XML, thẻ <person> có 2 thẻ con là firstName và lastName, và nội dung 2 thẻ này là dạng chuỗi

<xsd:element name="person">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="firstname" type="xsd:string"/>

<xsd:element name="lastname" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Trong đó <xsd:sequence> dùng để khai báo thứ tự các thẻ con trong complex element.

3. Element chỉ chứa text:

Ví dụ

<shoesize country="france">35</shoesize>

Trong thẻ <shoesize> có 1 thuộc tính country dạng chuỗi và nội dung của thẻ là dạng số, được viết schema như sau:

<xsd:element name="shoesize">

<xsd:complexType>

<xsd:simpleContent>

<xsd:extension base="xsd:integer">

<xsd:attribute name="country" type="xsd:string" />

</xsd:extension>

</xsd:simpleContent>

</xsd:complexType>

</xsd:element>

4. Element vừa có text vừa có element:

Ví dụ:

<letter>

Dear Mr.<name>John Smith</name>.

Your order <orderid>1032</orderid>

will be shipped on <shipdate>2001-07-13</shipdate>.

</letter>

Trong thẻ <letter> trên vừa có text vừa có các thẻ con, được khai báo schema như sau:

<xsd:element name="letter">

<xsd:complexType mixed="true">

<xsd:sequence>

<xsd:element name="name" type="xsd:string"/>

<xsd:element name="orderid" type="xsd:positiveInteger"/>

<xsd:element name="shipdate" type="xsd:date"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Simple Element:

- Cú pháp: <xsd:element name="xxx" type="yyy"/>

- Ví dụ:

<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
- Schema:

<xsd:element name="lastname" type="xsd:string"/>

<xsd:element name="age" type="xsd:integer"/>

<xsd:element name="dateborn" type="xsd:date"/>

- Khai báo Attribute: Simple Element không thể có Attribute, khi 1 thẻ có Attribute, thẻ đó phải được khai báo ở dạng Complex Element, tuy nhiên 1 Attribute có thể khai báo dưới dạng Simple Element theo cú pháp sau:

<xs:attribute name="xxx" type="yyy"/>

- Ví dụ:

<lastname lang="EN">Smith</lastname>

- Schema:

<xsd:attribute name="lang" type="xsd:string"/>

Schema Indicator:

- Có thể kiểm soát các thẻ được sử dụng như thế nào trong XML bằng các Indicator. Có 5 dạng Indicator:

1. Thứ tự các thẻ con:

- <xsd:all> các thẻ con có thể xuất hiện với thứ tự bất kỳ và các thẻ con phải xuất hiện 1 lần duy nhất.

Ví dụ:

<xs:element name="person">

<xs:complexType>

<xs:all>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:all>

</xs:complexType>

</xs:element>

2. Lựa chọn các thẻ con:

- <xsd:choice> chỉ 1 thẻ con trong các thẻ được phép xuất hiện.

Ví dụ:

<xs:element name="person">

<xs:complexType>

<xs:choice>

<xs:element name="employee" type="employee"/>

<xs:element name="member" type="member"/>

</xs:choice>

</xs:complexType>

</xs:element>

3. Thứ tự xuất hiện các thẻ con:

-<xsd:sequence>: qui định thứ tự của các thẻ con.

Ví dụ:

<xs:element name="person">

<xs:complexType>

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

4. Số lần xuất hiện tối đa và tối thiểu:

- <xsd:maxOccurs>: số lần xuất hiện tối đa, <minOccurs> số lần xuất hiện tối thiểu.

Ví dụ:

<xs:complexType>

<xs:sequence>

<xs:element name="full_name" type="xs:string"/>

<xs:element name="child_name" type="xs:string"

maxOccurs="10" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Một số đặc điểm nổi bật của Lược đồ XML 1.1 so với Lược đồ XML 1.0

Kể từ khi giới thiệu Lược đồ XML 1.0, tiêu chuẩn đã được áp dụng rộng rãi. Các nhà phát triển đã yêu cầu một số thay đổi trong những năm qua, đáng chú ý nhất là khả năng chỉ định và xác thực các quy tắc nghiệp vụ chi tiết hơn và cũng cho phép cải tiến lược đồ linh hoạt. Nhiều thay đổi và cải tiến trong Lược đồ XML 1.1 nhằm giải quyết các vấn đề này.

Khẳng định

Các xác nhận, còn được gọi là các đồng ràng buộc, trong Lược đồ XML 1.1 cho phép xác thực dựa trên quy tắc các chính sách nghiệp vụ liên quan đến nhiều hơn một yếu tố. Các quy tắc này được xác định bằng cách sử dụng các biểu thức XPath. Ví dụ: bạn có thể sử dụng phần tử <assert> mới để kiểm tra xem chi phí có nhỏ hơn hoặc bằng số tiền được phép hay không, một ngày có khung thời gian nhất định,...

Lược đồ XML dễ dàng xem xét các xác nhận tồn tại trong một lược đồ bằng cách sử dụng chế độ xem Globals, cung cấp tab Assertions cho các tài liệu Lược đồ XML 1.1. Hoặc, xác định chúng trong chế độ xem mô hình nội dung bằng cách nhấp chuột phải vào một yếu tố trong chế độ xem mô hình nội dung và chọn Thêm xác nhận con. Bạn có thể xác định thử nghiệm XPath trực tiếp trong mô hình nội dung thông qua cửa sổ trợ giúp nhập chi tiết.

Khả năng xác định và xác thực các quy tắc nghiệp vụ này là một lợi thế lớn của Lược đồ XML 1.1.

Loại thay thế có điều kiện

Các lựa chọn thay thế loại có điều kiện là một tính năng khác được thiết kế làm cho Lược đồ XML mạnh hơn bằng cách thêm tính linh hoạt tích hợp. Những thứ này cho phép một kiểu được gán động cho một phần tử dựa trên một giá trị thuộc tính trong tài liệu XML. Phần tử thay thế có hai thuộc tính: loại và kiểm tra.

Thuộc tính toàn lược đồ

Lược đồ XML 1.1 cho phép xác định một tập các thuộc tính mặc định tự động áp dụng cho mọi loại phức tạp trong lược đồ. Ví dụ, trong lược đồ Cuộc họp sẽ hữu ích khi áp dụng các thuộc tính thời gian bắt đầu và thời gian kết thúc (startTime và endTime) cho tất cả các thành phần, mà không phải thêm chúng theo cách thủ công, rất tẻ nhạt và có khả năng bị lỗi - đặc biệt là trong một lược đồ có số lượng phần tử lớn.

Phần tử xs: lược đồ trong Lược đồ XML 1.1 có một phần tử defaultAttribution tùy chọn, xác định một nhóm thuộc tính. (Nếu có một yếu tố cụ thể mà nó không mong muốn áp dụng (các) thuộc tính mặc định, có thể chỉ định điều đó với defaultAttributApply = Biệt giả sai.)

Lược đồ XML có thể dễ dàng thêm một nhóm thuộc tính và xác định các thuộc tính mặc định trong khung nhìn Globals của trình soạn thảo Lược đồ XML. Sau đó, sử dụng hộp thoại Cài đặt lược đồ được truy cập qua menu Thiết kế lược đồ để chọn thuộc tính Group vừa tạo làm defaultAttribution từ danh sách thả xuống.

Trên đây là một số cập nhật chính được cung cấp bởi Lược đồ XML 1.1.

III. Ứng dụng

Như ý nghĩa chính của một Lược đồ XML đã đề cập ở trên, trong thực tế Lược đồ XML thường được ứng dụng cho các mục đích. Thứ nhất, mô tả cấu hình của một WebSite hay một ứng dụng: Với lập trình viên ASP.NET là tập tin web.config; người chuyên về xây dựng web application bằng JSP là faces-config.xml và web.xml; và còn nhiều ứng dụng khác nữa. Thứ hai, cung cấp tin, dữ liệu cho các hệ thống khác nhau để có thể khai thác, sử dụng. Điều này có thể thấy dễ hiểu nhất khi sử dụng tính năng cung cấp RSS của các website có cung cấp tính năng dạng này như : www.vnExpress.net, www.tuoitre.vn, … để lấy tin tự động như giá vàng, tin thể thao, thời sự, tin thời tiết,…

Trong tình huống khác, khi xây dựng ứng dụng cho việc điều khiển và giám sát sản xuất cho một công ty XYZ, yêu cầu phần mềm giám sát và điều khiển sản xuất phải cung cấp dữ liệu dạng XML về cho hệ thống chính vào cuối mỗi ngày, bao gồm những thông tin về sản lượng, lượng nguyên liệu đã sử dụng, … để thống kê dữ liệu trên toàn hệ thống. Do đó, chương trình phải tạo XML để thông tin của các nhà máy có thể cung cấp cho hệ thống chính quản lý.

Trong Thông tư số 39/2017/TT-BTTTT ngày 15/12/2017 của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn XML Schema phiên bản 1.1 và được xếp vào nhóm Tiêu chuẩn về tích hợp dữ liệu.

 

Tài liệu tham khảo

W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures W3C Recommendation 5 April 2012 version: http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/

https://en.wikipedia.org/wiki/XML_Schema_(W3C)

https://www.loc.gov/preservation/digital/formats/fdd/fdd000264.shtml

theo https://aita.gov.vn/tieu-chuan-luoc-do-xml-1.1-extensible-markup-language-schema-1.1-%e2%80%93-xsd-1.1


Tin xem nhiều

placeholder image

Các câu hỏi để kiểm tra mức độ an toàn khi chia sẻ dữ liệu