Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Chuẩn bị cho kỳ thi 733 về Phát triển ứng dụng DB2 9, Phần 3: Thao tác dữ liệu XML pdf
Nội dung xem thử
Mô tả chi tiết
Chuẩn bị cho kỳ thi 733 về Phát triển ứng dụng DB2 9, Phần 3: Thao tác dữ
liệu XML
Lưu trữ và lấy ra dữ liệu XML thông qua ứng dụng của bạn
Donald E. Payne, Chuyên gia tư vấn IT, IBM
Tóm tắt: Tìm hiểu DB2® của IBM® phân tích cú pháp XML, xử lý khoảng
trống và tuần tự hóa XML như thế nào và xem xét cách mã hóa tài liệu và kiểu dữ
liệu phía khách ảnh hưởng đến việc phân tích cú pháp và tuần tự hóa ra sao. Cũng
tìm hiểu cách DB2 xác nhận hợp lệ tài liệu XML dựa vào một lược đồ XML như
thế nào cũng như làm thế nào để sử dụng các hàm SQL/XML để "băm nhỏ" XML
thành dữ liệu quan hệ, lắp ráp ngược lại dữ liệu quan hệ thành XML và xuất bản
dữ liệu XML như là dữ liệu quan hệ.
Trước khi bạn bắt đầu
Về loạt hướng dẫn này
Chứng chỉ Nhà phát triển ứng dụng được IBM công nhận xác nhận với những
người khác rằng bạn là một nhà phát triển ứng dụng mức trung cấp hoặc cao cấp
về IBM DB2® dành cho Linux®, UNIX® và Windows® và chỉ ra rằng bạn có
các kỹ năng giỏi trong tất cả các nhiệm vụ lập trình chung cũng như lập trình SQL
nhúng, lập trình ODBC/CLI, lập trình .NET hoặc lập trình Java ™.
Loạt bài viết gồm chín hướng dẫn miễn phí này được thiết kế để trợ giúp cho bạn
chuẩn bị cho kỳ thi lấy chứng chỉ Nhà phát triển ứng dụng DB2 9 dành cho Linux,
UNIX và Windows (kỳ thi 733). Mỗi hướng dẫn bao gồm một liên kết đến một
bản tải về dùng thử miễn phí DB2 9 cho Linux, UNIX và Windows. Các hướng
dẫn này cung cấp một cơ sở chắc chắn cho mỗi phần của kỳ thi. Tuy nhiên, bạn
không nên chỉ dựa vào các hướng dẫn này như là sự chuẩn bị duy nhất cho kỳ thi
của bạn.
Hướng dẫn này nói về cái gì?
Hướng dẫn này dạy cho bạn về cách DB2 và ứng dụng khách DB2 thao tác dữ liệu
XML như thế nào. Bạn sẽ tìm hiểu:
DB2 xử lý khoảng trống ở đầu vào như thế nào.
DB2 xác định bảng mã của một tài liệu XML ở đầu vào và đầu ra như thế
nào.
DB2 có thể xác nhận tính hợp lệ XML ở đầu vào như thế nào.
Làm thế nào để thi hành một truy vấn XQuery hay XPath và nhận biết các
kết quả của nó.
Làm thế nào để phân rã hoặc băm nhỏ, đầu vào XML thành các hàng trong
bảng quan hệ.
Làm thế nào để xuất bản các dữ liệu quan hệ dưới dạng XML.
Làm thế nào để xuất bản các dữ liệu XML như là các dữ liệu quan hệ.
Đây là bài thứ ba trong một loạt bài viết gồm chín hướng dẫn được thiết kế để
giúp bạn chuẩn bị cho kỳ thi lấy chứng chỉ Nhà phát triển ứng dụng DB2 9 (kỳ thi
733). Tài liệu hướng dẫn này trình bày các mục tiêu trong Phần 3 của kỳ thi, mang
tên "Thao tác dữ liệu XML".
Các mục tiêu
Sau khi hoàn thành hướng dẫn này, bạn sẽ có khả năng viết các ứng dụng để lưu
trữ và lấy ra dữ liệu XML.
Các điều kiện cần trước
Hướng dẫn này được viết cho các nhà phát triển DB2, những người đã quen thuộc
với các khái niệm sau:
XML, bao gồm:
o Các phần tử.
o Các thuộc tính.
o Các tài liệu.
o Các tài liệu đúng ngữ pháp và cú pháp.
o Các khai báo XML.
o Các vùng tên.
XPath, bao gồm mô hình dữ liệu XML (XDM - XML Data Model):
o Các nút.
o Các giá trị nguyên tử.
o Các mục.
o Các chuỗi.
o Trục: Cha mẹ, con cái, cháu chắt và v.v.
o Các bước.
o Các ký tự đại diện.
o Các vị từ
XQuery:
o Các hàm db2-fn xmlcolumn(), sqlquery().
o Biểu thức FLWOR: for, let, where, order by, return.
o Đoạn mào đầu.
Lược đồ XML, xác nhận hợp lệ và các vùng tên.
Các khái niệm về mã hóa ký tự và mã Unicode.
Đối với các ví dụ mã, bạn cần quen với
Ngôn ngữ lập trình.
Bất cứ giao diện hay các thư viện nào được sử dụng, ví dụ như CLI và
JDBC.
Các kiểu dữ liệu mà ngôn ngữ lập trình đó hỗ trợ và chúng ánh xạ tương
ứng tới các kiểu.
Xem phần Tài nguyên để tìm các đường liên kết đến những thông tin này.
Các yêu cầu hệ thống
Để hoàn thành hướng dẫn này, bạn cần những điều sau đây:
Một máy tính chạy Linux, UNIX hoặc Windows, đã cài đặt FixPack 1 DB2
9.
Một trình soạn thảo, ví dụ như Rational Application Developer (Nhà phát
triển ứng dụng Rational), Windows Notepad hoặc vi (xem Tài nguyên về hướng
dẫn này để biết thêm thông tin).
Một trình biên dịch để chạy các ví dụ mã. Trang Trung tâm thông tin DB2
về các ngôn ngữ lập trình và các trình biên dịch được hỗ trợ để phát triển ứng dụng
cơ sở dữ liệu liên kết tới các trang liệt kê các trình biên dịch được hỗ trợ trong tất
cả các ngôn ngữ được hỗ trợ:
o Các trình biên dịch C được hỗ trợ: Xem phần Tài nguyên, mục
"Nhận sản phẩm và các công nghệ".
o Đối với ngôn ngữ Java, DB2 trên Windows đi kèm với một SDK
Java 2, phiên bản 5, bao gồm trình biên dịch javac và môi trường thời gian chạy
(JRE), dưới thư mục SQLLIB\java\jdk. (Trên hầu hết các nền tảng, DB2 9 hỗ trợ
Java 2 SDK, phiên bản 1.4.2 đến 5. Xem thông tin trực tuyến DB2, "Supported
Java application development software," để biết thêm chi tiết). Các JDK bao gồm
JRE trong thư mục SQLLIB\java\jdk\jre. Biến môi trường PATH của bạn cần phải
bao gồm các thư mục bin trong thư mục jdk; CLASSPATH cần phải bao gồm một
số các tệp tin JAR và ZIP dưới thư mục SQLLIB\java.
Cần một trình duyệt Web để tiện xem một tệp tin XML, kiểm tra xem nó có
đúng khuôn dạng không và tìm ra các lỗi.
Chạy các ví dụ
Nếu bạn chạy các ví dụ SQL từ hướng dẫn này trong trình xử lý dòng lệnh (CLP)
DB2 db2, hãy xem phần có tên "DB2 Command Line Processor (CLP) behavior
and options".
Xử lý khoảng trống trong việc phân tích cú pháp và xác nhận hợp lệ XML
XML thay đổi theo việc phân tích cú pháp (đầu vào)
Khi DB2 hoặc một trình xử lý XML khác phân tích cú pháp XML đầu vào -- có
nghĩa là, chuyển đổi nó từ các ký tự thành một cấu trúc nội tại -- nó tạo ra một số
thay đổi với XML trong quá trình xử lý, như tiêu chuẩn XML đã định rõ. Một số
thay đổi này là quan trọng nếu bạn quan tâm đến các yêu cầu lưu trữ hoặc các yêu
cầu về bộ nhớ của XML trong DB2 hoặc trong ứng dụng khách. Nó cũng có thể
quan trọng nếu bạn quan tâm đến các nút văn bản chỉ chứa khoảng trống, vẻ ngoài
của XML khi lấy ra và tuần tự hóa trở lại thành các ký tự hoặc các chữ ký số.
Trình phân tích cú pháp (parser) xử lý đầu vào XML như sau:
1. Trình phân tích cú pháp sẽ xác định bảng mã. Nếu bảng mã của mã nguồn
không tương đương với bảng mã bên trong DB2 là UTF-8, thì các ký tự mã nguồn
được chuyển mã, hoặc được chuyển đổi từ bảng mã nguồn thành bảng mã của
DB2. Xem phần "Mã hóa XML", mục "Bảng mã nào?" để biết thêm thông tin.
2. Các ký tự hết dòng là carriage return (CR, hex code 0xD) và sang dòng line
feed (LF, hex code 0xA). Các hệ điều hành khác nhau (DOS/Windows,
UNIX/Linux, Mac OS hay OS X) tuân theo các quy ước khác nhau để kết thúc các
dòng. Các ký tự này được tiêu chuẩn hóa, hay là chuyển đổi thành chỉ một dạng,
LF hoặc 0xA.
3. Trình phân tích cú pháp kiểm tra một tài liệu đúng ngữ pháp và cú pháp.
4. Các thực thể XML bao gồm các thực thể đã định nghĩa sẵn như & và
" và các thực thể được định nghĩa trong một DTD. Các tham chiếu thực thể
trong tài liệu được khai triển hoặc được chuyển đổi thành giá trị của thực thể. (Các
mã ký tự đã khai triển của các thực thể đã định nghĩa sẵn là nhỏ hơn thực thể hay
tham chiếu ban đầu). Bất kỳ DTD nội tại nào sẽ được loại bỏ.
5. Khoảng trống là một thuật ngữ tóm bắt mọi (catch-all) ký tự không được in
ra, thường là:
o dấu cách (mã hex là 0x20).
o dấu tab (mã hex 0x9).
o Các ký tự hết dòng (như nói trên).
Khoảng trống ranh giới có thể được loại bỏ dựa trên các quy tắc mà bạn sẽ đọc
trong phần "Phân tích cú pháp và khoảng trống ranh giới" dưới đây.
6. Các tham chiếu ký tự XML chẳng hạn như € (€, biểu tượng đồng
euro) được khai triển hoặc chuyển đổi thành mã ký tự thực tế trong UTF-8. Giống
như với các tham chiếu thực thể đã định nghĩa sẵn, các mã ký tự đã khai triển
thường nhỏ hơn các tham chiếu ban đầu.
7. Khi xác nhận hợp lệ, khoảng trống có thể bỏ qua sẽ được loại bỏ. Xem
phần "Xác nhận hợp lệ và khoảng trống có thể bỏ qua" dưới đây để biết thêm
thông tin.
Các chú thích XML (<!-- comment -->) không được loại bỏ.
Xem phần Tải về để tìm các mã mẫu giải thích việc phân tích cú pháp và xác nhận
hợp lệ thay đổi khoảng trống như thế nào.
Lời khuyên: Các tùy chọn -n và -q của CLP DB2 có thể ảnh hưởng đến khoảng
trống trong chuỗi ký tự bằng chữ trước khi chúng đi tới DB2. Xem phần "DB2
Command Line Processor (CLP) behavior and options" (Hành vi và các tùy chọn
của trình xử lý dòng lệnh DB2) để biết thêm thông tin.
Phân tích cú pháp và khoảng trống ranh giới
Khi bạn tạo ra XML, nó thường bao gồm thêm khoảng trống ranh giới để làm cho
nó "đẹp" và dễ đọc hơn. Khoảng trống ranh giới trong một tài liệu XML là văn
bản chỉ chứa các khoảng trống tại ranh giới giữa hai thẻ XML, mà không có ký tự
không phải khoảng trống nào khác.
Liệt kê1. Tài liệu XML mẫu với việc xử lý khoảng trống
<customerinfo xmlns="http://posample.org" Cid=' 1018 ' >
<name> </name>
<addr country=" Canada
ca " xml:space="preserve">
<street> </street>
<city> </city>
<prov-state> </prov-state>
<pcode-zip> </pcode-zip>
</addr>
<phone type=" "> 416-555-1358 </phone>
</customerinfo>
Trong liệt kê 1, có khoảng trống ranh giới giữa mỗi thẻ và thẻ tiếp theo. Ví dụ, có
khoảng trống:
Giữa thẻ bắt đầu <customerinfo Cid=' 1018 '> và thẻ bắt đầu <name>
Giữa thẻ bắt đầu </name> và thẻ kết thúc </name>
Giữa thẻ kết thúc </phone> và thẻ kết thúc </customerinfo>
Nếu việc phân tích cú pháp không bỏ đi khoảng trống này, một tài liệu "đẹp" đã
phân tích xong sẽ có nhiều phần tử có nội dung hỗn hợp -- một sự hỗn hợp của các
phần tử con và các nút văn bản -- và nhiều nút văn bản không có gì khác ngoài
những khoảng trống.
Một giá trị thuộc tính không phải là khoảng trống ranh giới, thậm chí nếu tất cả nó
chỉ là các khoảng trống, như được gõ vào. Trong Liệt kê 1, khoảng trống xung
quanh con số 1018, các từ "Canada ca" và số điện thoại "516-555-1358" có thể là
các dữ liệu không đúng dạng, nhưng nó không phải là khoảng trống ranh giới.
Dưới đây là các quy tắc để loại bỏ hoặc giữ lại khoảng trống ranh giới, theo thứ tự
ưu tiên giảm dần:
1. Nếu XML chứa một phần tử với thuộc tính xml:space="preserve", thì trình
phân tích cú pháp sẽ giữ lại các khoảng trống ranh giới trong phần tử đó và mọi
phần tử con.
2. Nếu bạn chèn XML với một hàm tường minh XMLPARSE() và chỉ rõ hoặc
tùy chọn PRESERVE WHITESPACE hoặc tùy chọn STRIP WHITESPACE, thì
trình phân tích cú pháp sẽ giữ lại hoặc loại bỏ khoảng trống ranh giới như được chỉ
thị.
3. Nếu bạn chèn XML với hàm tường minh XMLPARSE() và không chỉ rõ
hoặc tùy chọn PRESERVE WHITESPACE hoặc tùy chọn STRIP WHITESPACE,
thì khoảng trống ranh giới sẽ bị loại bỏ, vì đó là mặc định cho hàm XMLPARSE()
4. Việc phân tích cú pháp sẽ ngầm xảy ra khi bạn chèn XML như là một chuỗi
ký tự bằng chữ, biến chủ hoặc cái đánh dấu tham số (parameter marker) mà không
có hàm XMLPARSE() hoặc XMLVALIDATE(). (XMLVALIDATE() thực hiện