Giới thiệu về XML – định nghĩa, cách viết XML đúng cú pháp (XML well-formed)

Giới thiệu về XML – định nghĩa, cách viết XML đúng cú pháp (XML well-formed)

Giới thiệu về XML – định nghĩa, cách viết XML đúng cú pháp (XML well-formed)

Mục đích: Chủ đề của bài này giới thiệu về XML để làm nền tảng cho việc tổ chức dữ liệu sử dụng định dạng chung cho tất cả các ứng dụng, platform độc lập để giao tiếp với nhau. Nội dung đề cập đến sự cần thiết có XML, cách viết XML đúng cú pháp. Qua nội dung tổng quát của lý thuyết, chúng tôi sẽ thực hiện một số ví dụ liên quan đưa ra việc viết XML cả đúng và sai theo qui luật đã được qui định

Tổng quan về XML

  • Ngôn ngữ đánh dấu markup tag ra đời nhằm hướng tới việc thể hiện dữ liệu theo cách để bên nhận và bên giao tiếp đọc hiểu lẫn nhau và tổ chức dữ liệu để trao đổi mà không bị lệ thuộc vào các chương trình ứng dụng và platform khi giao tiếp

  • Những ngôn ngữ markup tag ra đời đầu tiên như GML của IBM và SGML đã tổ chức việc lưu trữ, khai thác dữ liệu tốt hơn nhưng vẫn còn một số khuyết điểm như là phải truyền kèm theo định dạng tổ chức dữ liệu (GML) hay là cấu trúc tổ chức chỉ hướng tới trình bày dữ liệu và các tag đã được định nghĩa sẵn (SGML)

  • Do vậy, các ứng dụng và người làm ra phần mềm cần có một ngôn ngữ hay cách thức để tổ chức dữ liệu dễ dàng cho người, ứng dụng và máy tính đọc hiểu mà không bị lệ thuộc bất kỳ vào tool hay platform cụ thề

  • XML - Extensible Markup Language

    • Cho phép tổ chức lưu trữ dữ liệu theo cấu trúc theo ngữ nghĩa dễ dàng giao tiếp hay trao đổi. Bên cạnh đó, XML còn cho phép việc khai thác dữ liệu một cách dễ dàng thông qua bất kỳ trình soạn thảo đơn giản nhất mà không cần tool hỗ trợ

    • Cho phép người sử dụng định nghĩa nội dung tag mới phù hợp với qui định về cú pháp (linh động trong định nghĩa tag mà không bị bó buộc theo các tag qui định sẵn phù hợp với mục đích và nội dung của người sử dụng)

    • Nội dung và tổ chức được lưu trữ trong file có phần mở rộng là xml

    • Các nội dung qui định cách viết nội dung viết xml tuân theo các qui định của W3C, chi tiết tại trang www.w3c.org

  • XML Parser

  • Là một chương trình kiểm tra xem tập tin đã viết đúng cú pháp theo qui định hay chưa

  • Được hỗ trợ cho người lập trình và ứng dụng để khai thác dữ liệu của XML

  • Có 02 loại tất cả

    • Hỗ trợ kiểm tra xem XML có đúng qui định định dạng của quá trình giao tiếp hay không (validation) thông qua các qui định thiết lập trong DTD hay Schema

    • Chỉ kiểm tra xem XML có viết đúng qui luật qui định hay không (kiểm tra well-formed, không kiểm tra validation)

  • Một tài liệu xml validation thì phải là tài liệu viết đúng cú pháp – well-formed

  • Mặc định các bộ parser chỉ kiểm tra well-formed, do vậy, muốn kiểm tra validation thì bộ parser phải được thiết lập để thực hiện nội dung này

  • Well-formed: các qui định tổng quát về cách thức viết XML đúng cú pháp

    • Tài liệu XML chỉ có duy nhất một tag làm root duy nhất và sẽ chứa tất cả các node con bên trong

      • Nội dung này thể hiện khái niệm tương tự như mô hình cây, chỉ có một nốt root duy nhất và là cha duy nhất trong cây, sau đó là các node con bên dưới

    • Các tag trong tài liệu xml phải tuân thủ qui luật là mở tag phải có đóng tag

    • <abc>…</abc>

    • Nếu là tag rỗng thì phải dùng dạng cú pháp <abc/>

    • Ký tự đầu tiên của tên luôn bắt đầu với một chữ hay dấu gạch dưới (_)

    • Kế tiếp ký tự theo có thể là chữ, số, gạch dưới, gạch ngang, dấu chấm, và dấu chấm phẩy

    • Trong tên không cho phép bất kỳ ký tự khoảng trắng, enter, tab (whitespace) nào cả

    • Tên nên đặt có ý nghĩa và dễ dàng đọc hiểu

    • Các tên tag phải tuân theo qui luật đặt tên

    • Phải đặt tên tương tự qui luật của tên tag

    • Tên của các thuộc tính trong tag là duy nhất

    • Nếu tên thuộc tính có kết hợp với namespace (qualified name bao gồm namespace_prefix:local_name) thì cũng phải tuân theo qui luật nó là duy nhất

      • Tên namespace là giống nhau

      • Tên local name là khác nhau

    • Thuộc tính luôn xuất hiện một cặp bao gồm

    • tên_thuộc_tính = “giá trị của thuộc tính” hay

    • tên_thuộc_tính = ‘giá trị của thuộc tính’

    • Tất cả các tag trong tài liệu phải được lồng nhau theo đúng thứ tự, tag không được đóng mở tùy ý

    • Tất cả các thuộc tính trong tag

    • Tất cả khai báo namespace trong tài liệu XML phải có prefix khác nhau, duy nhất và tuân đúng luật về đặt tên tương tự như tag

    • XML là một ngôn ngữ có phân biệt hoa thường – case sensitive, do vậy, chúng ta cần lưu ý khi sử dụng ký tự trong quá trình đặc tên và truy xuất

    • Một ví dụ về qualified name của tag và attribute. Qua đó, chúng tôi mô tả trực tiếp từ khóa để dễ dàng đọc hiểu nội dung lý thuyết và các tài liệu của liên quan đến xml về qualified name

Cấu trúc của tài liệu XML

  • Gồm có 02 phần

    • Document prolog: Chứa đựng các thông tin tổng quan về tài liệu – metadata và bao dồm 02 phần

      • Khai báo: XML Declaration

      • Phần bổ trợ cung cấp thông tin về tại liệu XML (miscellaneous) bao gồm Document Type Declaration, comments, processing instructions, whitespace, and so on

      • Toàn bộ phần Document prolog có hay không có cũng được nhưng khuyến cáo của W3C nên luôn có di2ng XML Declaration

    • Root Element: đây là tag lớn duy nhất của tài liệu chứa tất cả tag con bên trong và nội dung của tài liệu XML

  • Một ví dụ đơn giản về tài liệu XML

  • Định nghĩa các thành phần trong cấu trúc XML

    • Tài liệu XML nên bắt đầu với XML declaration ở dòng đầu tiên

      • Cú pháp khai báo <?xml?>

      • Thuộc tính version trong cú pháp xml trên thể hiện các thành phần XML được viết phải tuân theo qui định trong version. Thuộc tính này bắt buộc phải sử dụng khi có khai báo xml ở trên

      • Thuộc tính encoding thể hiện nội dung chuyển đổi ký tự trong tài liệu xml để parser chuyển đổi nội dung văn bản đúng định dạng chữ để chuyển đến client. Thuộc tính này là có hay không có cũng được. Khi không có mặc định là UTF-8

      • Thuộc tính standalone thông báo cho parser biết là tài liệu có tham chiếu hay không tham chiếu đến các entity được định nghĩa ở bên ngoài tài liệu hay mặc định được khai báo bởi parser

        • Giá trị yes: tài liệu không tham chiếu đến các external entity

        • Giá trị no: giá trị mặc định nếu thuộc tính encoding không được khai báo để thể hiện tài liệu sẽ tham chiếu đến external entity

o Processing Instructions

  • Các lệnh thực thi được yêu cầu đến bộ parser

  • Cú pháp: bắt đầu với <? Và kết thúc với ?> nhưng không phải là <?xml?>

  • Ví dụ: <?xml-stylesheet type="text/css" href="/greeting.css"?> </li> </ul> </li> </ul> </li> </ul> <p class="MsoNormal" style="margin-left: 1.0in; text-align: justify; text-indent: -.25in;"><span style="font-family: "Courier New";">o<span style="font: 7.0pt "Times New Roman";"> Whitespace

  • Là các khoảng trắng - spaces, ký tự xuống hàng - carriage returns, ký tự bắt đầu hàng - linefeeds, và các tab - tabs

  • Document Type Declaration

  • Khai báo hay tham chiếu đến DTD hỗ trợ validation. Chúng tôi sẽ đề cập chi tiết nội dung này trong một chủ đề khác

  • Comments

§ Cho phép ghi chú, giảng giải nội dung thực hiện và sẽ được parser bỏ qua khi parsing

§ Cú pháp:  <!-- nội dung chú thích -->

§ Ghi chú

  • Không được phép có comment lồng trong comment

  • Được xuất hiện bất kỳ trong đâu ngoại trừ trước XML declaration, không được nằm trong phần tên tag

  • Không được phép có ký tự “--" ở giữa comment

  • Marked-up tag

  • Được dùng trong phần than của tài liệu

  • Bao gồm tag bắt đầu, tag kết thúc, tag cho than rỗng, tham chiếu đến các entity, tham chiếu đến các ký tự, comments, …

  • Là tất cả các chữ và ký tự không nằm trong các tag markup. Hay là ký tự bất kỳ trong văn bản nằm trong thân tag hay bất kỳ đâu ngoài tag

  • Có thể kết hợp với các whitespace

  • Được parsing bởi parser (PCDATA) và có thể không được parse bởi parser và để nguyên giá trị để gửi tới ứng dụng (CDATA)

  • Cú pháp để chữ không được parse <![CDATA[…]]>

    • Lưu ý: CDATA không thể lồng thêm CDTA và cú pháp của nó phải chính xác giữa các dấu hiệu, nghĩa là không được có thêm bất kỳ khoảng trắng nào cả

  • Miêu tả cấu trúc của dữ liệu và tuân thủ luật well-formed

  • Ký tự thể hiện dữ liệu – character data

  • Các tag trong XML – XML element

