Lập trình PHP với MySQL - Bài 5: XML, XHTML
Nội dung
1. Giới thiệu về XML
2. Cú pháp của XML
3. Không gian tên của XML
4. Tài liệu XML hợp lệ
5. Document Object Model (DOM)
6. Simple API for XML (SAX)
7. XML và CSS
8. Extensible Stylesheet Language (XSL)
▫ Kết hợp dữ liệu của XML với CSS <?xml-stylesheet type=“text/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 Hello ▫ 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 8/2/2010 7 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 8/2/2010 8 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: ▫ ▫ 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/2/2010 9 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 17 18 3. Không gian tên của XML <Daotao:document xmlns: Daotao=“” xmlns:CNTT=“”> Nguyễn Bích Ngọc 10/10/1990 Hà Nội Tin 1 8/2/2010 10 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 <Daotao:document xmlns: Daotao=“”> Nguyễn Bích Ngọc 10/10/1990 Hà Nội <CNTT:comment xmlns:CNTT=“”> Tin 1 8/2/2010 11 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 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 21 22 3. Không gian tên của XML <document xmlns=“”> Nguyễn Bích Ngọc 10/10/1990 Hà Nội <CNTT:comment xmlns:CNTT=“”> Tin 1 8/2/2010 12 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 23 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 ▫ ▫ 24 8/2/2010 13 4.1. Documents Type Definitions • Định nghĩa DTD ….. • 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 25 26 <!DOCTYPE document[ ]> . . . 8/2/2010 14 27 student.dtd student.xml . . . 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 28 8/2/2010 15 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 29 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 30 8/2/2010 16 31 <xs:schema xmlns:xs="" targetNamespace="" xmlns="" elementFormDefault="qualified"> 32 <document xmlns="" xmlns:xsi=" XMLSchema-instance" xsi:schemaLocation=“student.xsd"> … 8/2/2010 17 4.2. Schema • Tập giá trị cho một thành phần 33 4.2. Schema • Khai báo một danh sách các thành phần thông qua 34 File xml: CNPM TTM HTTT KHMT KTMT 8/2/2010 18 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) Các loại nút trong DOM Nút Mô tả Element Phần tử XML Attribute Thuộc tính Text Dữ liệu Entity Thực thể Processing Instruction Chỉ thị xử lý Comment Chú thích Document Tài liệu Document Type Kiểu tài liệu Document Fragment Đoạn tài liệu Notation Ghi chú 8/2/2010 19 37 5. Document Object Model (DOM) • Ví dụ N V An 1/10/1990 Hà Nội 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ố 8/2/2010 20 39 5. Document Object Model (DOM) • Một số phương thức trong DOM Phương thức Mô tả childNodes Trả về NodeList chứa các nút con firstChild Trả về nút con đầu tiên lastChild Trả về nút con cuối cùng parentNode Trả về nút cha previousSibling Trả về nút cùng mức đứng trước nextSibling Trả về nút cùng mức kế tiếp nodeName Trả về tên của nút nodeValue 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 8/2/2010 21 41 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); } 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 42 8/2/2010 22 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 <?xml-stylesheet type=“text/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;} 8/2/2010 23 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. 45 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 46 8/2/2010 24 8. XSL • Khai báo Stylesheet 47 <xsl:stylesheet version=“1.0” xmlns:xsl= “”> hoặc <xsl:transform verion=“1.0” xmlns:xsl=“ ”> 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. 48 Root Comment Processing Instruction Element Comment Processing Instruction Element Text 8/2/2010 25 Phần tử Mô tả <xsl:apply- templates> Á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 <xsl:apply-templates match=“expression”> Áp dụng các mẫu của tài liệu XSL vào nút trong biểu thức. Phần tử gốc là “/” Chứa đựng các quy tắc để áp dụng khi một nút xác định được chọn <xsl:value-of 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 Định nghĩa định dạng đầu ra được tạo bởi stylesheet Thêm nút hiện hành vào cây xuất ra <xsl:for-each 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 <xsl:sort 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ự 49 8. XSL 50 Nguyễn Bích Ngọc 10/10/1990 Hà Nội Trần Văn Đức 10/10/1991 Hải Phòng 8/2/2010 26 51 <xsl:stylesheet version="1.0" xmlns:xsl=""> 8. XSL 52
File đính kèm:
- Lập trình PHP với MySQL - Bài 5 XML, XHTML.pdf