Cú pháp của XML

Một phần của tài liệu Phần mềm soạn thảo và tổ chức ngân hàng câu hỏi cho trắc nghiệm theo chuẩn QTI (Trang 47 - 53)

Dƣới đây là ví dụ về một công thức nấu ăn viết bằng XML: <?xml version="1.0" encoding="UTF-8"?>

<công_thức_nấu_ăn tên="bánh mì" thời_gian_chuẩn_bị="8 phút" thời_gian_nấu="3 tiếng">

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

<nguyên_liệu lƣợng="3" đơn_vị="ca">Bột mì</nguyên_liệu> <nguyên_liệu lƣợng="7" đơn_vị="gram">Men</nguyên_liệu> <nguyên_liệu lƣợng="1.5" đơn_vị="ca"

trạng_thái="ấm">Nƣớc</nguyên_liệu>

<nguyên_liệu lƣợng="1" đơn_vị="thìa cà phê">Muối</nguyên_liệu> <chỉ_dẫn>

<bƣớc>Trộn tất cả các nguyên liệu với nhau và nhào kĩ</bƣớc>

<bƣớc>Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng ấm.</bƣớc> <bƣớc>Nhào lại, đổ vào khuôn, cho vào lò nƣớng.</bƣớc>

</chỉ_dẫn>

</công_thức_nấu_ăn>

Dòng đầu tiên là khai báo XML (XML declaration): đó là một dòng không bắt buộc, với nhiệm vụ thông báo phiên bản XML đang đƣợc sử dụng (thƣờng là phiên bản 1.0), và còn có thể chứa thông tin về mã hóa ký tự và các phụ thuộc bên ngoài.

Phần còn lại của tài liệu này chứa các phần tử lồng nhau, một số phần tử trong đó có các thuộc tínhnội dung. Một phần tử thƣờng bao gồm hai thẻ (tag), một thẻ bắt đầu và một thẻ kết thúc, có thể bao quanh văn bản và các phần tử khác. Thẻ bắt đầu bao gồm một cái tên đặt trong một cặp ngoặc nhọn, nhƣ "<bƣớc>", thẻ kết thúc bao gồm chính cái tên đó đặt trong một cặp ngoặc nhọn, với một dấu gạch chéo đứng trƣớc, nhƣ "</bƣớc>". Nội dung của phần tử là tất cả những gì nằm giữa thẻ bắt đầu và thẻ kết thúc, bao gồm văn bản và các phần tử (con) khác. Dƣới đây là một phần tử XML hoàn chỉnh, với thẻ bắt đầu, nội dung văn bản, và thẻ kết thúc:

<bƣớc>Nhào lại, đổ vào khuôn, cho vào lò nƣớng.</bƣớc>

Bên cạnh nội dung, một phần tử có thể chứa các thuộc tính, các cặp tên, giá trị đƣợc đặt trong thẻ bắt đầu, ngay sau tên phần tử. Giá trị của thuộc tính

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

phải đƣợc đặt trong cặp nháy đơn hoặc nháy kép, mỗi tên thuộc tính chỉ đƣợc xuất hiện một lần trong mỗi phần tử.

<nguyên_liệu lƣợng="3" đơn_vị="ca">Bột mì</nguyên_liệu>

Trong ví dụ này, phần tử nguyên_liệu có hai thuộc tính: lượng với giá trị "3", và đơn vị với giá trị "ca". Trong cả hai trƣờng hợp, cũng nhƣ tên và nội dung của các phần tử, tại cấp độ đánh dấu, tên và giá trị của các thuộc tính cũng chỉ là dữ liệu text, các giá trị "3" và "ca" không phải một số lƣợng và một đơn vị đo lƣờng mà chỉ là các chuỗi ký tự mà tác giả tài liệu có thể dùng để biểu diễn những thứ đó.

Ngoài văn bản, các phần tử còn có thể chứa các phần tử khác: <chỉ_dẫn>

<bƣớc>Trộn tất cả các nguyên liệu với nhau và nhào kĩ</bƣớc>

<bƣớc>Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng ấm.</bƣớc> <bƣớc>Nhào lại, đổ vào khuôn, cho vào lò nƣớng.</bƣớc>

</chỉ_dẫn>

Trong đó, phần tử chỉ_dẫn chứa ba phần tử bước. XML đòi hỏi rằng các phần tử phải đƣợc lồng nhau một cách đúng đắn, các phần tử không đƣợc có phần xen vào nhau. Ví dụ, đoạn dƣới đây không phải XML định dạng đúng (well-formed XML) vì các phần từ emstrong xen vào nhau:

<!-- SAI! ĐỊNH DẠNG KHÔNG ĐÚNG! -->

<p>Normal <em>emphasized <strong>strong emphasized</em> strong</strong></p>

Mỗi tài liệu XML phải có đúng một phần tử gốc tại bậc trên cùng (còn gọi là phần tử văn bản), do đó đoạn sau cũng sẽ là một tài liệu XML định dạng sai:

<?xml version="1.0" encoding="UTF-8"?> <!-- SAI! ĐỊNH DẠNG KHÔNG ĐÚNG! -->

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

<đồ vật>Đồ vật thứ nhất</đồ vật> <đồ vật>Đồ vật thứ hai</đồ vật>

XML cung cấp cú pháp đặc biệt để biểu diễn một phần tử với nội dung rỗng. Thay vì viết một thẻ bắt đầu và một thẻ kết thúc ngay sau đó, tài liệu có thể chứa thẻ phần tử rỗng mà trong đó dấu gạch chéo đứng ngay sau tên phần tử. Hai ví dụ sau là tƣơng đƣơng về chức năng:

<foo></foo> </div> (adsbygoogle = window.adsbygoogle || []).push({});

<source lang="xml" enclose="div"> <foo />

XML cung cấp hai phƣơng pháp biểu diễn các ký tự đặc biệt: các tham

chiếu thực thể (entity reference) và các tham chiếu ký tự số (numeric character reference).

Trong XML, một thực thể (entity) là một thân dữ liệu đƣợc đặt tên với dữ liệu thƣờng là text, chẳng hạn một ký tự đặc biệt.

Một tham chiếu thực thể là một ký hiệu đại diện cho thực thể đó. Nó bao gồm tên của thực thể với dấu ("&") đứng trƣớc và một dấu chấm phảy (";") đứng sau. XML có năm thực thể đã đƣợc khai báo trƣớc:

&amp; (&) &lt; (<) &gt; (>) &apos; (') &quot; (")

Dƣới đây là một ví dụ sử dụng một thực thể XML khai báo trƣớc để biểu diễn dấu & trong tên "AT&T":

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Nếu cần khai báo thêm các thực thể khác, việc đó đƣợc thực hiện tại DTD của tài liệu. Sau đây là một ví dụ cơ bản về khai báo thực thể tại một DTD nhỏ nội bộ. Các thực thể đƣợc khai báo có thể mô tả các ký tự đơn hay các đoạn văn bản, và có thể tham chiếu lẫn nhau.

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE example [

<!ENTITY copy "©">

<!ENTITY copyright-notice "Copyright © 2006, XYZ Enterprises"> ]>

<root>

&copyright-notice; </root>

Khi xem tại một trình duyệt thích hợp, tài liệu XML trên sẽ hiện ra nhƣ sau:

<root> Copyright © 2006, XYZ Enterprises </root>

Các tham chiếu ký tự số trông giống nhƣ các thực thể. Nhƣng thay cho một cái tên, chúng gồm một ký tự "#" và theo sau là một con số. Con số (theo hệ thập phân hoặc hệ cơ số 16 với tiền tố "x") đại diện cho một mã hiệu Unicode (Unicode code point), và thƣờng đƣợc dùng để đại diện cho các ký tự không dễ gõ trên máy tính, chẳng hạn một chữ cái Ả-rập trong một tài liệu đƣợc soạn trên một máy tính châu Âu. Dấu & trong ví dụ "AT&T" có thể đƣợc biểu diễn nhƣ sau (số 38 thập phân và 26 trong hệ cơ số 16 đều đại diện cho giá trị Unicode của dấu &):

<tên-công-ty>AT&#38;T</tên-công-ty> <tên-công-ty>AT&#x26;T</tên-công-ty>

Còn có nhiều quy tắc khác cần thiết cho việc viết các tài liệu XML định dạng đúng, chẳng hạn một tên XML có thể chứa các ký tự nào, nhƣng phần

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

giới thiệu ngắn này chỉ cung cấp các kiến thức căn bản để đọc và hiểu đƣợc nhiều tài liệu XML.

Tóm lại một trang XML cần phải theo đúng các qui luật sau đây:

1. Trang XML phải bắt đầu bằng câu tuyên bố XML (XML declaration). 2. Mỗi bộ phận, gọi là "element" phải nằm giữa một Tag Pair.

3. Nếu Tag nào không chứa gì ở giữa thì phải chấm dứt bằng "/>", thí dụ nhƣ <BR/> hay <HR/>.

4. Một trang XML phải có một element độc nhất chứa tất cả các elements khác. Đó là root của tree biểu diễn trang XML.

5. Các Tag Pair không đƣợc xen kẻ nhau (thí dụ nhƣ <name>John Stanmore<address>25 King Street</name></address> là bất hợp lệ vì <address> nằm trong Tag Pair name) và thêm một vài qui luật về cách dùng các mẫu tự đặc biệt. Ngoài ra các Tag Pair phải đánh vần đúng y nhƣ nhau kể cả chữ hoa, chữ thƣờng, (thí dụ: <STUDENT> và </Student> là bất hợp lệ) và tất cả giá trị các Attribute đều phải nằm giữa hai ngoặc kép (thí dụ: standalone=yes là bất hợp lệ, phải dùng standalone="yes" mới đƣợc.)

XML đƣợc sử dụng trong hai cách khác nhau. Một cho sự trao đổi lẫn nhau giữa ngƣời và máy, ví dụ nhƣ từ một máy chủ Web đến trình duyệt của một ngƣời sử dụng. Một cách khác cho sự trao đổi dữ liệu giữa các ứng dụng hoặc giữa máy với máy. Trong hai trƣờng hợp, dƣờng nhƣ bạn sẽ cần đến một cơ cấu ba tầng: một căn cứ cơ sở dữ liệu, một máy chủ tầng giữa, nơi logic công việc hoạt động theo dữ liệu; và máy khách hàng, nơi dữ liệu đƣợc trình bày và xử lý sâu hơn. Cơ sở dữ liệu có thể nhận thông tin từ nhiều nguồn dữ liệu khác nhau, có lẽ đã đƣợc định dạng XML. Tầng giữa khi đó có thể kéo dữ liệu lại với nhau và đƣa nó sang tầng trình bày cuối cùng. Ngày nay, các trang Web đôi khi đƣợc phân phối theo cách này, NEWS.COM của CNET phát hành từ một cơ sở dữ liệu. Nhƣng để vào một khung duyệt mới của một trang,

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

chẳng hạn nhƣ tùy chọn mới về máy in thân thiện của NEWS.COM, thì máy chủ phải phát sinh một trang mới. Một tài liệu XML đƣợc định dạng hoàn hảo sẽ cho phép ứng dụng máy khách hàng hiệu chỉnh lại diện mạo tài liệu cho nhiều phƣơng tiện khác nhau, ví dụ nhƣ một máy in.

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Phần mềm soạn thảo và tổ chức ngân hàng câu hỏi cho trắc nghiệm theo chuẩn QTI (Trang 47 - 53)