LƯỢC ĐỒ XML Mục tiêu học tập: Sau khi học xong chương này người học sẽ: -
Hiểu được lược đồ XML là gì, lược đồ theo chuẩn W3C.
-
Định nghĩa được kiểu dữ liệu cho các phần tử trong lược đồ (kiểu đơn giản và kiểu phức hợp)
- Ứng dụng được lược đồ vào tài liệu XML. Tóm tắt chương Để tài liệu XML của chúng ta hợp lệ, chúng ta phải định nghĩa kiểu tư liệu cho các phần tử. Chúng ta có thể sử dụng khai báo DTD cho mục đích này, tuy nhiên DTD không phải là cách duy nhất. Định nghĩa kiểu tư liệu cịn có thể dựa vào lược đồ (schema). Chương này chúng ta sẽ tìm hiểu khái niệm và cách sử dụng lược đồ để khai báo kiểu tư liệu cho các phần tử thay cho định nghĩa DTD. 5.1 Tại sao chúng ta nên dùng XML Schema? Xuất phát từ những hạn chế của DTD như: DTD sử dụng cú pháp khác so với cú pháp dùng trong trang XML làm cho người dùng phải nhớ nhiều cú pháp; DTD chỉ hỗ trợ được 10 kiểu dữ liệu. Ngồi ra DTD cịn hạn chế về khả năng định nghĩa các ràng buộc dữ liệu. -
XML Schema sử dụng cùng cú pháp với trang XML làm cho người dùng dễ
nhớ ngồi ra nó cịn hỗ trợ được 44 kiểu dữ liệu. XML schema cho phép người dùng tự định nghĩa kiểu dữ liệu mới, định nghĩa các ràng buộc dữ liệu. XML schema bảo
toàn sự giao tiếp dữ liệu, ràng buộc các khóa và tham chiếu mạnh hơn so với DTD đồng thời nó cịn tích hợp được với không gian tên (namespace). -
XML Schema mô tả: + Các phần tử và thuộc tính trong tài liệu XML + Thứ tự và số lượng các phần tử con + Các kiểu dữ liệu của phần tử và thuộc tính
5.2 Các thành phần trong một XML Schema Trong một XML Schema có các thành phần sau: - Thành phần schema - Element
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
54
- Các thuộc tính có thể xuất hiện trong trang XML - Định nghĩa các kiểu dữ liệu 5.2.1 Thành phần schema Điểm cơ bản nhất để hiểu về lược đồ XML là hiểu khái niệm sử dụng kiểu đơn giản và kiểu phức hợp trong khai báo kiểu cho các phần tử XML. Để chỉ định kiểu cho các phần tử, chúng ta phải bảo đảm kiểu đã được định nghĩa trước đó. Như đã nêu trên, kiểu phức hợp là kiểu chứa các phần tử con trong nó hoặc chứa thêm thuộc tính trong khi kiểu giản đơn thì khơng. Kiểu giản đơn là kiểu nội tại đã được định nghĩa sẵn và chúng ta có thể dùng tự do trong lược đồ XML. Schema là phần tử gốc (element root) của mỗi trang tài liệu. - Khai báo:
Mỗi XML Schema được bắt đầu bằng thành phần (element root) xmlns:xsd= version=“1.0”>
- Các thành phần và các kiểu dữ liệu trong schema như: - schema, element, complexType, sequence, string nằm trong namespace: http://.../XML schema - targetNamespace= namespace của những thành phần định nghĩa trong schema - Ví dụ như Book, Title, Author, date, ISBN, Publisher nằm trong namespace elementFormDefault=“qualified” kiểm tra tính hợp lệ của tất cả các elements trong trang XML elementFormDefault=“unqualified” chỉ kiểm tra tính hợp lệ của các global element
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
55
* Chú ý: - Thuộc tính targetNamespace là một tùy chọn có thể khơng cần chỉ ra targetNamespace cho một schema
5.2.2 Tham chiếu đến schema từ trang XML <?xml version =“1.0”?> xmlns:xsl= /><book> xsl:schemaLocation=: BookStore.xsd” <title>My life and Times</title> <author>Paul MeCartney</author> <date>July, 1998</date> <ISBN>94303-12021-43892</ISBN> MeMilin Puplishing</puplisher> </book> </BookStore>
-
Khai báo namespace mặc định, thông báo cho schema- validator biết tất cả các
thành phần khai báo trong trang XML là có trong namespace -
Thơng báo cho schema-validator biết rằng thuộc tính schemaLocation là nằm
trong XMLschema-instance namespce -
Với schemaLocation thông báo cho schema - validator biết rằng
namespace là được định nghĩa trong BookStore.xsd 5.3 Quá trình kiểm tra tính hợp lệ của một trang XML
BookStore.xml
BookStore.xsd
XMLSchema.xsl
Đầu tiên trình duyệt sẽ kiểm tra tính hợp lệ của dữ liệu trong trang XML trước, căn cứ vào cấu trúc dữ liệu khai báo trong trang BookStore.xsd. Sau đó tiếp tục kiểm tra tính hợp lệ của trang BookStore.xsd, căn cứ vào các luật mô tả trong XMLSchema.xsd.
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
5.4 Lược đồ và không gian tên <schema xmlns= />targetNamespace=“”> ….. </schema>
- namespace của các từ khóa dùng trong sự xác định lược đồ XML, ví dụ: schema, targetNamespace,… - targetNamespace: định nghĩa namespace của lược đồ được xác định trong tài liệu <schema>…</schema> trên 5.5 Xây dựng lược đồ từ nhiều thành phần <schema xmlns= />targetNamespace=“ /><include schemaLocation=“ /><include schemaLocation=“ /><include schemaLocation=“ />…. </schema>
<include>: giống như #include trong ngôn ngữ C schemaLocation: cho biết nơi để lấy thông tin Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
57
5.6 Khai báo phần tử trong XML Schema Phần tử <schema> là phần tử gốc trong các tài liệu XML Schema. <?xml version="1.0"?> <xsd:schema xmlns:xsd= />targetNamespace= xmlns= elementFormDefault="qualified"> ...... </xsd:schema>
xmlns:xsd=" /> Phần tử và loại dữ liệu trong lược đồ được khai báo trong namespace và có tiền tố là xsd targetNamespace=
Các phần tử được định nghĩa trong lược đồ từ namespace xmlns="" namespace mặc định là xmlns="" elementFormDefault="qualified”
Bất kỳ phần tử nào được sử dụng trong tài liệu XML phải từ namespace đảm bảo chất lượng. 5.7 Các kiểu phần tử - Kiểu giản đơn (Simple type): là một phần tử XML chỉ có kiểu dữ liệu text, mà khơng có thuộc tính hoặc khơng thể chứa các phần tử khác. Kiểu text cũng có thể có nhiều loại: + Built-in data type + User-defined data type Người dùng có thể thêm ràng buộc cho kiểu dữ liệu để giới hạn nội dung của nó, hoặc yêu cầu dữ liệu thỏa mãn một mẫu nào đó. - Kiểu phức hợp (Complex type): là một phần tử XML có thuộc tính, hoặc chứa các phần tử con khác. 5.7.1 Định nghĩa một phần tử giản đơn <xsd:element name="xxx" type="yyy"/>
xxx: tên của phần tử yyy: kiểu dữ liệu của phần tử Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
58
5.7.2 Các kiểu dữ liệu thông dụng: Kiểu
Mô tả
Binary
Kiểu dữ liệu nhị phân
Boolean
Kiểu luận lý
Byte
Kiểu byte
Century
Kiểu thế kỷ
Date
Kiểu ngày
Decemal
Kiểu thập phân
Double
Kiểu số thực 64bit
ENTITY
Kiểu thực thể
ENTITIES
Kiểu đa thực thể
ID
Kiểu định danh
Int, Integer
Kiểu số nguyên
IDREF
Kiểu tham chiếu định danh
NOTATION
Kiểu ghi chú
MNTOKEN
Kiểu token đơn
MNTOKENS
Kiểu đa token
Month
Kiểu tháng
String
Kiểu chuỗi
5.7.3 Ví dụ Các phần tử XML: <lastname>Refsnes</lastname> <age>36</age> <dateborn>1970-03-27</dateborn>
Định nghĩa phần tử đơn giản: <name="lastname" type="xsd:string"/> <name="age" type="xsd:integer"/> <name="dateborn" type="xsd:date"/>
5.8 Giá trị mặc định và cố định Giá trị mặc định: <xsd:element name="color" type="xsd:string" default="red"/>
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
59
Giá trị cố định: <xsd:element name="color" type="xsd:string" fixed="red"/>
Trong đó: Thuộc tính trong XSD được khai báo như một kiểu giản đơn. Các phần tử giản đơn khơng thể có thuộc tính. Nếu một phần tử có thuộc tính, thì phần tử đó được xem là phần tử phức hợp. 5.9 Khai báo thuộc tính và các ràng buộc <xsd:attribute name="xxx" type="yyy"/>
xxx: tên của thuộc tính yyy: kiểu dữ liệu của thuộc tính. Ví dụ: Phần tử XML có thuộc tính: <lastname lang="EN">Smith</lastname>
5.9.1 Định nghĩa thuộc tính trong XSD <xsd:attribute name="lang" type="xsd:string"/>
5.9.2 Khai báo loại thuộc tính Khai báo default: <xsd:attribute name="lang" type="xsd:string" default="EN"/>
Khai báo fixed:
fixed="EN"/>
Khai báo requyred: use="requyred"/>
5.9.3 Ràng buộc nội dung - Khi một phần tử hay thuộc tính đã định nghĩa kiểu dữ liệu, phần tử hay thuộc tính đó đã có ràng buộc về nội dung. - Người dùng có thể thêm các ràng buộc cho phần tử hay thuộc tính. 5.9.4 Ràng buộc giá trị Kiểu miền con: <xsd:element name="age"> <xsd:simpleType>
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
5.9.5 Ràng buộc về ký tự dấu cách <xsd:element name="address"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:whiteSpace value="preserve"/> </xsd:restriction> </xsd:simpleType> </xsd:element>
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
62
<xsd:whiteSpace value="preserve"/>: XML parser sẽ không loại bỏ bất kỳ ký tự dấu cách nào. <xsd:whiteSpace value=“replace"/>: XML parser sẽ thay thế tất cả ký tự dấu cách (line feed, tab, space, carriage return) bằng khoảng trắng. <xsd:whiteSpace value=“collapse"/>: XML parser sẽ loại bỏ tất cả ký tự dấu cách dư (line feed, tab, space, carriage return) bằng khoảng trắng. 5.9.6 Ràng buộc về độ dài <xsd:element name="password"> <xsd:simpleType> <xsd:restriction base="xsd:string">
5.9.7 Định nghĩa phần tử phức hợp Phần tử phức hợp là một phần tử XML chứa các phần tử khác hoặc có thuộc tính. Có 4 loại phần tử phức hợp: - Phần tử rỗng - Phần tử chỉ chứa các phần tử khác - Phần tử chỉ chứa văn bản - Phần tử vừa chứa các phần tử khác, vừa chứa văn bản Ví dụ: <employee> <firstname>John</firstname> Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
63
<lastname>Smith</lastname> </employee> <food type="dessert">Ice cream</food> <description> It happened on <date lang="norwegian">03.03.99</date> .... </description>
5.9.7.1 Định nghĩa một phần tử phức hợp trong XSD Trong tài liệu XML <employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Có nhiều cách để định nghĩa phần tử employee… Cách 1: <xsd:element name="employee"> <xsd:complexType> <xsd:sequence> <xsd:element name="firstname" type="xsd:string"/> <xsd:element name="lastname" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element>
Cách 2: <xsd:element name="employee" type="personinfo"/> <xsd:complexType name="personinfo">
5.10 Ví dụ về XML, XSD VÀ XSL Tập tin person.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="person.xsl"?> <PersonInfo xmlns:xsd=" />xsd:schemaLocation="person.xsd"> <Person> <name>Nguyễn Phương Lan</name> <address>Quận 5</address> <city>Hồ Chí Minh</city> <gender>F</gender> </Person> <Person> <name>Đồn Văn Ban</name> <address>Cầu Giấy</address> <city>Hà Nội</city> <gender>M</gender> </Person> Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
65
</PersonInfo>
Tập tin person.xsd <xsd:schema xmins xsd=" version="1.0"> <xsd:element name="PersonInfo"> <xsd:complexType> <xsd:element name="Person"> <xsd:complexTye> <xsd:sequence> name="name"
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
67
Kết chương Chúng ta đã tìm hiểu qua về khái niệm và định nghĩa kiểu tư liệu cho các phần
tử trong tài liệu XML thông qua lược đồ. Lược đồ XML là một sự cố gắng nhằm chuẩn hóa và đem lại sự linh động thay thế cho DTD. Mặc dù lược đồ XML chưa được phổ biến rộng rãi và đang trong giai đoạn phát triển đặc tả nhưng chắc chắn nó sẽ trở thành một định nghĩa chuẩn trong tương lai. Câu hỏi củng cố: 1. Hãy cho biết những ưu, nhược điểm của lược đồ trong XML? 2. So sánh lược đồ XML và DTD? 3. Định nghĩa, khai báo các phần tử trong lược đồ? 4. Ứng dụng lược đồ để xây dựng một ứng dụng thực tế.
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
68
Chương 6
DOM VÀ XỬ LÝ XML VỚI JAVASCRIPT Mục tiêu học tập: Sau khi học xong chương này người học sẽ: - Hiểu được mơ hình DOM, cách nạp và xử lý dữ liệu. - Biết cách truy xuất nội dung và thuộc tính của các nút dữ liệu, thay đổi nội dung XML bằng JavaScript. - Ứng dụng JavaScript vào XML. Tóm tắt chương Chương này giới thiệu cách dùng JavaScript để xử lý dữ liệu XML theo mơ hình DOM. Mặc dù DOM xử lý và truy xuất được mọi dữ liệu trong tài liệu XML, nhưng mơ hình khá phức tạp vì phải lần theo các nút trong cây tài liệu. 6.1 Mơ hình DOM W3C định nghĩa tài liệu XML theo mơ hình đối tượng tài liệu DOM (Document Object Model). Mơ hình này, tài liệu của chúng ta là một cây bao gồm các nút (node).
Nội dung các nút này có thể chứa các phần tử (element), dữ liệu văn bản (text), thuộc tính (attribute)… và các nút con khác. Các nút trong mơ hình DOM: Nút
Mơ tả
Element
Phần tử XML
Attribute
Thuộc tính
Text
Dữ liệu text
CDATA section
Phân đoạn CDATA
Entity reference
Tham chiếu thực thể
Entity
Thực thể
Processing Instruction
Chỉ thị xử lý
Comment
Chú thích
Document
Tài liệu
Document Type
Kiểu tư liệu
Document fragment
Đoạn tài liệu
Notation
Ghi chú
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
69
Ví dụ: Chúng ta có tài liệu XML sau: <?xml version=”1.0” encoding=”UTF-8”?> <DOCUMENT> <GREETING> Hello From XML </GREETING> <MESSAGE> Welcome to the wild and woolly word of XML </MESSAGE> </DOCUMENT>
Tài liệu trên có thể phân theo cấu trúc hình cây bao gồm các nút đối tượng. <DOCUMENT>
<GREETING>
Hello From XML
<MESSAGE>
Welcome to the wild and woolly word of XML
Phần tử <DOCUMENT> là một nút bao gồm hai nút con là <GREETING> và <MESSAGE>. Hai nút <GREETING> và <MESSAGE> lần lượt chứa nút con khác lưu dữ liệu dạng text với nội dung “Hello From XML” và “Welcome to the wild and woolly word of XML”. Toàn bộ cấu trúc trên chính là mơ hình DOM. Khi phân tích cây tài liệu DOM ta xem mỗi nút là một đối tượng (object). DOM còn cung cấp các phương thức như nextChild(), lastSibling()… để đi đến toàn bộ các nút con khác.
6.2 Nạp tài liệu XML cần xử lý bằng JavaScript Có hai cách nạp dữ liệu XML vào trình duyệt IE bằng JavaScript. - Cách 1: Dùng lớp đối tượng Microsoft.XMLDOM - Cách 2: Dùng phần tử nạp dữ liệu <XML> Chúng ta sử dụng ví dụ (tập tin meetings.xml) sau để xử lý bằng Java Script theo mơ hình DOM. (Tạo tập tin meetings.xml chứa thông tin của những người tham gia cuộc họp)
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
70
Ví dụ: <?xml version = “1.0”?> <MEETINGS> <MEETING TYPE = “informal”> <MEETING_TITLE> XML In The Real Word </MEETING_TITLE> <MEETING_NUMBER> 2079 </MEETING_NUMBER> <SUBJECT> XML</SUBJECT> <DATE> 6/1/2002 </DATE> <PEOPLE> <PERSON ATTENDENCE= “present”> <FIRST_NAME> Edward </FIRST_NAME> <LAST_NAME> Edward </LAST_NAME> </PERSON> <PERSON ATTENDENCE= “absent”> <FIRST_NAME> Ernestine </FIRST_NAME> <LAST_NAME> Johnson </LAST_NAME> </PERSON>
Tiếp theo, chúng ta tạo tài liệu viewdata.html bên dưới chứa đoạn mã JavaSript để đọc và phân tích tài liệu XML trên. Trước hết ta cần tạo ra đối tượng xử lý DOM của Microsoft. Như vậy, để thực hiện được điều này, ta gọi toán tử new để tạo mới đối tượng ActiveXObject với tên lớp là Microsoft.XMLDOM. <HTML> <HEAD> <TITLE> Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument() { var xmldoc
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
71
xmldoc = new ActiveXObject (“Microsoft.XMLDOM”) . .
. </SCRIPT> </HEAD> </HTML>
Tiếp đến chúng ta nạp tài liệu meetings.xml cần xử lý vào trình duyệt <HTML> <HEAD> <TITLE> Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument() { var xmldoc xmldoc = new ActiveXObject (“Microsoft.XMLDOC”) xmldoc.load (“meetings.xml”); . . . </SCRIPT> </HEAD> </HTML>
Để duyệt qua tất cả các nút trong cây tài liệu theo mơ hình DOM, ta cần xuất phát từ nút gốc. Trong tài liệu meetings.xml ở trên ta thấy <MEETINGS> là phần tử gốc của tài liệu. Chúng ta gọi phương thức documentElement để đến nút gốc của tài liệu DOM như sau: <HTML> <HEAD>
<TITLE> Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument()
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
72
{ var xmldoc, meetingsNode xmldoc = new ActiveXObject (“Microsoft.XMLDOM”) xmldoc.load (meetings.xml); meetingsNode = xmldoc.documentElement . . . </SCRIPT> </HEAD> </HTML>
Chúng ta khai báo thêm biến meetingsNode để lưu giữ nút gốc. Lúc này chúng ta hồn tồn có thể duyệt tồn bộ tài liệu bằng cách đi qua các nút của cấu trúc cây DOM. * Các phương thức duyệt qua các nút: firstChild: lấy nút con đầu tiên nextChild: lấy nút con kế tiếp previousChild: lấy nút con trước đó lastChild: lấy nút con sau cùng
* Ngồi ra cịn có các phương thức: firstSibling: trả về nút con cùng cấp đầu tiên nextSibling: trả về nút con cùng cấp kế tiếp previousSibling: trả về nút con cùng cấp trước đó lastSibling: trả về nút con cùng cấp sau cùng Ví dụ như <MEETING> là nút con của nút gốc <MEETINGS> và ta có thể gọi phương thức fistChild để chuyển đến nút này như sau: <HTML> <HEAD> <TITLE> Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument() { var xmldoc, meetingsNode, meetingNode xmldoc = new ActiveXObject (“Microsoft.XMLDOM”)
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
Chúng ta muốn tìm phần tử <PERSON> thứ 3 bên trong phần tử <PEOPLE>. Do <PEOPLE > là phần tử con cuối cùng của <MEETING> nên ta có thể lần ra nút dữ liệu này là: <HTML> <HEAD> <TITLE> Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument() { var xmldoc, meetingsNode, meetingNode peopleNode xmldoc = new ActiveXObject (“Microsoft.XMLDOM”) xmldoc.load (meetings.xml); meetingsNode = xmldoc.documentElement meetingNode = meetingsNode.fistChild peopleNode = meetingNode.lastChild . . . </SCRIPT> </HEAD> </HTML>
Bởi vì phần tử <PERSON> thứ 3 mà ta muốn lấy là nút con cuối cùng của <PEOPLE>, nên ta tiếp tục gọi phương thức lastChild của nút peopleNode. <HTML>
<HEAD> <TITLE> Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
74
Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument() { var xmldoc, meetingsNode, meetingNode peopleNode, personNode xmldoc = new ActiveXObject (“Microsoft.XMLDOM”) xmldoc.load (meetings.xml); meetingsNode = xmldoc.documentElement meetingNode = meetingsNode.fistChild peopleNode = meetingNode.lastChild personNode = peopleNode.lastChild . . . </SCRIPT> </HEAD> </HTML>
Cuối cùng ta muốn lấy thông tin về họ tên <FIRST_NAME>, <LAST_NAME> của phần tử <PERSON>. Chúng ta sử dụng phương thức fistChild và nextSlibling (lấy phần tử kế tiếp cùng cấp) như sau:
<HTML> <HEAD> <TITLE> Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument() { var xmldoc, meetingsNode, meetingNode peopleNode, personNode first_nameNode, last_nameNode xmldoc = new ActiveXObject (“Microsoft.XMLDOM”) xmldoc.load (meetings.xml); meetingsNode = xmldoc.documentElement meetingNode = meetingsNode.fistChild peopleNode = meetingNode.lastChild Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
Như vậy, chúng ta vừa đi qua tất cả các nút của cây tài liệu DOM để đến được các mục thông tin cần lấy. Cơng việc cịn lại là hiển thị thơng tin lấy được ra cửa sổ trình duyệt. Tiếp theo chúng ta sẽ tạo ra trang viewdata.html hoàn chỉnh bao gồm một nút nhấn, khi kích chuột vào nút nhấn sẽ trả về thơng tin của người thứ 3 tham dự cuộc họp trong tập tin meetings.xml. <HTML> <HEAD> <TITLE> Reading XML element values </TITLE> <SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument() { var xmldoc, meetingsNode, meetingNode peopleNode, personNode first_nameNode, last_nameNode var outputText xmldoc = new ActiveXObject (“Microsoft.XMLDOM”) xmldoc.load (meetings.xml); meetingsNode = xmldoc.documentElement meetingNode = meetingsNode.fistChild peopleNode = meetingNode.lastChild personNode = peopleNode.lastChild first_nameNode = personNode.firstChild last_nameNode = first_nameNode.nextSibling outputText = “Third name:” + first_nameNode.firstChild.nodeValue + „ „ + last_nameNode.firstChild.nodeValue
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng
76
messageDIV.innerHTML=ouputText } </SCRIPT> </HEAD> <BODY> <CENTER> <H1> Reading XML element values </H1> VALUE = “Get the name of the third person” ONCLICK = readXMLDocument()”> <P> <DIV ID =”messageDIV”></DIV> </CENTER> </BODY> </HTML>
6.3 Phần tử nạp dữ liệu Khi dùng phần tử <XML> nạp dữ liệu, nguồn dữ liệu được đặt trong thuộc tính SRC. Để truy xuất đến đối tượng, chúng ta dựa vào thuộc tính ID. Ví dụ: <HTML> <HEAD> <TITLE> Reading element values with XML element
<H1> Reading element values with XML data islands </H1> VALUE = “Get the name of the third person” ONCLICK = “readXMLDocument ( )”> <P> <DIV ID = “messageDIV”></DIV> </CENTER> </BODY> </HTML>
Kết quả hiển thị vẫn khơng thay đổi Với thẻ <XML> chúng ta có thể nhúng trực tiếp toàn bộ dữ liệu XML trong tài liệu HTML, xem ví dụ sau: Ví dụ: <HTML> <HEAD> <TITLE> Reading element value with XML data islands </TITLE> <XML ID = “meetingsXML”> <?xml version “1.0”?> <MEETINGS> <MEETING TYPE = “informal”> <MEETING_TITLE> XML In The Real Word </MEETING_TITLE> <MEETING_NUMBER> 2079 </MEETING_NUMBER> <SUBJECT> XML </SUBJECT> Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng