Kiểu Mô tả Binary Boolean Byte Century Date Decemal Double ENTITY ENTITIES ID Int, Integer IDREF NOTATION MNTOKEN MNTOKENS Month String
Kiểu dữ liệu nhị phân Kiểu luận lý Kiểu byte Kiểu thế kỷ Kiểu ngày Kiểu thập phân Kiểu số thực 64bit Kiểu thực thể Kiểu đa thực thể Kiểu định danh Kiểu số nguyên
Kiểu tham chiếu định danh Kiểu ghi chú
Kiểu token đơn Kiểu đa token Kiểu tháng 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:
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:
<xsd:attribute name="lang" type="xsd:string" fixed="EN"/>
Khai báo requyred:
<xsd:attribute name="lang" type="xsd:string" 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>
<xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="120"/> </xsd:restriction> </xsd:simpleType> </xsd:element>
Kiểu liệt kê:
<xsd:element name="car"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Audi"/> <xsd:enumeration value="Golf"/> <xsd:enumeration value="BMW"/> </xsd:restriction> </xsd:simpleType> </xsd:element> Giới hạn giá trị: <xsd:element name="letter"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-z]"/> </xsd:restriction> </xsd:simpleType> </xsd:element> Hoặc: <xsd:element name="initials"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xsd:restriction> </xsd:simpleType> </xsd:element>
Hoặc dùng ký tự đại diện: <xsd:element name="letter"> <xsd:simpleType>
<xsd:pattern value="([a-z])*"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="letter"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="([a-z][A-Z])+"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="gender"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="male|female"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="password"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-zA-Z0-9]{8}"/> </xsd:restriction> </xsd:simpleType> </xsd:element> 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>
<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"> <xsd:length value="8"/> </xsd:restriction> </xsd:simpleType> </xsd:element> Hoặc: <xsd:element name="password"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="5"/> <xsd:maxLength value="8"/> </xsd:restriction> </xsd:simpleType> </xsd:element> 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ụ:
<product pid="1345"/> <employee>
<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">
<xsd:sequence>
<xsd:element name="firstname" type="xsd:string"/> <xsd:element name="lastname" type="xsd:string"/>
</xsd:sequence> </xsd:complexType>
5.9.7.2 Định nghĩa phần tử rỗng <product prodid="1345" /> <xsd:element name="product">
<xsd:complexType>
<xsd:attribute name="prodid" type="xsd:positiveInteger"/>
</xsd:complexType> </xsd:element>
5.9.7.3 Định nghĩa phần tử chỉ chứa phần tử con
<person> <firstname>John</firstname> <lastname>Smith</lastname> </person> Ví dụ: <xsd:element name="person"> <xsd:complexType> <xsd:sequence>
<xsd:element name="firstname" type="xsd:string"/> <xsd:element name="lastname" type="xsd:string"/>
</xsd:sequence> </xsd:complexType> </xsd:element> 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="http://www.w3.org/2001/XMLSchema" 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>Đoàn Văn Ban</name> <address>Cầu Giấy</address> <city>Hà Nội</city>
<gender>M</gender> </Person>
</PersonInfo>
Tập tin person.xsd
<xsd:schema xmins xsd="http://www.w3.org/2001/XMLSchema" version="1.0"> <xsd:element name="PersonInfo">
<xsd:complexType>
<xsd:element name="Person"> <xsd:complexTye>
<xsd:sequence>
<xsd:element name="name" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="address" type="xsd:string" maxOccurs="unbounded" minOccurs="0"/>
<xsd:element name="city" type="xsd:string" maxOccurs="unbounded" minOccurs="0"/> <xsd:simpleType name="gender"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="F"/> </xsd:restriction> </xsd:simplpeType> </xsd:sequence> </xsd:complexTye> </xsd:element> </xsd:schema> Tập tin person.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Tac gia</title> </head> <body> <h1>Danh sách các tác giả</h1> <p>Nhà sách Minh Khai</p> <table border="1"> <tr> <th>Name</th>
<th colspan="2">Addresses</th> <th colspan="2">City</th> <th>Gender</th> </tr> <xsl:for-each select="PersonInfo/Person"> <tr>
<td><b><i><xsl:value-of select="name"/> </i></b></td> <td> <xsl:for-each select="address"> <td><xsl:value-of select="."/></td> </xsl:for-each> </td> <td> <xsl:for-each select="city"> <td><xsl:value-of select="."/></td> </xsl:for-each> </td>
<td><b><i><xsl:value-of select="gender"/> </i></b></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
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ế.
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 Attribute Text CDATA section Entity reference Entity Processing Instruction Comment Document Document Type Document fragment Notation Phần tử XML Thuộc tính Dữ liệu text
Phân đoạn CDATA Tham chiếu thực thể Thực thể
Chỉ thị xử lý Chú thích Tài liệu Kiểu tư liệu Đoạn tài liệu Ghi chú
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.
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 tinmeetings.xml chứa thông tin của những người tham gia cuộc họp)
<DOCUMENT>
<GREETING> <MESSAGE>
Hello From XML Welcome to the wild and woolly word of XML
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>
<PERSON ATTENDENCE= “present”> <FIRST_NAME> Betty </FIRST_NAME> <LAST_NAME> Richardson </LAST_NAME> </PERSON>
</PEOPLE> </MEETING> </MEETINGS>
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() {
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()
{
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 hoàn toàn có thể duyệt toà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 * Ngoà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 concù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.load (meetings.xml); meetingsNode = xmldoc.documentElement meetingNode = meetingsNode.fistChild . . . </SCRIPT> </HEAD> </HTML>
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>
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
personNode = peopleNode.lastChild first_nameNode = personNode.firstChild last_nameNode = first_nameNode.nextSibling . . . </SCRIPT> </HEAD> </HTML>
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ệccò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 + „ „
messageDIV.innerHTML=ouputText } </SCRIPT> </HEAD> <BODY> <CENTER>
<H1> Reading XML element values </H1>
<INPUT TYPE =”BUTTON”
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 <TITLE>
<XML ID= “meetingsXML” SCR = “meetings.xml”></XML>
<SCRIPT LANGUAGE = “javaScript”> Function readXMLDocument ( ) {
var xmldoc, meetingsNode, meetingNode, peopleNode, first_nameNode, last_nameNode var outputText
xmldoc = document.all (“meetingsXML”).XMLDocument
meetingsNode = xmldoc.documentElement meetingNode = meetingsNode.firstChild peopleNode = meetingNode.lastChild personNode = peopleNode.lastChild
first_nameNode = personNode.firstChild last_nameNode = first_nameNode.nextSibling outputText=“Third name:”+ first_nameNode.firstChild.nodeValue + „ „ + last_nameNode.firstChile.nodeValue messageDIV.innerHTML = outputText } </SCRIPT> </HEAD> <BODY> <CENTER> <H1>
Reading element values with XML data islands </H1>
<INPUT TYPE = “BUTTON”
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>
<DATE> 6/1/2002 </DATE> <PEOPLE>
<PERSON ATTENDENCE= “present”>
<FIRST_NAME> Edward </FIRST_NAME> <LAST_NAME> Samson </LAST_NAME> </PERSON>
<PERSON ATTENDENCE= “absent”>
<FIRST_NAME> Ernestine </FIRST_NAME> <LAST_NAME> Johnson</LAST_NAME> </PERSON>
<PERSON ATTENDENCE= “present”>
<FIRST_NAME> Betty </FIRST_NAME> <LAST_NAME> Richardson </LAST_NAME> </PERSON>
</PEOPLE> </MEETING> </MEETINGS>
</XML>
<SCRIPT LANGUAGE = “JavaScript”> Function readXMLDocument () {
var xmldoc, meetingsNode, meetingNode, peopleNode, first_nameNode, last_nameNode var outputText
xmldoc = document.all (“meetingsXML”). XMLDocument meetingsNode = xmldoc.documentElement
meetingNode = meetingsNode.firstChild peopleNode = meetingsNode.lastChild first_nameNode = personNode.firstChild last_nameNode = first_nameNode.nextSibling outputText = “Third name:” +
first_nameNode.firstChild.nodeValue + „ „ + last_nameNode.firstChild.nodeValue messageDIV.innerHTML = outputText } </SCRIPT> </HEAD> <BODY> <CENTER>
<H1>
Reading element values with XML data islands </H1>
<INPUT TYPE = “BUTTON”
VALUE = “Get the name of the third person” ONCLICK = “readXMLDocument ()”>
<P>
<DIV ID = “messageDIV”> </DIV> </CENTER>
</BODY> </HTML>
Thay vì dùng lệnh xmldoc=document.all (“meetingsXML”).XMLDocument
để lấy về nút gốc trong cấu trúc tài liệu DOM, chúng ta có thể dùng trực tiếp thuộc tính documentElement từđịnh danh của nguồn dữ liệu <XML> như sau:
Xmldoc = meetingsXML.documentElement
6.4 Truy xuất các nút dữ liệu dựa vào tên
Bắt đầu từ nút gốc, chúng ta đã duyệt qua cấu trúc dữ liệu DOM dựa vào các phương thức như firsChild, nextSibling… Tuy nhiên, chúng ta cũng có thể dùng trực tiếp tên của phần tử để lấy ra danh sách các nút thỏa mãn theo một điều kiện tìm kiếm nào đó.
Ví dụ, chúng ta muốn tìm các thông tin về <FIRST_NAME> và <LAST_NAME> ta có thể dùng phương thức getElementsByTagName để lấy danh sách các nút.
Ví dụ: