Tải bản đầy đủ (.pdf) (26 trang)

L4 XML

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (561.02 KB, 26 trang )

8/2/2010

1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
ViỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Lập trình PHP với MySQL

Bài 05. XML, XHTML
Do Ba Lam


2

Nội dung
1.
2.
3.
4.
5.
6.
7.
8.

Giới thiệu về XML
Cú pháp của XML
Không gian tên của XML
Tài liệu XML hợp lệ
Document Object Model (DOM)
Simple API for XML (SAX)


XML và CSS
Extensible Stylesheet Language (XSL)

1


8/2/2010

3

1. Giới thiệu về XML
• XML viết tắt của từ eXtensible Markup Language
(ngôn ngữ đánh dấu mở rộng)
• Là ngôn ngữ dùng để định nghĩa dữ liệu thông
qua các thẻ
• Các thẻ có thể do chúng ta định nghĩa ra

4

1. Giới thiệu về XML
<?xml version=“1.0” encoding=“UTF-8”?>
<document>
<student>
<name>Nguyễn Bích Ngọc</name>
<date>10/10/1990</date>
Hà Nội</place>
</student>
<student>
<name>Trần Văn Đức</name>
<date>10/10/1991</date>

Hải Phòng</place>
</student>
</document>

2


8/2/2010

5

1. Giới thiệu XML
• Lịch sử ra đời
▫ 1990, Tim Berners Lee đã đưa ra HTML
▫ 1995, nhóm XML mong muốn
 Không giới hạn ngôn ngữ
 Đơn giản cho lập trình viên
 Dễ dàng cho các Search Enginge

▫ 11/1996, đặc tả đầu tiên của XML được phát hành
▫ 2/1998, W3C phê chuẩn công nhận version 1.0 của
XML

6

1. Giới thiệu XML
• Các chức năng chính






Dễ dàng trao đổi dữ liệu
Tùy biến ngôn ngữ đa dạng
Dữ liệu mô tả
Dữ liệu có cấu trúc tích hợp

3


8/2/2010

7

2. Cú pháp XML
• 2.1. Quy tắc chung trong XML
• 2.2. Tạo tài liệu XML hợp khuôn dạng

8

2.1. Quy tắc chung trong XML
• XML: tự do định nghĩa thẻ
• Xây dựng cách hiển thị chúng bởi CSS hoặc XSL
• Thẻ XML
▫ Một phần tử XML bao gồm cặp thẻ mở đầu và kết
thúc, bên trong là dữ liệu
<name>Nguyễn Bích Ngọc</name>
▫ Phần dữ liệu muốn thêm các kí tự đặc biệt (dấu >,
<…) thì thực hiện giống như trong HTML


4


8/2/2010

9

2.1. Quy tắc chung trong XML
• Thẻ XML
▫ Nếu chỉ có một thẻ thì thêm dấu / phía cuối:
<name/>
▫ Trong mỗi thẻ có thể định nghĩa thêm các thuộc
tính

• Tên thẻ
▫ XML phân biệt chữ hoa và chữ thường
▫ Bao gồm: chữ cái, chữ số, dấu “_”, dấu “-”, dấu “:”
nhưng không được bắt đầu là chữ số, dấu “-”

10

2.1. Quy tắc chung trong XML
• Tạo khai báo XML
▫ W3C khuyến cáo: mỗi tài liệu XML nên có duy nhất
một khai báo

<?xml version=“1.0” encoding=“UTF8”?>
▫ version=“1.0”: cho biết số hiệu phiên bản XML
đang sử dụng
▫ encoding=“UTF-8”: cho biết kiểu mã hóa ngôn ngữ


5


8/2/2010

11

2.1. Quy tắc chung trong XML
• Tạo khai báo XML
▫ Kết hợp dữ liệu của XML với CSS
href=“ten_file_css”>

▫ Tạo dòng ghi chú: tương tự HTML <!-- -->
▫ Tạo thẻ gốc: mỗi file XML phải có một thẻ gốc
▫ Tạo thuộc tính:
 Dạng ten_thuoc_tinh=“gia_tri”
 Giá trị được bao trong nháy kép “” hoặc nháy đơn „‟

12

2.1. Quy tắc chung trong XML
• Tạo khai báo XML
▫ Thuộc tính xml:lang
<text xml:lang=“en”>Hello</text>
▫ Search engine sẽ sử dụng để nhận dạng ngôn ngữ
sử dụng.
▫ Tên quốc gia theo chuẩn ISO 693 gồm 2 kí tự tắt


6


8/2/2010

13

2.2. Tạo tài liệu XML hợp khuôn
dạng
• Các trình dịch XML thường yêu cầu rất nghiêm
ngặt về kiểm tra cú pháp
• Một tài liệu XML được coi là đúng cú pháp khi
nào hợp khuôn dạng
• Khuôn dạng: các quy tắc khai báo, thẻ, thuộc
tính, đặt tên thẻ…

14

2.2. Tạo tài liệu XML hợp khuôn
dạng
• Quy tắc cơ bản

▫ Các khai báo XML cần đặt ở dòng đầu tiên
▫ Mỗi tài liệu chỉ có một phần tử gốc
▫ Thẻ đầy đủ bao gồm thẻ đóng và thẻ mở hoặc thẻ
với dấu / ở cuối
▫ Các thẻ lồng nhau phải có thẻ đóng, thẻ mở hợp vị
trí
▫ Tên thuộc tính trong một thẻ là duy nhất
▫ Giá trị (kể cả số) nằm trong cặp dấu nháy đơn hoặc

nháy kép

7


8/2/2010

15

3. Không gian tên của XML
• XML cho phép tự định nghĩa và đặt tên các thẻ
• Kết hợp các tài liệu XML từ các ứng dụng khác
nhau sẽ gặp phải khả năng trùng tên thẻ

16

3. Không gian tên của XML
• Cần có sự phân biệt về phạm vi hay không gian
tên mà mỗi thẻ có ý nghĩa
• Namespace: cho phép tạo và sử dụng các thẻ
cùng tên độc lập mà không gây ra lỗi
• Sử dụng:
▫ <xmlns:namespacePrefix=“URI”>
▫ URI là xâu xác định một tài nguyên trên mạng
Internet, dùng để tạo namespace duy nhất
▫ Thường trỏ tới URL chứa thông tin liên quan

8



8/2/2010

17

3. Không gian tên của XML
• Ví dụ
• Giả sử thông tin về sinh viên do phòng Đào tạo
tạo ra và quản lý. Viện CNTT muốn bổ sung thêm
thông tin về sinh viên. Để phân biệt thông tin do
phòng Đào tạo hay Viện đưa ra, tránh các thẻ
trùng tên chúng ta định nghĩa các không gian tên
khác nhau

18

3. Không gian tên của XML
xmlns: Daotao=“”
xmlns:CNTT=“”>
<Daotao:student>
<Daotao:name>Nguyễn Bích Ngọc</Daotao:name>
<Daotao:date>10/10/1990</Daotao:date>
<Daotao:place>Hà Nội</Daotao:place>
<CNTT:comment>Tin 1</CNTT:comment>
</Daotao:student>
<Daotao:document>

9



8/2/2010

19

3. Không gian tên của XML
• Thuộc tính xmlns:prefix có thể được đặt ở bất kỳ
thẻ nào chứ không chỉ giới hạn ở phần tử gốc
=> Có thể đặt định nghĩa không gian tên đến nơi
nó bắt đầu được sử dụng

20

3. Không gian tên của XML
xmlns: Daotao=“”>
<Daotao:student>
<Daotao:name>Nguyễn Bích Ngọc</Daotao:name>
<Daotao:date>10/10/1990</Daotao:date>
<Daotao:place>Hà Nội</Daotao:place>
xmlns:CNTT=“”>
Tin 1
</CNTT:comment>
</Daotao:student>
<Daotao:document>

10


8/2/2010


21

3. Không gian tên của XML
• Không gian tên mặc định
▫ Định nghĩa một không gian tên mặc định cho tất cả
các thẻ trong tài liệu
 <xmlns=“URI”>
 prefix=“”

▫ Khi kết hợp hai tài liệu XML với nhau => chỉ cần
mô tả không gian tên của tài liệu thứ hai

22

3. Không gian tên của XML
xmlns=“”>
<student>
<name>Nguyễn Bích Ngọc</name>
<date>10/10/1990</date>
Hà Nội</place>
xmlns:CNTT=“”>
Tin 1
</CNTT:comment>
</student>
<document>

11



8/2/2010

23

4. Tài liệu XML hợp lệ
Vấn đề
• Thẻ trong XML do người sử dụng tự định nghĩa
• Kiểm tra xem tài liệu XML có các thẻ được phép
hay không (tương tự như trong CSDL một bảng
gồm các trường và bản ghi chỉ gồm dữ liệu các
trường) => XML hợp lệ
• Documents Type Definitions (DTDs): định nghĩa
kiểu tài liệu
• Schemas: giản đồ tương tự DTD nhưng cho phép
định nghĩa nhiều kiểu dữ liệu hơn

24

4.1. Documents Type Definitions
• DTD chứa định nghĩa cấu trúc một tài liệu XML.
• DTD có thể được định nghĩa trong tài liệu XML
hoặc định nghĩa ở một file bên ngoài và được liên
kết đến trong tài liệu XML
• DTD không phải là XML, nó có cú pháp riêng
• Khai báo
▫ <!DOCTYPE rootname [DTD]>
▫ <!DOCTYPE rootname SYSTEM [URL to DTD]>


12


8/2/2010

25

4.1. Documents Type Definitions
• Định nghĩa DTD
<!ELEMENT element-name(element-content)>
…..
<!ELEMENT element-name category>

• Trong đó
▫ element-content: các thẻ nằm trong element-name
▫ category: kiểu dữ liệu thành phần. Với dữ liệu văn
bản là #PCDATA

26

<?xml version=“1.0” standalone=“yes”?>
<!ELEMENT document(student)*>
<!ELEMENT student(name, date, place)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT date(#PCDATA)>
<!ELEMENT place(#PCDATA)>
]>
<document>
<student>

. . .
</student>
<document>

13


8/2/2010

27

student.dtd

document(student)*>
student(name, date, place)>
name(#PCDATA)>
date(#PCDATA)>
place(#PCDATA)>

student.xml
<?xml version=“1.0” standalone=“yes”?>
<!DOCTYPE document SYSTEM “student.dtd”>
<document>
<student>
. . .

</student>
<document>

28

4.1. Documents Type Definitions
• Hạn chế
▫ DTD hợp lệ tài liệu XML nhưng bản thân lại không
phải là XML
▫ Tài liệu XML chỉ có duy nhất một DTD
▫ XML có thể có nhiều namespace tuy nhiên DTD
không hỗ trợ khả năng này
▫ DTD chỉ hỗ trợ kiểu xâu text

• => Schema

14


8/2/2010

29

4.2. Schema
• Schema
▫ định nghĩa các thành phần (element) trong tài liệu
▫ định nghĩa các thuộc tính trong tài liệu
▫ định nghĩa các thành phần con trong một thành
phần
▫ định nghĩa thứ tự xuất hiện, kiểu dữ liệu…cho các

thành phần

• Schema là khuyến cáo sử dụng của W3C vào ngày
2/5/2001

30

4.2. Schema
• Ưu điểm của Schema so với DTD
▫ Nhiều kiểu dữ liệu hơn: boolean, dates and times,
URIs, integer, bytes, lóng, decimals…
▫ Hỗ trợ namespaces
▫ DTD là mô hình “closed”: mô tả tất cả các thành
phần có thể xuất hiện trong tài liệu; Schema cho
phép mô hình “open” mô tả các thành phần ngoài
các thành mô tả
▫ Là định dạng XML

15


8/2/2010

31

<?xml version="1.0"?>
<xs:schema xmlns:xs=" />targetNamespace=""
xmlns=""
elementFormDefault="qualified">
<xs:element name=“document”>

<xs:element name=“student">
<xs:complexType>
<xs:sequence>
<xs:element name=“name" type="xs:string"/>
<xs:element name=“date" type="xs:date"/>
<xs:element name=“place" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element>
</xs:schema>

32

<?xml version="1.0"?>
xmlns=""
xmlns:xsi=" />XMLSchema-instance"
xsi:schemaLocation=“student.xsd">

</document>

16


8/2/2010

33

4.2. Schema

• Tập giá trị cho một thành phần
<xs: element name=“Direction”>
<xs:simpleType>
<xs:restriction base=“xs:string”>
<xs:enumeration value=“East”>
<xs:enumeration value=“West”>
<xs:enumeration value=“South”>
<xs:enumeration value=“North”>
</xs:restriction>
</xs:simpleType>
</xs:element>

34

4.2. Schema
• Khai báo một danh sách các thành phần thông
qua <list>
<xs:element name=“Dept” type=“DeptList”/>
<xs:simpleType name=“DeptList”>
<xs:list itemType=“xs:string”/>
</xs:simpleType>
File xml:
<Dept> CNPM TTM HTTT KHMT KTMT </Dept>

17


8/2/2010

35


5. Document Object Model (DOM)
• DOM là một API đối với HTML và XML, định
nghĩa cấu trúc logic của tài liệu và các xử lý của
chúng
• DOM được sử dụng để xử lý dữ liệu lưu trong
XML
• Tài liệu XML sẽ là một cây bao gồm tập hợp các
nút chứa: phần tử, dữ liệu, thuộc tính…

36

5. Document Object Model (DOM)
Nút

Mô tả

Element
Attribute
Text
Entity
Processing Instruction

Phần tử XML
Thuộc tính
Dữ liệu
Thực thể
Chỉ thị xử lý

Comment


Chú thích

Document
Document Type
Document Fragment

Tài liệu
Kiểu tài liệu
Đoạn tài liệu

Notation

Ghi chú

Các loại nút
trong DOM

18


8/2/2010

37

5. Document Object Model (DOM)
• Ví dụ
<document>

<student>


<student>

<student>

<name>

<date>



1/10/1990

Hà Nội

N V An

<student>

38

5. Document Object Model (DOM)
• Các đối tượng cơ bản của DOM
Đối tượng

Mô tả

Node

Một nút đơn trong kiến trúc


NodeList

Một tập hợp nút

NamedNodeMap Một tập các nút, cho phép truy
xuất theo tên cũng như chỉ số

19


8/2/2010

39

5. Document Object Model (DOM)
• Một số phương thức trong DOM
Phương thức
childNodes
firstChild
lastChild
parentNode
previousSibling
nextSibling
nodeName
nodeValue

Mô tả
Trả về NodeList chứa các nút con
Trả về nút con đầu tiên

Trả về nút con cuối cùng
Trả về nút cha
Trả về nút cùng mức đứng trước
Trả về nút cùng mức kế tiếp
Trả về tên của nút
Trả về giá trị của nút

40

5. Document Object Model (DOM)
• Ví dụ





nodeRoot trỏ tới nút gốc document
nodeRoot.childNodes(0)=> student đầu tiên
nodeRoot.childNodes(0).parentNode()=> document
nodeRoot.childNode(1).firstChild().nodeValue() =>
N V An

20


8/2/2010

41

<script language="javascript">

function readXML(){
var xmlObj, rootNode, childNode, nameNode;
var name;
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("student.xml");
rootNode = xmlDoc.documentElement;
childNode = rootNode.firstChild;
nameNode = childNode.firstChild;
name = nameNode.text;
alert("Name: "+name);
}
</script>

42

6. Simple API for XML (SAX)
• DOM:
▫ coi tài liệu như một cấu trúc cây
▫ cung cấp thuộc tính và phương thức duyệt nút trên cây
▫ => phải chủ động tìm dữ liệu
• SAX
▫ xử lý tài liệu XML theo mô hình hướng sự kiện
▫ dữ liệu sẽ tự động được gửi đến khi có sự kiện phát sinh
▫ Nguồn gốc là API của Java, các phiên bản hiện nay hỗ
trợ nhiều ngôn ngữ lập trình khác
▫ SAX 2.0 gồm 2 gói chuẩn: org.xml.sax,
org.xml.sax.helpers

21



8/2/2010

43

7. XML và CSS
• Sử dụng CSS để định nghĩa cách hiển thị các thẻ
XML
• Thực hiện
▫ Tạo ra tài liệu XML
▫ Tạo ra file CSS (kiểu External Style) có chứa định
nghĩa các style của các thẻ trong tài liệu XML
▫ Chèn đoạn mã khai báo việc sử dụng CSS
href=“ten_file_css”?>

44

7. XML và CSS
student{font-size:16pt;margin-left:10;
font-style:italic;}
name,date,place{font-size:14;}

22


8/2/2010

45


8. Extensible Stylesheet Language
(XSL)
• XSL là một ngôn ngữ dựa trên XML để tạo ra
bảng biểu (stylesheet)
• XML và XSL stylesheet là đầu vào của XSLT
processor. Đầu ra là một cây, mỗi thành phần
trong XML chuyển thành một nút có giá trị,
thuộc tính xác định
• XSLT processor sử dụng XSL stylesheet để
chuyển dịch và định dạng XML đầu vào.

46

8. XSL
• Bao gồm:
▫ XSLT: chuyển XML thành một XML khác
▫ XPath: định hướng cho XSL như tìm kiếm các
thành phần..
▫ XSL-FO (XSL-Formatting Object): định dạng
XML đầu ra để các browsers có thể hiển thị với bố
cục và cấu trúc phù hợp

23


8/2/2010

47


8. XSL
• Khai báo Stylesheet
“ />hoặc
/>
48

8. XSL
• XPATH
• Tài liệu XML được xem như một cây, trong đó
mỗi thành phần được biểu diễn bằng một nút.
Root

Comment

Comment

Processing
Instruction

Processing
Instruction

Element

Element

Text


24


8/2/2010

49
Phần tử

Mô tả

<xsl:applytemplates>

Áp dụng các mẫu của tài liệu XSL vào con của nút
hiện hành

match=“expression”> thức. Phần tử gốc là “/”

<xsl:template>

Chứa đựng các quy tắc để áp dụng khi một nút xác
định được chọn

select=“expression”>

Thiết lập giá trị của một phần tử XML và thêm nó vào
cây. Yêu cầu select chứa một phần tử XPATH

<xsl:output>


Định nghĩa định dạng đầu ra được tạo bởi stylesheet

<xsl:copy>

Thêm nút hiện hành vào cây xuất ra

select=“expression”>

Chứa đựng hoàn toàn một mẫu được áp dụng cho mỗi
nút được chọn bởi XPATH bằng thuộc tính lựa chọn

select=“expression”>

Sắp xếp các nút được chọn để các nút này được xử lý
theo thứ tự

50

8. XSL
<?xml version=“1.0” encoding=“UTF-8”?>
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
<document>
<student>
<name>Nguyễn Bích Ngọc</name>
<date>10/10/1990</date>
Hà Nội</place>
</student>

<student>
<name>Trần Văn Đức</name>
<date>10/10/1991</date>
Hải Phòng</place>
</student>
</document>

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×