Lƣợc đồ XML và khụng gian tờn

Một phần của tài liệu XML và ứng dụng XML trong giáo dục đào tạo tại trường Đại học Quy Nhơn (Trang 64)

2.4.1. Lược đồ XML

Lƣợc đồ XML (XML Schema) quy định diện mạo của tài liệu XML đó cho, chẳng hạn nhƣ chỳng chứa thành phần nào, thứ tự ra sao, nội dung thế nào và chứa

thuộc tớnh gỡ. Cũng giống nhƣ DTD, nhƣng lƣợc đồ XML tỏ ra mạnh mẽ và chớnh xỏc hơn, nú cho phộp định nghĩa và khai bỏo dữ liệu một cỏch thực sự [3].

Lƣợc đồ là tài liệu XML theo dạng thức thuần văn bản với phần mở rộng.xsd. Nú 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 XML Schema, theo cỳ phỏp sau:

<?xml version = 1.0 >

<xsd:schema xmlns:xsd =http://www.w3.org/1999/XMLSchema> ...

</xsd:schema>

Để trỡnh xử lý XML cú thể sử dụng 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. Trong Internet Explorer sử dụng thuộc tớnh xmlns để tham chiếu đến tập tin chứa lƣợc đồ nhƣ sau:

<?xml version = “1.0” ?>

<rootElement xmlns = x-shema:filename.xsd” ...

</rootElement>

Tuy nhiờn, W3C cho phộp khai bỏo khụng gian tờn 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>

2.4.2. Quy định kiểu đơn giản và kiểu phức tạp

Trong lƣợc đồ XML, tài liệu chia thành hai kiểu nội dung chớnh: thành phần thuộc kiểu đơn giản (simple types) và thành phần thuộc kiểu phức tạp (comples types).

Vấn đề đặt ra ở đõy là làm cỏch phõn biệt thành phần nào trong tài liệu cú kiểu đơn giản, thành phần nào cú kiểu phức tạp. Nếu nhỡn tài liệu XML dƣới dạng hỡnh

cõy thỡ cỏch dễ nhận ra nhất là thành phần cú kiểu đơn giản thƣờng khụng cú nhỏnh con (là nỳt lỏ) trong khi kiểu phức tạp thỡ cú thể cú.

2.4.2.1. Quy định kiểu đơn giản

Kiểu đơn giản là cỏc kiểu nội tại đó đƣợc định nghĩa sẵn và cú thể dựng nú tự do trong lƣợc đồ XML. Thành phần thuộc kiểu đơn giản chỉ chứa dữ liệu đơn giản nhƣ dữ liệu ngày thỏng, số, chuỗi,... và khụng cho phộp chứa thuộc tớnh và thành phần con. Để tạo một kiểu đơn giản dựng cỳ phỏp sau:

<xsd:simpleType name =typeName base = xsd:type> </xsd:simpleType>

Trong đú, typeName là tờn kiểu dữ liệu thành phần; type là kiểu dữ liệu. Thớ dụ, <xsd:simpleType name=“HOCPHAN” base=“xsd:String”>

</xsd:simpleType>

Tờn kiểu dữ liệu Mụ tả

Binary Kiểu dữ liệu nhị phõn Boolean Kiểu lý luận

Byte Kiểu byte

Date Kiểu ngày

Decimal Kiểu thập phõn Double Kiểu số thực 64-bit

ENTITY Kiểu thực thể

ID Kiểu định danh

Int, integer Kiểu số nguyờn NOTATION Kiểu ghi chỳ (adsbygoogle = window.adsbygoogle || []).push({});

Month Kiểu thỏng

String Kiểu chuỗi

Bảng 2.4.2.1. Liệt kờ một số kiểu đơn giản 2.4.2.2. Quy định kiểu phức tạp

Thành phần cú kiểu phức tạp tức nú cú thể chứa thành phần con khỏc hay đƣợc phộp chứa thuộc tớnh. Kiểu phức tạp cú bốn loại thành phần: thành phần thuần; Thành phần rỗng; Thành phần hỗn hợp; Cuối cựng là thành phần văn bản thuần. Cỳ phỏp tổng quỏt khai bỏo kiểu phức tạp:

<xsd:complexType name = typeName>

<xsd:element name = subName type = xsd:typeName > <xsd:element name = subName type = xsd:typeName > ...

<xsd:attribute name = attName type = xsd:typeName> </xsd:complexType>

Trong đú, subName là tờn thành phần con; attName là tờn thuộc tớnh; cũng giống nhƣ kiểu đơn giản, typeName cú thể là kiểu dữ liệu đó định nghĩa sẵn chẳng hạn nhƣ kiểu số, kiểu ngày giờ, kiểu lý luận,... hoặc do ngƣời dựng tự định nghĩa.

Thớ dụ, thành phần MUC (mục) là đề mục của một phần trong bài giảng đƣợc định nghĩa kiểu phức tạp MUC chứa thành phần con TENMUC (tờn mục) và NDMUC (nội dung mục).

<xsd:element name=“MUC” type=“MUC”/> <xsd:complexType name=“MUC”>

<xsd:element name=“TENMUC” type=“xsd:string”/> <xsd:element name=“NDMUC” type=“xsd:string”/> </xsd:complexType>

</xsd:element>

Quy định thành phần chứa thành phần thuần: Là thành phần thuộc kiểu phức tạp cơ bản nhất cú thể chứa thành phần khỏc và luụn cả thuộc tớnh, ngoại trừ văn bản. Thớ dụ, trong đoạn tài liệu XML này, thành phần book

là “thành phần thuần”: <book>

<name language=“VietNam”>Hoc XML bang vi du</name>

<name language=“English”>Learning XML by Example</name> </book>

Cỏch quy định thành phần book nhƣ sau: <xsd:element name=“book”>

<xsd:element name=“name” type=“xsd:string”/> </xsd:complexType>

</xsd:element>

Quy định thành phần chứa thành phần rỗng: Là thành phần khụng cú nội dung nhƣng cú thể chứa thuộc tớnh. Thớ dụ, trong đoạn tài liệu XML này, thành phần Picture là thành phần rỗng:

<Picture filename=“book.jpg” height=“10” width=“30”/> Cỏch quy định thành phần rỗng Picture nhƣ sau:

<xsd:element name=“Picture”>

<xsd:comlpexType content=“empty”>

<xsd:element name=“filename” type=“xsd:string”/> <xsd:element name=“height” type=“xsd:decimal”/> <xsd:element name=“width” type=“xsd:decimal”/> </xsd:complexType>

</xsd:element>

Quy định thành phần chứa thành phần hỗn hợp: Là thành phần chỉ chứa cỏc thành phần, thuộc tớnh và (hoặc) văn bản. Thớ dụ, trong đoạn tài liệu XML này, thành phần Software chứa nội dung hỗn hợp gồm: vừa văn bản lẫn thành phần con:

<Softwares>

Phan mem <software>XML Writer</software> Thoi gian su dung <maxDays>45</maxDays> </Softwares>

Cỏch quy định thành phần Software nhƣ sau: <xsd:element name=“Softwares”>

<xsd:comlpexType content = “mixed”> (adsbygoogle = window.adsbygoogle || []).push({});

<xsd:element name=“software” type=“xsd:string”/> <xsd:element name=“maxDays”> <xsd:simpleType base=“xsd:integer”> <xsd:maxExclusive value=“45”/> </xsd:simpleType> </xsd:complexType> </xsd:element>

Quy định thành phần chứa thành phần văn bản thuần: Là thành phần thuộc kiểu phức tạp chỉ chứa văn bản và cú thể cú thuộc tớnh. Thớ dụ, thành phần name là thành phần văn bản thuần”:

<name language=“English”>XML by Example</name> Cỏch quy định thành phần name nhƣ sau:

<xsd:element name=“name” type=“nameType”/>

2.4.3. Khụng gian tờn của XML

Do XML cho phộp ta tự do định nghĩa và đặt tờn cỏc thẻ, nờn việc khai bỏo một thành phần trựng tờn thẻ trờn hai ứng dụng khỏc nhau là khú trỏnh khỏi. Khi tớch hợp hai ứng dụng này, trỡnh phõn tớch XML khụng hiểu đƣợc tờn thẻ của ứng dụng này hay ứng dụng khỏc vỡ vậy cần phõn biệt về phạm vi hay khụng gian tờn của thẻ.

Khụng gian tờn (namespace) là tập hợp thành phần và thuộc tớnh liờn quan, đƣợc nhận diện qua tờn chung “dạng URL”, do địa chỉ URLs đƣợc xem là duy nhất đối với mọi tài nguyờn trờn Internet. Định nghĩa khụng gian tờn cho thẻ, đƣa thuộc tớnh xmlns:prefix = “URL” vào phần tử gốc. Trong đú, prefix là biệt danh cho khụng gian tờn, khụng gian tờn là định danh URLs duy nhất. Cựng với khai bỏo khụng gian tờn trong thành phần gốc, mọi thành phần trong tài liệu đều gắn liền với khụng gian tờn. URL cú thể trỏ đến DTD hoặc lƣợc đồ XML.

Khụng gian tờn thƣờng dựng trong phõn biệt thành phần đƣợc khai bỏo toàn cục cú tờn tƣơng tự. Thành phần đƣợc khai bỏo cục bộ thƣờng khụng trựng lặp nhờ ngữ cảnh. Vỡ khụng gian tờn là duy nhất, nờn khụng gian tờn cựng với tờn thành phần cũng là duy nhất.

Đối với lƣợc đồ XML cũng cú thể tạo hoặc đƣa thành phần chứa trong lƣợc đồ vào khụng gian tờn. Khi đó liờn kết cỏc thành phần lƣợc đồ (cú kiểu đơn giản, phức tạp, thành phần, thuộc tớnh, nhúm thuộc tớnh) với khụng gian tờn, cú thể tham chiếu chỳng trong lƣợc đồ đú hoặc lƣợc đồ khỏc [10].

2.4.4. So sỏnh giữa DTD và XML Schema

Từ những tỡm hiểu trờn, cho thấy DTD cú nhiều bất lợi so với lƣợc đồ viết bằng XML Schema nhƣ sau:

DTD Lƣợc đồ XML

DTD đƣợc viết theo cỳ phỏp ớt dớnh dỏng đến XML, vỡ vậy khụng thể phõn tớch bằng trỡnh phõn tớch XML.

Mọi khai bỏo trong DTD đều toàn cục, nghĩa là khụng thể quy định hai thành phần khỏc nhau trựng tờn, cho dự chỳng xuất hiện trong ngữ cảnh riờng.

Cuối cựng DTD khụng thể kiểm soỏt thành phần hay thuộc tớnh đó cho chứa đựng loại thụng tin nào.

Cho phộp quy định thành phần toàn cục và thành phần cục bộ.

Nú chứa hệ thống kiểu dữ liệu cho phộp quy định thành phần đó cho chứa số nguyờn, thành phần khỏc chứa khoảng thời gian và thành phần cuối chứa chuỗi.

Túm lại, XML Schema kiểm soỏt nhiều hơn nội dung tài liệu XML. Tuy nhiờn, hiện nay lƣợc đồ XML vẫn là phỏc thảo, vỡ vậy muốn biết quy cỏch mới nhất cho lƣợc đồ XML thỡ vào địa chỉ http://www.w3c.org/XML/Schema.

2.5. Bảng định kiểu CSS

2.5.1. Giới thiệu về CSS

Khỏi niệm bảng định kiểu CSS (Cascading Style Sheet) là mụ hỡnh định nghĩa kiểu định dạng dựng cho việc hiển thị tài liệu. CSS đƣợc dựng cho mục đớch tỏch rời định dạng với nội dung tài liệu và dựng nú để hiển thị tài liệu XML nhƣ cỏc trang HTML. CSS tƣơng tự nhƣ một tập mẫu quy định kiểu định dạng cỏc thẻ trong tài liệu HTML. Nú quy định về màu sắc, font chữ, màu nền,...

