III. Bố cục luận văn
1.2.5. Định nghĩa kiểu tài liệu DTD
Khi định nghĩa thẻ XML, ta tùy ý quyết định cách sử dụng chúng. Ta có thể quyết định thẻ chỉ chứa nội dung là dữ liệu văn bản thuần túy hoặc có thể
chứa các phần tử con khác. Tuy nhiên, để tài liệu rõ ràng ta nên định nghĩa kiểu tài liệu mà mỗi phần tử sẽ biểu diễn.
Một tài liệu XML được coi là hợp lệ và có giá trị khi toàn bộ các phần tử trong tài liệu được định nghĩa kiểu mà nó sẽ chứa.
Định nghĩa kiểu tài liệu DTD phải theo cú pháp quy định của tổ chức XML W3C. Sử dụng thẻ khai báo <!DOCTYPE> để bắt đầu định nghĩa cho các phần tử XML. Mẫu khai báo như sau:
<!DOCTYPE rootname [DTD]>
Trong đó:
-DOCTYPE : là một phần của phần mở đầu tài liệu.
-DTD : là định nghĩa cho các phần tử trong tài liệu.
-rootname : Tên phần tử gốc.
Mỗi phần tử được định nghĩa theo cú pháp sau:
<!ELEMENT NAME CONTENT_MODEL>
Trong đó:
-NAME : là tên của phần tử muốn định nghĩa.
-CONTENT_MODEL : có thể được đặt là EMPTY hay ANY hoặc
trộn lẫn cả hai nội dung (bao gồm dữ liệu có thể dùng phân tích hoặc các phần tử con khác).
Ví dụ 1.2: khai báo và định nghĩa DTD trong tài liệu XML:
<?xml version="1.0" standalone="yes" encoding="UTF-8" ?> <!DOCTYPE DanhSach_HV[
<!ELEMENT DanhSach_HV(HocVien)*>
<!ELEMENT HocVien(HocvienID, LopID, TenHocVien, GioiTinh, NamSinh, DiaChi, DienThoai)>
<! ELEMENT HocVienID(#PCDATA)> <! ELEMENT LopID(#PCDATA)> <! ELEMENT TenHocVien(#PCDATA)>
<! ELEMENT GioiTinh(#PCDATA)> <! ELEMENT NamSinh(#PCDATA)> <! ELEMENT DiaChi(#PCDATA)> <! ELEMENT DienThoai(#PCDATA)> ]> <DanhSach_HV> <!-- HV: Học viên --> <Hocvien HocvienID="0001"> <LopID> TA01 </LopID> <TenHocVien>
Lê Thị Thu Trang
</TenHocVien> <GioiTinh> Nữ </GioiTinh> <NamSinh> 1984 </NamSinh> <DiaChi>
255 Trần Huy Liệu – Tp Nam Định
</DiaChi> <DienThoai> 0123660672 </DienThoai> </Hocvien> </DanhSach_HV> 1.2.6. Giản đồ XML
Giản đồ XML là một tài liệu XML được viết dưới dạng thức thuần văn bản với phần mở rộng .xsd. Tài liệu này mở đầu bằng khai báo chuẩn XML,
tiếp theo dùng tiếp đầu ngữ xsd: để khai báo không gian tên gọi XML Schema Cấu trúc chung ( thông dụng ) của các tài liệu trong XML Shema như sau:
<?xml version="1.0"encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> Đặc tả các thẻ
Đặc tả các kiểu </xs:schema>
Với DTD, Đặc tả cấu trúc tài liệu XML bao gồm 2 phần : Đặc tả cấu trúc nội dung các thẻ , Đặc tả thuộc tính các thẻ. Thông tin về một thẻ được mô tả qua 2 phần tách biệt nhau : Đặc tả cấu trúc nội dung mô tả cách sắp xếp các thành phần bên trong của thẻ đang xét, Đặc tả thuộc tính mô tả hệ thống các thuộc tính của thẻ đang xét.
Với giản đồ XML, thông tin về một thẻ được mô tả tập trung qua một ý niệm duy nhất là kiểu[8]. Mỗi thẻ sẽ có tương ứng một kiểu. Đặc tả kiểu mô tả kiểu của thẻ cùng với một số tính chất khác. Đặc tả kiểu mô tả các thông tin về các thẻ thuộc kiểu ( có thể có nhiều thẻ cùng thuộc một kiểu ) bao hàm cả các thông tin về cách sắp xếp các thành phần bên trong của thẻ và hệ thống các thuộc tính của thẻ.
Ví dụ:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="DA_THUC" type="K_DA_THUC"/>
Bộ môn Công Nghệ XML Công nghệ XML và ứng dụng Nguyễn Tiến Huy
admincnttvn@gmail.com http://www.ebook.edu.vn Trang 60 <xs:complexType name="K_DA_THUC">
<xs:sequence>
<xs:element name="DON_THUC" type="K_DON_THUC"
minOccurs="1"/>
</xs:sequence>
<xs:attribute name="Ten" type="xs:string" /> <xs:attribute name="Bien_so" type="xs:string"/>
</xs:complexType>
<xs:complexType name="K_DON_THUC">
<xs:attribute name="He_so" type="xs:float"/> <xs:attribute name="So_mu" type="SO_TU_NHIEN"/>
</xs:complexType> <xs:simpleType name="SO_TU_NHIEN"> <xs:restriction base="xs:int"> <xs:minInclusive value="0"/> </xs:restriction> </xs:simpleType> </xs:schema>
Để chương trình xử lý XML có thể sử dụng được tập tin lược đồ (.xsd) cho tài liệu XML, thì các bộ xử lý phải có cách cài đặt cụ thể của riêng nó để nhận ra lược đồ đi kèm với tài liệu XML. W3C cho phép khai báo không gian tên gọi cho tài liệu XML tham chiếu đến tập tin lược đồ theo địa chỉ URL như sau:
<?xml version = "1.0" ?>
<rootElement xmlns = "URL">
………
</rootElement>
Giản đồ XML được Microsoft đề xuất để thay thế cho định kiểu tư liệu DTD, được sử dụng để định nghĩa kiểu tư liệu cho các phần tử XML, vốn xuất thân từ SGML, khó sử dụng và có một số nhược điểm như không định nghĩa chính xác được các loại dữ liệu. Trong khi đó, XML Schema có một số ưu điểm sau:
- Dễ học và dễ dùng hơn DTD.
- Định nghĩa chính xác được các kiểu dữ liệu.
- Có hệ thống không gian tên gọi tốt hơn.
- Dùng lại được các phần tử bằng cách thừa kế.
1.2.7. Bảng định kiểu CSS
CSS là mô hình định nghĩa kiểu định dạng dùng cho việc hiển thị tài liệu[8]. Ta có thể dùng CSS để hiển thị tài liệu XML tương tự như các tài liệu HTML. CSS cho phép tách rời định dạng với nội dung dữ liệu.
CSS được hiểu như một tập mẫu quy định các kiểu định dạng cho các phần tử trong XML như định dạng về font chữ, màu chữ, màu nền,….
Bảng định kiểu CSS được sử dụng trong tài liệu HTML, tuy nhiên điểm khác biệt chủ yếu giữa việc sử dụng CSS vào HTML với việc sử dụng CSS vào XML là các thẻ trong HTML thì có sẵn thông tin định dạng còn các thẻ trong XML thì không có.
Bản chất của CSS là tạo ra một tập mẫu quy định các kiểu định dạng cho các phần tử của XML trong một file tách biệt với tài liệu. Sau đó tập mẫu này được sử dụng vào trong tài liệu thông qua việc xử lý với cú pháp như sau:
<?xml-stylesheet type=‖text/css‖ href=‖filename.css‖ ?>
Trong đó filename.css là tên file chứa tệp mẫu quy định các định dạng cho các phần tử trong tài liệu, tập tin này có phần mở rộng là .css và nội dung là các định dạng cho các phần tử trong tài liệu. Nội dung định dạng của mỗi phần tử được định nghĩa theo cú pháp:
elementName{display:block;attName1:attValue1;….;attNameN :attValueN}
Trong đó elementName là tên phần tử cần định dạng, display:block
hiển thị thành phần theo khối (bắt đầu ở đầu dòng và các thành phần theo sau nó sẽ bắt đầu ở dòng tiếp theo), hoặc display:line sẽ hiển thị thành phần theo nội dung, attName là tên thuộc tính và attValue là giá trị của thuộc tính.
Nếu muốn gom giá trị các thuộc tính định kiểu lại một nhóm (gọi là lớp) thay vì định kiểu cho từng phần tử, tạo lớp bằng cách đặt một dấu chấm trước tên lớp theo cú pháp sau:
.className{attName1:attValue1; ….; attNameN:attValueN}
Trong đó className là tên lớp và lớp này được sử dụng bên trong phần tử cần định dạng thông qua thuộc tính theo cú pháp:
<elementName CLASS=―className‖>
Ví dụ 1.3: Có tệp định dạng Hocvien.css như sau:
DanhSach_HV {background-color: #ffffff; width: 100%}
HocVien {background-color: Green; width: 100%} HocvienID {display:block; margin-Bottom:30pt; margin-left:0}
LopID {display:block; margin-bottom:30pt; font- size:30pt margin-left:0}
TenHocVien {color:Maroon; font-size:20pt} GioiTinh {color:Maroon; font-size:20pt} NamSinh {color:Maroon;font-size:20pt } DiaChi {color:Maroon; font-size:20pt} DienThoai {color:Maroon; font-size:20pt}
Và một tài liệu XML có nội dung như sau:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheettype="text/css" href="HocVien.css"?> <DanhSach_HV> <!-- HV: Học viên --> <Hocvien HocvienID="0001"> <LopID> TA01 </LopID> <TenHocVien>
Lê Thị Thu Trang </TenHocVien> <GioiTinh> Nữ </GioiTinh> <NamSinh> 1984 </NamSinh> <DiaChi>
255 Trần Huy Liệu – Tp Nam Định
</DiaChi> <DienThoai> 0123660672 </DienThoai> </Hocvien> </DanhSach_HV>