Các hàm API XPath c"a Java
Page 1 of 9
Các hàm API XPath c a Java
M c
: Trung bình
Elliotte Rusty Harold, K s ph n m m, Polytechnic University
17 07 2009
C p nh t 25 08 2008
Vi t các bi u th c XPath d h n r t nhi u nhi u so v i vi c vi t mã chuy n h ng Mô hình
i t ng tài li u (Document Object Model - DOM) chi ti t. Khi b n c n rút trích thông tin
t tài li u XML thì cách nhanh nh t và n gi n nh t là nhúng bi u th c XPath vào bên
trong ch ng trình Java™. Java 5 gi i thi u gói java.xml.xpath, m t th vi n c l p mô
hình i t ng XML dùng truy v n các tài li u XML v i XPath.
27/06/2007 - T các góp ý c a ng i c, tác gi
biên d ch (tham kh o ph n mã ng n Ví d 3).
ã c p nh t các bi u th c XPath ã
c
25/08/2008 - T các góp ý c a ng i c, tác gi ã thay " />thành " trong Ví d 6, không gian tên (namespace)
c
c p n trong o n v n tr c Ví d 9, và Ví d 9.
N u b n g i m t ai ó mua cho b n m t chai s a thì b n s
ngh nh th nào n ng i ó nh h
mua cho b n? "Làm n mua h tôi m t chai s a" hay là nói " i ra ngoài thông qua c a tr c. R trái
ph n v a hè dành cho ng i i b . i b qua ba ngã t . R ph i. i b thêm m t o n n a. R ph i và i
vào c a hàng. i t i gian th t . i b kho ng n m mét r i i xu ng gian d i. R trái. C m l y m t h p
s a. Mang h p s a ra bàn thanh toán. Thanh toán ti n cho chai s a ó. Và sau ó i ng c l i o n
ng
v a i
i v nhà b n." i u này th t là n c c i. H u h t a tr! u " thông minh bi t cách mang
h p s a v nhà v i m t l i ch d#n n gi n "Làm n mua h tôi m t chai s a".
Các ngôn ng truy v n và c ch tìm ki m c"a máy tính c$ng t ng t nh nhau. Vi c "Tìm b n sao c"a
Cryptonomicon" d dàng h n là vi c vi t ra m t c u trúc logic chi ti t tìm ki m m t s c s d li u.
B i vì các thao tác tìm ki m có logic r t gi ng nhau nên b n có th
a ra các ngôn ng t%ng quát có
th th c hi n câu l nh nh "Tìm t t c các quy n sách c"a tác gi Neal Stephenson," và sau ó vi t m t c
ch x lý các truy v n ó d a vào các kho d li u nào ó.
XPath
Trong r t nhi u ngôn ng truy v n, Ngôn ng Truy v n Có c u trúc (SQL) là ngôn ng
c thi t k và
cho phép th c hi n truy v n trên các c s d li u quan h . Có m t s ít các ngôn ng truy v n bao g m
Ngôn ng truy v n i t ng (OOL) và XQuery. Tuy nhiên, ch" chính c"a bài vi t này là v XPath cho
nên ngôn ng truy v n
c thi t k
th c hi n x lý truy v n trên các tài li u XML. Ví d&, m t truy v n
XPath n gi n là tìm ra các tiêu c"a t t c các quy n sách trong tài li u c"a tác gi Neal Stephenson,
truy v n ph i trông có d ng nh sau:
Ng
c l i, c ch tìm ki m DOM thu n túy cho phép có thông tin cho d
Ví d 1. Mã DOM
tìm t t c các tiêu
!
&
'
"
"
(
#
#
"
c a các ph n t book có giá tr Neal Stephenson
$ % !
!
!
#
#
))
*
#
!
"
#
$ % !
#
&
&
+
'
+ (
!
i d ng nh trong Ví d& 1:
!
+))
*
Các hàm API XPath c"a Java
"
#
Page 2 of 9
"
#
# +
! ,
!$ &&
!
#
!$ &&
&
'
&
(
!
!
%
!
))
*
%".%/ 01"
*
2
3
3
&
!
4
*
3
3
&
*
!
&
+
'
"
+ (
#
$ % !
!
# +
!
#
+))
*
3
3
3
i u này có th tin ho'c không, o n mã DOM trong Ví d& 1 th c s không mang tính t%ng quát và dõ
dàng b(ng các bi u th c XPath n gi n. Cái mà cho phép b n có th vi t, s a l)i và b o trì
c t t h n?
Tôi ngh* câu tr l i ã r t rõ dàng.
Có m t i u ph i nh r(ng XPath không ph i là ngôn ng Java -- trong th c t , XPath không hoàn toàn là
m t ngôn ng l p trình. Có nhi u v n b n không th th y
c trong XPath, th m chí k c các câu
l nh truy v n c$ng không th
c t o ra trong XPath. Ví d&, XPath không không th tìm th y các quy n
sách ã ng ký s qu c t (ISBN) n u ki m tra không phù h p các mã ch s hay các tác gi c"a cu n
sách ó
c l y t c s d li u tài kho n bên ngoài. Th t may m+n, khi b n tích h p XPath vào trong
ch ng trình Java thì b n có th t n d&ng
c u th c"a c hai ngôn ng này: Java s gi i quy t t t
nh ng v n liên quan n Java, t ng t XPath s gi i quy t t t nh ng v n liên quan t i XPath.
Cho n th i i m g n ây, giao di n l p trình ng d&ng (API)
c các ch ng trình Java s d&ng t o
ra các câu truy v n XPath khác nhau d a trên c ch XPath. Xalan có m t API, Saxon có m t lo i khác và
các c ch khác s có các API khác. i u này có ngh*a r(ng o n mã c"a b n theo yêu c u h ng vào m t
s n ph,m nào ó c"a b n. Theo m t ý nào ó, b n có th làm th nghi m v i các c ch khác nhau có
c các 'c tr ng c b n khác nhau mà không quá ph c t p ho'c không c n ph i vi t l i o n mã.
Vì lý do này, Java 5 gi i thi u gói javax.xml.xpath cung c p y " các c ch , ng d&ng và mô hình
i t ng c l p th vi n XPath. Gói này c$ng có th áp d&ng
c trong Java 1.3 và các phiên b n sau
n u b n có cài 't ph n Java API for XML Processing (JAXP) 1.3. N(m trong các s n ph,m khác, Xalan
2.7 và Saxon 8 bao g m các th c thi c"a th vi n này.
M t ví d
n gi n
Tôi s b+t u b(ng vi c mô ph-ng m t cách chính xác các b c th c hành trong ph n này. Sau ó tôi
s t p trung nghiên c u vào m t s v n chi ti t c& th . Gi s b n mu n truy v n ra danh sách các
quy n sách c"a tác gi Neal Stephenson. Trong tr ng h p này, danh sách trong bi u m#u
c hi n th
nh trong Ví d& 2:
Ví d 2. Tài li u XML ch a thông tin các quy n sách
(
(
5
6''' 5
,
(
5
5
(
5'77889':79(
5;< :7(
5
(
(
(
(
(
(
5
5
5
(
5
5
5
Các hàm API XPath c"a Java
(
6''7 5
5$
! %
(
5
- (
5=
>
(
5>
(
5'?<8<;@:;'(
5
57 ::(
5
(
(
(
(
(
(
(
5
5
5
5
5
(
;::7 5
5A
(
5
5
(
5
(
5'7787?89@6(
5
5? 7'(
5
(
(
(
(
(
(
5
5
5
(BCC #
(
Page 3 of 9
-
CC5
5
Truy v n XPath cho phép tìm ra t t
c các quy n sách m t cách n
gi n: //book[author="Neal
Stephenson"].
tìm tiêu c"a
nh ng cu n sách này thì n gi n
ch làm thêm m t b c và lúc ó
bi u th c s có d ng //book
[author="Neal
Stephenson"]/title. Cu i cùng,
n u b n mu n truy v n các nút con
c"a ph n t title. B n s ph i làm
thêm m t b c n a có m t bi u th c
Stephenson"]/title/text().
Các nhà máy tr u t ng
XPathFactory là m t nhà máy tr u t ng (abstract factory).
Các m#u thi t k tr u t ng nhà máy này cho phép m t API
h) tr các mô hình i t ng khác nhau nh DOM, JDOM, và
Xom.
ch n m t mô hình khác, b n truy n m t URI xác nh
mô hình i t ng t i ph ng th c
XPathFactory.newInstance(). Ví d&, có l
ch n XOM. Tuy nhiên, trong th c t , DOM là mô hình i t ng
duy nh t mà API này h) tr
n gi .
y " nh sau //book[author="Neal
Bây gi tôi s
a ra m t ch ng trình n gi n th c hi n tìm ki m này t ngôn ng Java và sau ó in
ra tiêu c"a t t c các quy n sách tìm
c. u tiên b n c n ph i t i
c toàn b tài li u vào i t ng
DOM Document.
n gi n, tôi s gi nh r(ng tài li u
c s d&ng là t p books.xml n(m trong cùng
th m&c làm vi c hi n th i. ây là m t phân mã n gi n th c hi n phân tích tài li u và t o ra i
t ng Document t ng ng:
Ví d 3. S phân tích tài li u b ng JAXP
1
&
1
1
#
$
D
&
1
#
#
#
#
$
-
$
&
1
F#
ây là chu,n JAXP và DOM, là chu,n ã
D
&
#
!
$
E
B
c trình bày và
c nghiên c u.
Ti p theo b n t o ra XPathFactory:
.>
D
&
.>
Sau ó b n s d&ng factory
.>
it
.>
F
&
D
E
t o ra
it
ng XPath:
.>
ng XPath th c hi n biên d ch bi u th c XPath:
"F
F
F
#
Cu i cùng, b n th c hi n ánh giá bi u
th c XPath nh n
c k t qu . Khi
G
G
F
ánh giá chung: N u b n ch s d&ng bi u th c XPath
Các hàm API XPath c"a Java
Page 4 of 9
bi u th c
c ánh giá v i m&c ích a
ra n i dung c& th c"a nút thì trong
tr ng h p này c n ph i làm vi c bên
trong toàn b tài li u. Nó c$ng c n thi t
ph i xác nh ki u tr l i:
0 +
F
-
m t l n, b n mu n b- qua b c biên d ch và g i ph ng
th c evaluate() trên i t ng XPath thay th . Tuy
nhiên, n u b n s d&ng l i bi u th c m#u này thì trình biên
d ch làm vi c có v! nhanh h n.
H .>
,
01" "%
Sau ó b n có th g p k t qu t i DOM NodeList và th c hi n l'p i l'p l i
&
'
(
!
!
#
#
))
!
tìm ra t t c các tiêu
:
*
2
3
Ví d& 4 't t t c vào thành m t ch ng trình n gi n. Chú ý r(ng các ph ng th c này c$ng có th n+m
b+t
c m t s ngo i l ki m tra vì th ph i mô t thêm m nh throws:
Ví d 4. M t ch
xác nh
#
#
#
#
#
ng trình hoàn thi n
th c hi n truy v n tài li u XML v i m t bi u th c XPath
+ E0"F
! 8
# I
! F#
F
."F
+ - F F#
I
+ - F F# F
I
.>
>
E0"F
1
#
"F #
,
#
& !
H .>
$
!
H
"F
#D
."F
H
*
1
#
#
#
#
.>
.>
.>
!
"F
"F
D
#D
1
1
*
$
-
$
#D
1
D
&
#
!
$
E
B
F#
D
F
"F
&
.>
&
D
E
.>
F
F
#
G
0 +
F
&
'
-
(
#
G
H .>
!
!
#
,
))
!
F
01" "%
*
2
3
3
3
Mô hình d
li u XPath
Khi b n tr n hai ngôn ng khác nhau nh XPath và Java, b n c n chú ý t i các i m n i c"a hai ngôn ng
ó. T t nhiên không ph i m i i u phù h p u úng. Ngôn ng Java và XPath không ph i là hai h th ng
gi ng h t nhau. XPath 1.0 ch có b n ki u c b n sau:
T p h p nút (node-set)
Ki u s (number)
Ki u logic (boolean)
Ki u chu)i ký t (string)
Trong ngôn ng Java có nhi u ki u h n bao g m c các ki u
d&ng.
it
ng
c
nh ngh*a b i ng
is
H u h t các bi u th c XPath, 'c bi t là các
ng d#n, s là các b nút. Tuy nhiên, có th có m t s kh
n ng khác. Ví d&, Bi u th c count(//book) tr l i s các quy n sách có trong tài li u. Bi u th c XPath
count(//book[@author="Neal Stephenson"]) > 10 tr l i m t lu n lý: úng n u có nhi u h n 10
Các hàm API XPath c"a Java
Page 5 of 9
quy n sách c"a tác gi Neal Staphenson trong tài li u ng
sai n u n u có ít h n 10.
c l i n u có ít h n 10 quy n sách trong tài li u,
Ph ng th c evaluate()
c mô t tr l i Object. i t ng gì
c tr l i chính xác tùy thu c vào
k t qu trong bi u th c XPath và ki u c"a i t ng c$ng t ng ng v i ki u các b n a ra.
Ki
Ki
Ki
Ki
u s t ng ng v i gói java.lang.Double
u chu)i ký t t ng ng v i gói java.lang.String
u logic t ng ng v i gói java.lang.Boolean
u t p h p nút t ng ng v i gói org.w3c.dom.NodeList
Khi b n th c hi n ánh giá bi u th c XPath
trong Java, tham bi n th hai xác nh ki u tr
l i mà b n mu n. Có n m kh n ng có th và
t t c các h(ng s
u l u n(m trong l p
javax.xml.xpath.XPathConstants:
XPath 2
Gi s b n ang làm vi c v i XPath 1.0. XPath 2 cho
phép m r ng và s d&ng l i ki u h th ng c b n. S
thay %i chính trong Java XPath API cho phép h) tr
XPath 2 thêm vào m t s ki u d li u m i c"a XPath.
XPathConstants.NODESET
XPathConstants.BOOLEAN
XPathConstants.NUMBER
XPathConstants.STRING
XPathConstants.NODE
Tr ng h p cu i cùng XPathConstants.NODE không th c s phù h p trong ki u c"a XPath. B n s
d&ng nó khi b n bi t chính xác bi u th c XPath s ch tr l i m t nút ho'c b n không mu n có nhi u h n
m t nút k t qu . N u bi u th c XPath tr l i nhi u h n m t nút thì b n ph i xác nh b(ng cách s d&ng
XPathConstants.NODE, sau ó dùng ph ng th c evaluate() tr l i nút u tiên trong tài li u cho
phép. N u bi u th c XPath l a ch n m t t p h p r)ng và b n s d&ng XPathConstants.NODE thì
ph ng th c evaluate() tr l i giá tr r)ng.
N u chuy n %i theo yêu c u không
XPathException.
Các ng
c th c hi n thì ph
ng th c evaluate() b+t
c ngo i l
c nh không gian tên (Namespace contexts)
N u các ph n t trong tài li u n(m trong m t không gian tên thì bi u th c XPath cho truy v n khi th c
hi n thì ph i s d&ng úng không gian tên. Bi u th c XPath không c n s d&ng các ti n t gi ng nhau mà
ch c n s d&ng các không gian tên URI gi ng nhau. Vì v y, khi tài li u XML s d&ng không gian tên m'c
nh thì bi u th c XPath ph i s d&ng ti n t m'c dù m&c tiêu tài li u không s d&ng nó.
Tuy nhiên, Ch ng trình Java không ph i là m t tài li u XML nên gi i pháp không gian tên thông th ng
không áp d&ng. Thay vì b n cung c p i t ng t ng ng v i các d ng ti n t t i các không gian tên
URI. i t ng này là ví d& c"a giao di n javax.xml.namespace.NamespaceContext. Ví d&, gi s
tài li u v các quy n sách
c l u trong không gian tên có d ng nh
trong Ví d& 5:
Ví d 5. Tài li u XML s d ng không gian tên m c
(
(
F#
J
6''' 5
5
,
(
5
5
(
5'77889':79(
5;< :7(
5
(
(
(
(
(
(
5
(BCC #
(
-
CC5
5
F #
#
5
(
5
5
5
nh
5
Các hàm API XPath c"a Java
Page 6 of 9
Bi u th c XPath th c hi n tìm ki m các tiêu c"a t t c các quy n sách c"a tác gi Neal Staphenson có
d ng nh sau //pre:book[pre:author="Neal Stephenson"]/pre:title/text(). Tuy nhiên, b n
ph i xác nh thêm ti n t pre t i a ch URI Nh ng i u này có chút
r+c r i ó là giao di n NamespaceContext không ph i là giao di n th c thi m'c nh trong b công c&
phát tri n ph n m m Java (JDK) ho'c JAXP, nh ng i u ó không quan tr ng l+m. Tuy nhiên, v n này
r t là khó
th c thi theo yêu c u c"a chính b n. Ví d& 6 mô ph-ng m t th c thi n gi n cho m t
không gian tên xác nh. B n nên xác nh t ng ng thêm ti n t xml rõ ràng h n.
Ví d 6. M t ng c nh
#
#
#
+ + - F F#
+ - F F#
n gi n
#
#
! !
& F
&
&
nh
E
I
>
&
th c hi n bu c m t không gian tên cùng v i giá tr m c
,
#
,
#
KLE
F
F
#
#
!
#
& F
>
4
4
F#
.M ,
& F
& F
/ /KLE
K
,
*
"F
J
F #
.M /
.M ,
F
*
& F
#
/KLE
3
%
#
G
> & F
! !
K
&
.>
*
"F
!
0
!
3
%
#
G
E
!
&
>
& F
K
.>
!
!
0
*
"F
3
3
Th t không khó s d&ng m t ánh x
th c hi n l u tr các thông tin ã
c g+n vào và thêm vào các
ph ng th c kh i t o cho phép s d&ng d&ng l i nhi u h n ng c nh không gian tên.
Sau khi b n t o ra i t ng NamespaceContext thay vì v y cài 't trên i t ng XPath tr c khi th c
hi n biên d ch bi u th c. T th i i m này tr i b n có có th th c hi n truy v n b(ng cách s d&ng
nh ng d ng ti n t này phía tr c. Ví d&:
Ví d 7. Truy v n XPath s d ng các không gian tên
.>
.>
F
.>
F
D
&
&
#
"F
F
.>
D
E
.>
,
F
>
#
,
F
F
#
J
0 +
F
&
'
#
J
(
G
H .>
!
!
#
G
,
))
!
J
F
01" "%
*
2
3
Các trình phân tích hàm
Trong m t s tr ng h p, nó r t hi u qu khi nh ngh*a các hàm m r ng trong ngôn ng Java s d&ng
trong các bi u th c XPath. Các hàm này th c hi n các nhi m v& khó mà không th th c hi n b(ng XPath
thu n túy. Tuy nhiên, các hàm theo ngh*a nên úng là các hàm vì v y các hàm này không th là các
ph ng th c n gi n
c. (Các hàm XPath có th
c ánh giá theo nhi u cách và nhi u th i i m
khác nhau.)
Các hàm API XPath c"a Java
Page 7 of 9
Các hàm m r ng th c hi n truy c p thông qua Java XPath API ph i th c thi
c giao di n
javax.xml.xpath.XPathFunction. Giao di n này khai báo m t ph ng th c dánh giá n gi n:
0 +
-
!
.>
D
"F
Ph ng th c này nên tr l i m t trong n m ki u giá tr mà ngôn ng Java
XPath:
có th chuy n %i
c sang
String
Double
Boolean
Nodelist
Node
C& th , Ví d& 8 hi n th hàm m r ng xác nh giá tr ki m tra trong ISBN và tr l i k t qu có ki u
Boolean. Nguyên t+c c b n c"a ki m tra t%ng này là m t trong chín s
u tiên
c nhân b i v trí c"a
nó ( ó là, s
u ch l n m t, s th hai ch l n hai, và ...). Các giá tr này
c thêm vào và
c nh+c l i
sau khi th c hi n chia cho 11 có
c k t qu . N u s còn l i là m i thì s cu i cùng
c xác nh là
X
Ví d 8. Hàm m r ng XPath dành cho vi c ki m tra ISBNs
#
#
#
+ + - F F#
! 8
F
# I
I
E $ 2
#
#
%
#
0 +
&
.>
-
!
D
#
!
!
N
.>
B
!
!
;
*
.>
D
!
#
"F
*
*
D
"F
O
&
! #
-
C
3
!
0 +
&
#
'
&
&
!
& $
& 1
&
&
&
&
!
E
!
!
!
'
!
!
*
# '
% F ,
= - ; <
10M 6H
#
! % F ,
= -
7
G
10M 8
-
3
*
.>
D
"F
,
-
! #
3
&
!
#
&
B
,
;'
$
D
"
'
'
# )
( :
))
); I
*
CG'G
3
!
&
!
$
# P ;;
) G'G
%LK"
:
QQ
:
G.G RR
!
;'
*
3
$
D
"
3
3
B
c ti p theo là t o ra hàm m r ng
c h) tr ch
ng trình Java.
làm i u này b n cài 't
i t ng XPath tr c khi ti n hành biên d ch
javax.xml.xpath.XPathFunctionResolver trong
Các hàm API XPath c"a Java
Page 8 of 9
bi u th c. Trình phân tích hàm th c hi n ánh x tên XPath và không gian tên URI cho hàm t i l p Java
th c thi hàm ó. Ví d& 9 là trình phân tích hàm n gi n cho phép ánh x hàm bi u th c valid-isbn v i
không gian tên t i l p trong Ví d& 8. Ví d&, bi u th c XPath //book
[not(pre:valid-isbn(isbn))] th c hi n tìm t t c các quy n sách có ki m tra ISBN không phù h p
v i quy nh.
Ví d 9. Ch c n ng ng c nh công nh n hàm m r ng valid-isbn
#
#
+ - F F#
+ - F F#
#
S
F
E $ D
-
,
&
S
#
.>
&
S
F
#
J
D
#
#
I
#
#
F #
#
#
- D
4
E $ D
E $ 2
.>
,
H
S
F
#
#
D
# H
RR
L
-
*
C
*
;
*
3
3
3
B i vì các hàm m r ng ph i 't trong các không gian tên nên b n ph i s d&ng NamespaceResolver
khi ti n hành ánh giá bi u th c ch a các hàm m r ng, n u tài li u ang
c th c hi n truy v n thì
không
c s d&ng không gian tên. B i vì XPathFunctionResolver, XPathFunction, và
NamespaceResolver là các giao di n,n u thu n ti n b n có th 't chúng ngang hàng nhau cùng vào
m t l p.
K t lu n
Nh n th y r(ng vi c vi t các câu truy v n b(ng các ngôn ng khai báo nh SQL và XPath là d dàng h n
nhi u so v i vi c vi t các câu truy v n này trong các ngôn ng m nh l nh nh Java và C. ng th i ng c
l i th c hi n vi t các c u trúc logic ph c t p trong ngôn ng ki u máy Turing nh Java và C l i d dàng
h n nhi u so v i vi c vi t trong các ngôn ng khai báo nh SQL và XPath. Nh ng th t may ta có th k t
h p tr n c hai l i v i nhau cho phép s d&ng các API d i d ng nh Java Database Connectivity (JDBC)
và javax.xml.xpath. Khi mà ph n l n d li u trên th gi i
c h ng chuy n sang XML thì
javax.xml.xpath s tr thành quan tr ng nh là java.sql.
Tài nguyên
H ct p
""B+t u v i XPath 2.0" c"a tác gi Benoît Marchal (developerWorks, May 2006): V i s gia t ng
s c m nh và tính hi u qu c"a XPath phiên b n 2.0, h c cách vi t d dàng các yêu c u ph c t p v i
mô hình d li u m i.
"Làm vi c v i các ng c nh không gian tên JAXP:" Norm Walsh bi n h cho các ng c nh không
gian tên..
XML in a Nutshell (Elliotte Rusty Harold and W. Scott Means, O'Reilly, 2005):
y " này và bài h ng d#n ng+n v XPath 1.0, c$ng nh DOM và JAXP.
c bài tham kh o
developerWorks Java technology zone: Khám phá hàng tr m bài vi t v m i khía c nh c"a l p trình
Java.
Ch ng ch IBM XML 1.1: H c cách
tr thành nhà phát tri n XML 1.1 và các công ngh liên
Các hàm API XPath c"a Java
quan
Page 9 of 9
c ch ng nh n b i IBM.
XML: Th m developerWorks XML Zone v i r t nhi u bài vi t và m.o, h
các sách - c"a IBM.
ng d#n, tiêu chu,n và
Web qu ng bá và các s ki n k thu t c"a developerWorks: C p nh t ki n th c công ngh c"a b n
ây.
L y s n ph m và công ngh
JAXP Project: T i 1.3 cho Java 1.3 và 1.4 t java.net.
Xalan 2: Khám phá c) máy XSLT c"a d án Apache mà h) tr các hàm API XPath trong bài vi t
này.
SAXON 8: Th c) máy XSLT c"a Michael Kay mà c$ng h) tr API XPath
bài vi t này.
c th o lu n trong
Ph n m m dùng th c"a IBM: Xây d ng d án ti p theo c"a b n v i ph n m m dùng th t i v t
developerWorks.
Th o lu n
Các di n àn th o lu n v XML: Tham d vào các di n àn XML.
developerWorks blogs: Tham gia vào c ng
ng developerWorks.
ôi nét v tác gi
Elliotte Rusty Harold sinh ra New Orleans, n i mà ông th ng xuyên tr v
th ng th c món m p
tây. Tuy nhiên, ông s ng Prospect Heights c nh Brooklyn v i v tên là Beth và hai con là Charm và
Marjorie. Ông là tr lý giáo s ngành khoa h c máy tính t i tr ng i h c Polytechnic University, n i
mà ông d y môn Java và l p trình h ng i t ng