Điểm khỏc biệt chủ yếu giữa việc ỏp dụng CSS vào XML và ỏp dụng CSS vào HTML là thẻ HTML cú sẵn thụng tin định dạng, cũn thẻ XML thỡ khụng cú.

Bản chất của CSS chớnh là bổ sung thụng tin định dạng theo lớp, trong đú từng lớp sau bỏc bỏ lớp trƣớc. Tài liệu XML sẽ tham chiếu đến tập tin định kiểu file.css, định nghĩa kiểu thể hiện cho cỏc thành phần XML trong tài liệu bằng chỉ thị sau:

<?xml-stylesheet type = text/cssherf = file.css>

Nội dung tập tin định kiểu file.css định nghĩa kiểu định dạng cho cỏc thành phần XML theo cỳ phỏp sau:

ElementName {display:block; attName1:attValue1;

AttName2:attValue2;... ; attNamen:attValuen; .className {attName1:attValue1;

attName2:attValue2;... ; attNamen:attValuen;} }

Trong đú, định nghĩa trực tiếp cho từng thành phần với ElementName là tờn thành phần; attName là tờn thuộc tớnh cú giỏ trị thuộc tớnh attValue; Cú thể gom cỏc thuộc tớnh định kiểu lại thành một nhúm gọi là lớp và một lớp bắt đầu bằng ký tự dấu chấm (.) tiếp đến là tờn lớp (className); display:block hiển thị thành phần theo cấp khối (bắt đầu ở đầu dũng và thành phần theo sau nú sẽ bắt đầu ở đầu dũng tiếp theo), hoặc display:inline hiển thị thành phần theo nội dũng. Thớ dụ định nghĩa cho cỏc thành phần HOCPHAN, TENBAI và định nghĩa kiểu vào lớp cú tờn

BLUE_IB nhƣ sau: HOCPHAN{display:block;font-size:24pt;font-weight:bold; text- align:center} TENBAI{display:block;font-size:18pt;font-style:italic; font- weight: bold;text-align:center} .BLUE_IB{color:blue;font-style=italic;font-weight=blod} (adsbygoogle = window.adsbygoogle || []).push({});

Một tập tin định dạng kiểu CSS khụng chỉ ỏp dụng cho một tài liệu XML cụ thể, mà cú thể cho phộp ỏp dụng nú cho nhiều tài liệu XML. Hoặc, cú thể ỏp dụng nhiều CSS cho một tài liệu XML. Tuy nhiờn, CSS đƣợc dựng cho dữ liệu XML cú cấu trỳc đơn giản, nhƣng lại khụng cung cấp cấu trỳc hiển thị cho tài liệu XML [3,10].

2.5.2. Trỡnh bày và định dạng văn bản với CSS

Do thành phần XML khụng cú định dạng mặc định, vỡ vậy cần phải quy định những xỏc lập trỡnh bày rất cơ bản. Mỗi thành phần định kiểu bằng CSS cú thể đƣợc xỏc lập về kớch thƣớc, màu sắc cũng nhƣ hƣớng di chuyển của nú đối với những thành phần khỏc trong tài liệu khi hiển thị trờn trỡnh duyệt Web,...

Tờn thuộc tớnh Diễn giải

top (bottom,right,left):x Dịch chuyển hiển thị thành phần với x là khoảng cỏch dịch chuyển trong tài liệu (thớ dụ: 125px), đƣa position:relative hoặc position:absolute và để kớch hoạt dịch chuyển.

With (height):x Ấn định chiều cao hay chiều rộng cho thành phần với x là chiều cao hay chiều rộng (thớ dụ: 340px) Boder Ấn định đƣờng viền với cỏc giỏ trị nhằm giới hạn

vị trớ đƣờng viền, độ dày đƣờng viền, kiểu đƣờng viền và màu sắc. (Thớ dụ: boder: thin dashed red) Padding Thờm khụng gian xung quanh nội dung thành phần nhƣng bờn trong đƣờng viền. (thớ dụ: padding: 5px)

Margin Ấn định lề thành phần. (thớ dụ: margin-top:5px) Color Cú thể đổi màu của thành phần bất kỳ, kể cả

đƣờng ngang, thành phần form và bảng. (thớ dụ: color:red)

vertical-align Canh dọc nội dung thành phần page-break-after:always Quy định ngắt trang sau thẻ đó cho. page-break-before:always Quy định ngắt trang trƣớc thẻ đó cho. Font-family:familyname Ấn định nhiều kiểu phụng chữ.

Font-style:italic Định dạng in nguyờn. Font-weight:bold Định dạng in đậm.

Font-size:x Ấn định cỡ chữ với giỏ trị x cú thể là small, medium, large hoặc giỏ trị cụ thể (thớ dụ: 14pt) Line-height:x Ấn định chiều cao của dũng với giỏ trị x là số

muốn.

Text-align:x Canh chỉnh văn bản với giỏ trị x cú thể là left, right, center, justify.

Bảng 2.5.2.1. Một số thuộc tớnh cơ bản của CSS

2.5.2.2. Thớ dụ tài liệu Bai1_Pascal.xml ỏp dụng bảng định kiểu data.css

Nội dụng một đoạn mó của tập tin data.css

HOCPHAN{display:block;color:red;text-align:center;font- weight:bold} TENBAI{display:block;color:red;text-align:center;font- style:italic;font-weight:bold} MUCDICH{display:block;position:relative;left:40px;text- align:justify} YEUCAU{display:block;position:relative;left:40px;text- align:justify} NOIDUNG{display:block} TENMUC{display:block;font-weight:bold} NDMUC{display:block;position:relative;left:40px;text- align:justify} ……

Tài liệu bai1_pascal.xml tham chiếu đến tập tin định kiểu data.css bằng chỉ thị sau:

<?xml version="1.0"?>

<?xml-stylesheet href="data.css" type="text/css"?>

Nội dung tài liệu bai1_pascal.xml đƣợc hiển thị ra trỡnh duyệt Web nhƣ hỡnh sau:

2.6. XSL và XPATH

2.6.1. XSL

Nhƣ đó giới thiệu, định nghĩa và cỳ phỏp khai bỏo CSS khụng tuõn theo cấu trỳc của ngụn ngữ XML, mà CSS là cỏch định kiểu thẻ trong tài liệu XML. W3C cung cấp một cỏch diễn dịch dữ liệu XML khỏc tƣơng tự CSS đú là XSL (eXtension Style Language). XSL là ngụn ngữ định kiểu mở rộng, nú hoàn toàn tuõn thủ theo đặc tả và cỳ phỏp của XML. XSL thực hiện nhiệm vụ biến đổi dữ liệu của XML để hiển thị tài liệu đó định dạng nhƣ HTML trờn trỡnh duyệt cũng nhƣ CSS, tuy nhiờn nú linh động hơn CSS.

XSL chia thành hai phần: XSLT (XSL Transform) thực hiện nhiệm vụ chuyển dịch hay trớch rỳt dữ liệu XML đƣa vào khuụn dạng HTML và XSL-FO (XSL Formating Object) thực hiện định dạng tài liệu thụng qua cỏc thuộc tớnh thiết lập font chữ, màu sắc,... Vỡ XSL-FO cú chức năng tƣơng tự CSS nờn trong phần này chỳng ta tỡm hiểu khả năng chuyển đổi tài XML sang tài liệu HTML của XSLT.

Để trỡnh xử lý và phõn tớch biết nội dung tài liệu XML kết hợp với tài liệu diễn dịch file.xsl, cần khai bỏo đơn giản trong tài liệu XML nhƣ sau:

<?xml-stylesheet = text/xsl href = file.xsl?>

Tài liệu XSLT tiếp nhận tài liệu XML theo cấu trỳc hỡnh cõy, tức xem cỏc thành phần trong tài liệu XML là tập hợp cỏc nỳt trờn một cõy, sau đú thực hiện chuyển đổi tài liệu XML này và cho ra một tài liệu định dạng cũng theo cấu trỳc hỡnh cõy khỏc. Trong trang style XSLT, dữ liệu đầu vào là một tập hợp cỏc nỳt chẳng hạn nhƣ thành phần thuộc tớnh hay nội dung văn bản nào đú [3,5,10].

Nỳt Diễn giải (adsbygoogle = window.adsbygoogle || []).push({});

Gốc tài liệu (document root) Khởi đầu của tài liệu cần chuyển đổi.

Thuộc tớnh (attribute) Nắm giữ thuộc tớnh của thành phần thẻ. Gỏi trị thuộc tớnh đó loại bỏ dấu bọc chuỗi.

Chỳ thớch (comment) Nắm giữ dữ liệu của chuỗi văn bản chỳ thớch (đó loại bỏ ký hiệu <!—và -->)

Thành phần (element) Bao gồm thẻ tờn của thành phần (thẻ đúng, thẻ mở) và tập cỏc thành phần con giữa hai thẻ đúng và mở.

Khụng gian tờn (namespace) Nắm giữ chuỗi định danh URL của khụng gian tờn.

Chỉ thị xử lý (processing instructions)

Nội dung chuỗi chỉ thị xử lý đó loại bỏ hai ký tự định danh <? và ?>

Văn bản (text) Dữ liệu thuần text giữa thẻ đúng và thẻ mở.

Bảng 2.6.1: Một số nỳt mà bộ xử lý XSLT cú thể nhận dạng và chuyển dịch

XSL chứa cỏc chỉ thị nhằm mục đớch làm cỏch nào đú để kộo thụng tin khỏi tài liệu XML và biến đổi chỳng sang dạng định dạng khỏc, chẳng hạn nhƣ HTML. Với XSL, cú thể tạo ra cấu trỳc hiển thị giống nhƣ HTML, cấu trỳc này khỏc với cấu trỳc dữ liệu XML nguyờn bản [9,10].

Dữ liệu theo XML

Trang định kiểu XSL

Bộ xử lí XSL HTML/ CSS

hoặc cách thể hiện khác

Hỡnh 2.6.1: Biến đổi dữ liệu XML sang HTML sử dụng XSL

Quỏ trỡnh chuyển đổi tài liệu XML sang HTML bằng XSL là phải sử dụng thuộc tớnh so khớp và chọn đỳng dữ liệu đƣa vào định dạng kết xuất.

2.6.1.1. Cấu trỳc ngụn ngữ định dạng mở rộng XSL

Mỗi trang định dạng tài liệu XSL chớnh là tài liệu XML, vỡ vậy phải mở đầu bằng khai bỏo XML chuẩn, sau đú là quy định khụng gian tờn cho trang và khai bỏo tiền tố xsl (đõy là quy ƣớc chuẩn của W3C). Tiếp đến tạo template để ỏp dụng cho nỳt gốc của tài liệu. Cuối cựng, là nội dung của trang định dạng. Cỳ phỏp nhƣ sau: <?xml version = “1.0”?> <xsl:stylesheet xmlns:xsl = “http://www.w3.org/TR/WD-xsl”> <xsl:template match = “/”> Nội dung <xsl:template> </xsl:stylesheet>

Bộ xử lý XSL nhận diện cỏc nỳt trong XML nguồn, nú tỡm lệnh thao tỏc nỳt trong tập tin file.xsl. Lệnh nằm trong template, mỗi template cú hai phần: nhón nhận diện nỳt và lệnh về biến đổi. Mỗi file.xsl cú một template gốc chứa tổ hợp

Một phần của tài liệu XML và ứng dụng XML trong giáo dục đào tạo tại trường Đại học Quy Nhơn (Trang 64)