Vận dụng các kiến thức về XML để kiểm tra tính well-formed của tài liệu XML

  • Yêu cầu

    • Nắm vững các khái niệm về XML đã nêu trên

    • Tools sử dụng ở đây là Netbeans 6.9.1

    • JDK 6 update 22

  • Các bước thực hiện

  • Tạo Java Application hay Web Application

  • Tạo file XML

    • Click Menu File, New File, chọn XML trong Categories, và chọn XML Document trong File types

    • Click Next

  • Đặt tên file trong filename và vị trí lưu file

  • Click Next

  • Chọn mặc định Well-formed Document

  • Click Finish

  • Tài liệu XML xuất hiện

  • Chúng ta gõ tab mở, sau đó nhấn tổ hợp phím Ctrl + Space để tool tự động hoàn tất tag đóng nhằm đảm bảo tài liệu chính xác và đỡ tốn công gõ

  • Khi viết tài liệu hoàn tất, để kiểm tra có well-formed hay không, chúng ta click phải chuột ngay trên tài liệu XML cần check

    • Chọn Check XML

  • Để View tài liệu XML trên trình duyệt

    • Chúng ta click phải chuột ngay trên tập tin XML và nhấn View

  • Một số ví dụ về tài liệu XML hướng tới viết và check well-formed cho XML

    • Cấu trúc của ví dụ sẽ là nêu ví dụ trước, phân tích lỗi và checking lỗi bằng tool nếu có và view bằng browsers

    • Ví dụ 1

  • Tài liệu hoàn toàn well-form cho dù tag thứ 2 book có thứ tự con không đúng thứ tự trong DTD và các tag khác nhưng luật well-formed không đề cập đến thứ tự

  • Khi View tài liệu này trên Browser chúng ta thấy

  • Ví dụ 2

  • Tài liệu này không well-formed vì có khoảng trắng trong khai báo cú pháp xml declaration

  • Tool checking

  • Browser

  • Ví dụ 3

  • Tài liệu không well-formed vì tag mở không trùng tag đóng

  • Ví dụ 4

  • Tài liệu không well-formed vì các khai báo trong DTD không có chứa các khoảng trắng yêu cầu

  • Ví dụ 5

  • Tài liệu không well-formed vì có chứa khoảng trắng trong tag

  • Ví dụ 6

  • Tài liệu không well-formed vì có chứa nhiều hơn 1 node root

  • Ví dụ 7

  • Tài liệu không well-formed vì lồng tag tùy ý

  • Ví dụ 8

  • Tài liệu không well-formed vì mở tag và không đóng tag

  • Ví dụ 9

  • Tài liệu well-formed

  • Ví dụ 10

  • Tài liệu không well-formed vì giá trị attribute thiếu dấu đóng ”

  • Ví dụ 11

  • Tài liệu well-formed và comment được ví dụ

  • Ví dụ 12

  • Tài liệu không well-formed vì comment lồng comment

  • Ví dụ 13

  • Tài liệu không well-formed vì comment nằm trong tag name

  • Ví dụ 14

  • Tài liệu well-formed vì comment nằm trong thân

  • Ví dụ 15

  • Tài liệu well-formed và trình duyệt sẽ bỏ tất cả các whitespace khi view

  • Ví dụ 16

  • Tài liệu không well-form vì phần dữ liệu được parse <99 chứa ký tự <, do vậy parser khi đóng coi như là ý hiệu mở tag

  • Để tránh lỗi, chúng ta sẽ dùng CDATA section để thông báo parser, bỏ qua không parse

  • Khi view

  • Ví dụ 17

  • Tài liệu không well-formed vì sai cú pháp CDATA

  • Ví dụ 18

  • Tài liệu không well-formed vì trong ký tự parsing chứa ký tự không cho phép là dấu & thể hiện tham chiếu entity

  • Thực hiện chỉnh sửa bằng cách bỏ ký tự & hay bao bằng CDATA như bên dưới

  • View

  • Ví dụ 18: ví dụ về thuộc tính standalone

  • Tài liệu standalone.dtd đặt cùng thư mục tài liệu xml

  • Thực hiện validation tài liệu vì mặc định nó đã well-formed

    • Click phải chuột và chọn validate XML

  • Chúng ta sẽ thấy thông báo lỗi là không tìm thấy các khoảng trắng whitespace vì theo định nghĩa tài liệu XML chỉ viết thẳng trên 1 hàng, các dấu whitespace là ký tự đặt biệt được định nghĩa thông qua các entity, do vậy khi parsing thì parser sẽ tìm kiếm khi có tham chiếu đến DTD

  • Nếu DTD được nhúng trực tiếp vào tài liệu như ví dụ số 1 thì parser coi như các tham chiếu entity được nhúng ngay vào trong tài liệu và sẽ không phát sinh lỗi whitespace như là ví dụ trên cho dù standalone có giá trị yes hay no

  • Nếu chúng ta bỏ standalone đi, nghĩa là mặc định set giá trị no thì tài liệu hết lỗi

  • Validation

Chúc mừng các bạn đã hoàn tất và nắm các khái niệm về XML, cách viết XML, sử dụng mô tả XML để kiểm tra well-formed.

Chúng tôi hy vọng nội dung của bài này giúp ích các bạn trong việc sử dụng XML trong ứng dụng, chia sẽ và thao tác với đa môi trường

Rất mong sự góp ý chân thành và chia sẻ của quí vị về vấn đề này. Hẹn gặp lại quý vị ở các chủ đề liên quan đến XML từ khai báo namespace, sử dụng Schema đến áp dụng các API của Java xử lý XML trong ứng dụng.

Tags: 
Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Polaroid SC1630 Camera Smartphone

Polaroid SC1630 Camera Smartphone

Polaroid is looking to fuel a new device category, and has recently shown off its newest camera known as the SC1630 Smart Camera.

Review of the Samsung Galaxy S II

Review of the Samsung Galaxy S II

The Samsung Galaxy S II is a very stylish smart phone.  From the moment I held it in my hands; I fell in love with it. It totally looks amazing.

Những phụ kiện công nghệ tuyệt nhất 2011

Những phụ kiện công nghệ tuyệt nhất 2011

Vòng tay theo dõi sức khỏe, tai nghe chống ồn, chuột cảm ứng,..những phụ kiện cực kì xinh xắn nhưng cũng không kém phần thông minh.

Công ty diệt chuột T&C

 

Diet con trung