XML là từ viết tắt của cụm từ Extensible Markup Language (Ngôn ngữ đánh dấu mở rộng), với bit đánh dấu là chìa khóa để nhận dạng dữ liệu. Bạn có thể tạo nội dung và đánh dấu nó với các thẻ để phân chia ranh giới, đánh dấu ở mỗi từ, ở mỗi cụm từ, hay ở các thông tin được sử dụng nhiều lần hoặc các thông tin muốn sắp xếp. Các tệp dữ liệu đó, hay một tài liệu bất kỳ, bạn tạo nó với các phần tử (các thẻ) và nội dung, và các thẻ này sẽ giúp các tài liệu được hiểu một cách dễ dàng khi chúng được in ra từ máy tính. Càng nhiều các thẻ mô tả thì càng nhiều phần của tài liệu có thể được nhận dạng. Từ những buổi đầu sử dụng ngôn ngữ đánh dấu cho đến ngày nay, một trong những lợi thế của việc đánh dấu nội dung bằng thẻ là nếu hệ thống máy tính bị hỏng thì dữ liệu in ra vẫn có thể được hiểu thông qua các thẻ của chính nó.
Ngôn ngữ đánh dấu được phát triển từ rất sớm, các công ty tư nhân và chính phủ đã thiết lập các chuẩn cho ngôn ngữ đánh dấu như: Ngôn ngữ đánh dấu chuẩn tổng quát (Standard Generalized Markup Language - SGML), Ngôn ngữ đánh dấu siêu văn bản (Hypertext Markup Language - HTML), và cuối cùng là XML. SGML có vẻ hơi phức tạp trong khi đó HTML không đủ sức mạnh để nhận dạng tất cả các thông tin. XML được tạo ra như là một ngôn ngữ đánh dấu dễ sử dụng và dễ mở rộng.
Với ngôn ngữ XML, bạn có thể tạo các phần tử riêng của chính mình, nó cho phép bạn dễ dàng miêu tả một cách chính xác các phần nhỏ của thông tin. Thay vì xử lý văn bản của bạn theo các đề mục và đoạn văn, bạn có thể dễ dàng nhận ra từng phần trong tài liệu đó. Để hiệu quả, bạn cần xác định một danh sách có giới hạn các phần tử của mình và gắn chúng vào đó. (Bạn có thể định nghĩa các phần tử dưới dạng định nghĩa kiểu tài liệu DTD hoặc lược đồ, chúng ta sẽ thảo luận sau). Khi bạn đã bắt đầu và sử dụng XML, hãy thoải mái thử nghiệm các tên phần tử khi bạn xây dựng các tệp thực hành.
Như đã đề cập ở phần đầu tiên, tệp tài
liệu XML của bạn sẽ bao gồm nội dung và các dấu được thêm vào nội dung đó.
Bạn chèn các thẻ bao quanh nội dung văn bản của mình. Thí dụ, bạn cần tạo
một tài liệu hướng dẫn nấu ăn bằng XML. Giả sử bạn muốn viết công thức làm
món Ice Cream Sundae trong XML. Để đánh dấu tên công thức, bạn bao
quanh đoạn văn bản đó bên trong phần tử của bạn bằng việc đặt thẻ bắt đầu
vào trước đoạn văn bản này và đặt thẻ kết thúc ở cuối đoạn văn. Như vậy,
bạn có thể gọi đó là một phần tử recipename. Để
đánh dấu thẻ bắt đầu của một phần tử, hãy đặt tên của phần tử bên trong
ngoặc nhọn (<>) như sau: <recipename>. Sau đó, đánh nội dung Ice Cream Sundae. Ở cuối văn bản, bạn cho thêm
thẻ kết thúc, thẻ này là tên của phần tử bên trong ngoặc nhọn cùng với dấu
gạch chéo (/) trước tên của phần tử đó, giống
như sau: </recipename>. Những thẻ này tạo
thành một phần tử, mà bạn có thể thêm nội dung vào hoặc bạn có thể
thêm các phần tử khác vào bên trong nó.
Bạn có thể tạo ra các tên phần tử cho các tài liệu riêng rẽ nhau hoặc một nhóm các tài liệu. Bạn cũng có thể tạo ra các quy tắc, nó quy định các phần tử phù hợp với nhau theo một cách nào đó dựa trên nhu cầu cụ thể của bạn. Dựa vào đó bạn có thể phân chia một cách rõ ràng hoặc nhóm các tên phần tử có đặc điểm chung. Bạn có thể tạo quy tắc cho những cái mà mỗi phần tử được phép chứa và khiến cho các quy tắc này chặt chẽ, lỏng lẻo hoặc không quá chặt cũng không quá lỏng lẻo. Một điều rất quan trọng khi tạo các phần tử đó là phải đảm bảo việc tạo ra các phần tử mà dựa vào chúng bạn có thể nhận dạng được các phần trong tài liệu.
Dòng đầu tiên trong tệp tài liệu XML của
bạn có lẽ phải là dòng khai báo XML. Phần tùy chọn này dùng để nhận dạng
nó là một tệp tài liệu XML, việc khai báo này giúp các công cụ và chính
chúng ta nhận ra chúng là tệp tài liệu XML, SGML hay một vài loại ngôn ngữ
đánh dấu khác. Khai báo có thể viết ở dạng đơn giản như sau <?xml?> hoặc bao gồm phiên bản của XML
(<?xml version="1.0"?>) hoặc thậm chí
cả việc mã hóa ký tự, thí dụ <?xml version="1.0"
encoding="utf-8"?> cho bộ mã tiêu chuẩn quốc tế đa ngôn ngữ
Unicode. Vì khai báo này phải được ưu tiên thiết lập ở phần đầu tiên trong
tệp dữ liệu, cho nên nếu bạn có kế hoạch kết hợp các tệp tài liệu XML nhỏ
thành một tệp tài liệu XML lớn hơn, có lẽ bạn nên loại bỏ thông tin tùy
chọn này.
Tạo phần tử gốc trong tài liệu
Thẻ bắt đầu và thẻ kết thúc của phần tử gốc bao quanh
toàn bộ nội dung của tệp tài liệu XML. Và chỉ có duy nhất một phần tử gốc
trong một tệp dữ liệu, và bạn cần "Giấy gói" này để chứa đựng tất cả nội
dung của tệp tài liệu XML. Ví dụ 1 là phần đầu của
thí dụ I. Thí dụ này sử dụng phần tử gốc có tên <recipe>. (Bạn có thể xem và tải
về tệp tài liệu XML
này.)
Ví dụ 1. Phần tử gốc
<?xml version="1.0" encoding="UTF-8"?> <recipe> </recipe> |
Khi
bạn tạo tài liệu, nội dung của bạn và các thẻ thêm vào sẽ đặt ở giữa <recipe> và </recipe>.
Khi đó, bạn có phần tử <recipe> giống như phần tử gốc của bạn. Với ngôn ngữ
XML, bạn chọn các tên cho các phần tử của mình, sau đó định nghĩa theo DTD
hoặc lược đồ tương ứng dựa trên những tên đó. Những tên mà bạn tạo ra có
thể bao gồm các ký tự theo hệ thống chữ cái, các chữ số và các ký tự đặc
biệt ví dụ như dấu gạch dưới (_). Ở đây có một
vài điều đáng chú ý về việc đặt tên phần tử:
- Dấu cách không được phép sử dụng để đặt tên.
- Tên phải được bắt đầu bằng một ký tự theo hệ thống bảng chữ cái, không phải là số hay ký tự đặc biệt. (Sau ký tự đầu tiên này, bạn có thể sử dụng bất kỳ sự kết hợp nào của các chữ cái, các chữ số và các ký tự đặc biệt được phép sử dụng.)
- Trường hợp không gây ra lỗi, tuy nhiên nên tránh nhầm lẫn khi đặt tên.
Dựa vào ví dụ ở phần trước, nếu bạn muốn thêm tên một phần tử <recipename>, phần tử này sẽ có thẻ bắt đầu
là <recipename> và thẻ kết thúc tương ứng
là </recipename>.
Ví dụ 2. Trường hợp có nhiều phần tử
<?xml version="1.0" encoding="UTF-8"?> <recipe> <recipename>Ice Cream Sundae</recipename> <preptime>5 minutes</preptime> </recipe> |
Trong
tệp tài liệu XML có thể tồn tại các thẻ trống, chúng không có bất cứ nội
dung gì bên trong và có thể được biểu thị như là một thẻ đơn bao gồm một
cặp thẻ bắt đầu và kết thúc. Nếu muốn sử dụng câu lệnh HTML giống như
trong thí dụ, nếu bạn có <img
src="mylogo.gif"> , nó là một phần tử đơn lẻ và đứng một
mình. Nó không chứa đựng bất kỳ phần tử con cũng như văn bản nào, chính vì
vậy nó là một phần tử trống và có thể biểu thị như sau <img src="mylogo.gif" /> (được kết thúc bởi một dấu cách
và gạch chéo kết thúc như thông thường).
Lồng ghép là đặt các
phần tử nằm bên trong các phần tử khác. Mà trong đó, các phần tử mới được
gọi là các phần tử con, và các phần tử này được bao quanh chúng là
các phần tử cha. Một số phần tử được lồng ghép bên trong phần
tử gốc <recipe>, giống như trong Ví dụ 3. Các thông tin của phần tử con được lồng
ghép bao gồm <recipename>, <ingredlist>, và <preptime>. Bên trong phần tử <ingredlist> có rất nhiều các thông tin của các phần tử
con ở trong nó, <listitem>. Trong một văn
bản XML, các phần tử có thể được lồng ghép với nhau ở nhiều cấp độ. Nghĩa
là chúng ta vẫn có thể lồng ghép các phần tử cấp thấp hơn ở bên trong phần
tử con và nhiều cấp nhỏ hơn nữa ở trong nó.
Một lỗi cú pháp thông thường là khi chúng ta lồng ghép không chính xác các phần tử cha và phần tử con. Đó là do bất cứ một phần tử con nào cũng phải được bao quanh một cách trọn vẹn giữa thẻ bắt đầu và thẻ kết thúc của phần tử cha. Một điều chú ý nữa là các phần tử anh, chị hoặc em với phần tử con này phải được đóng trước khi các phần từ anh, chị hoặc em khác bắt đầu.
Đoạn mã trong Ví dụ 3 là một thí dụ đơn giản về việc lồng ghép các phần tử. Các thẻ bắt đầu và thẻ kết thúc không trà trộn với các thẻ khác.
Ví dụ 3. Lồng ghép chính xác các phần tử trong XML
<?xml version="1.0" encoding="UTF-8"?> <recipe> <recipename>Ice Cream Sundae</recipename> <ingredlist> <listitem> <quantity>3</quantity> <itemdescription>chocolate syrup or chocolate fudge</itemdescription> </listitem> <listitem> <quantity>1</quantity> <itemdescription>nuts</itemdescription> </listitem> <listitem> <quantity>1</quantity> <itemdescription>cherry</itemdescription> </listitem> </ingredlist> <preptime>5 minutes</preptime> </recipe> |
Các
thuộc tính thỉnh thoảng được thêm vào các phần tử. Các thuộc tính
này bao gồm cặp tên-giá trị, với giá trị được đặt bên trong hai dấu ngoặc
kép ("), ví dụ: type="dessert". Các thuộc tính này cung cấp cách thức để lưu
trữ thêm các thông tin mỗi khi bạn sử dụng phần tử, sự thay đổi giá trị
của thuộc tính là cần thiết khi bạn sử dụng cùng một phần tử ở các vị trí
khác khác nhau trong cùng một tài liệu.
Bạn có thể thêm thuộc tính
— hoặc ngay cả khi thêm nhiều thuộc tính
— bên trong thẻ bắt đầu của một phần tử: <recipe type="dessert">. Nếu bạn thêm vào
nhiều thuộc tính, hãy tách chúng riêng rẽ bằng dấu cách: <recipename cuisine="american"
servings="1">. Ví dụ 4 là một ví dụ về
việc thêm các thuộc tính trong tệp tài liệu XML, như sau.
Ví dụ 4. Tệp tài liệu XML với các phần tử và các thuộc tính
<?xml version="1.0" encoding="UTF-8"?> <recipe type="dessert"> <recipename cuisine="american" servings="1">Ice Cream Sundae</recipename> <preptime>5 minutes</preptime> </recipe> |
Bạn
có thể sử dụng một vài hoặc vô số các thuộc tính mà bạn cho là cần thiết.
Cân nhắc một cách kỹ càng và xem xét một cách chi tiết các thuộc tính mà
bạn thêm vào trong tài liệu. Các thuộc tính này vô cùng hữu ích nếu sau
này chúng ta muốn sắp xếp các tài liệu của mình — ví dụ,
khi chúng ta sắp xếp theo các loại công thức
khác nhau. Các tên thuộc tính có thể bao gồm các ký tự giống như quy ước
đặt tên phần tử, tên thuộc tính không bao gồm dấu cách và tên phải bắt đầu
bằng các ký tự trong bảng chữ cái.
Dữ liệu XML được tổ chức tốt so với với XML hợp lệ
Nếu bạn tuân thủ theo các quy tắc trong cấu trúc đã được đưa ra, bạn sẽ dễ dàng tạo ra một tệp tài liệu XML được tổ chức tốt. Dữ liệu XML được tổ chức tốt là tệp tài liệu XML mà nó tuân thủ theo tất cả các quy tắc của XML như: đặt tên phần tử, lồng ghép, đặt tên thuộc tính và các quy tắc khác.
Tùy thuộc vào mục đích sử dụng, bạn sẽ có
cách tổ chức XML của mình một cách hợp lý nhất. Tuy nhiên, bạn nên xem lại
ví dụ về cách sắp xếp công thức chế biến theo loại. Bạn cần phải bảo đảm
rằng các phần tử phải <recipe> có thuộc
tính loại dùng cho việc sắp xếp các công thức
chế biến đó. Thuộc tính này giúp việc xác nhận tính hợp lệ của tệp tài
liệu XML một cách chính xác cho nên cần đảm bảo rằng giá trị của các thuộc
tính này phải chắc chắn tồn tại. Các thông tin của các thuộc tính này có
thể là vô giá (ở đây không có sự chơi chữ, vì chúng sẽ giúp ích cho bạn
rất nhiều trong việc soạn thảo một tệp tài liệu XML).
Xác nhận tính hợp lệ là việc kiểm tra tài liệu của bạn dựa vào các quy tắc mà bạn đã thiết lập cho các phần tử và cách thức bạn xác định các phần tử con cho mỗi phần tử cha. Bạn có thể định nghĩa các quy tắc bên trong Định kiểu tài liệu (DTD) hoặc bên trong lược đồ. Việc kiểm tra tính phù hợp này yêu cầu bạn tạo ra các quy tắc và lưu chúng vào DTD hoặc lược đồ, sau đó liên kết các tài liệu DTD hoặc lược đồ này vào bên trong các tệp tài liệu XML.
Để kích hoạt việc xác nhận tính hợp lệ của
một tệp tài liệu XML, bạn khai báo kiểu tài liệu bằng câu lệnh (DOCTYPE) bên trong các tệp tài liệu XML của bạn ở
phần đầu tiên. Dòng khai báo kiểu tài liệu này liên quan đến DTD hay lược
đồ (một danh sách các phần tử và các quy tắc) được sử dụng để xác nhận
tính hợp lệ của tài liệu. Thí dụ, việc khai báo kiểu tài liệu DOCTYPE của bạn có thể xem trong Ví dụ
5.
Ví dụ 5. DOCTYPE
<!DOCTYPE MyDocs SYSTEM "filename.dtd"> |
Ví
dụ này giả thiết rằng tệp tài liệu chứa danh sách các phần tử của bạn có
tên là filename.dtd và được lưu trữ bên trong máy tính của bạn sẽ
là (SYSTEM Hoặc ngược lại, chúng ta dùng PUBLIC nếu chỉ đến vị trí tệp dùng chung).
Các thực thể có thể là các cụm từ hoặc các ký tự đặc biệt. Các thực thể phải được khai báo và được biểu thị một cách rõ ràng nhằm tránh xuất hiện lỗi và đảm bảo hiển thị một cách rõ ràng.
Bạn không thể chèn các ký tự đặc biệt một cách trực tiếp vào nội
dung trong tài liệu của bạn. Nếu sử dụng các ký tự đặc biệt bên trong văn
bản, bạn phải thiết lập nó như là một thực thể sử dụng chính mã ký tự của
nó. Bạn cũng có thể thiết lập các cụm từ như tên công ty như là một thực
thể, sau đó chèn các thực thể vào vị trí cần hiển thị. Để thiết lập một
thực thể, đầu tiên chúng ta tạo tên cho nó, sau đó chèn nó vào trong nội
dung của văn bản, chúng ta hãy bắt đầu khai báo thực thể bằng ký hiệu
(&) và kết thúc bằng dấu chấm phẩy
(;)— thí dụ, &coname; (hoặc bất cứ tên nào mà bạn muốn).
Sau đó bạn thêm mã lệnh với DOCTYPE bên trong
dấu ngoặc vuông ([]), như trong Ví dụ 6. Đoạn mã này giúp đoạn văn bản có thể được
nhận dạng thông qua thực thể đại diện cho nó.
Ví dụ 6. THỰC THỂ
<!DOCTYPE MyDocs SYSTEM "filename.dtd" [ <!ENTITY coname "Rabid Turtle Industries" ]> |
Sử dụng các thực thể có thể giúp bạn tránh việc phải gõ lại các cụm từ hoặc các thông tin nếu chúng được sử dụng nhiều lần. Điều này cũng giúp bạn dễ dàng hiệu chỉnh văn bản của mình. Giả sử,— nếu tên công ty cần được thay đổi — ở rất nhiều vị trí khác nhau, bạn chỉ cần làm một việc rất đơn giản là định nghĩa lại nội dung của thực thể đó.
Giống như khi chúng ta tạo các tệp tài liệu XML, mở chúng trong môi trường soạn thảo XML để kiểm tra tính hợp lệ và chứng thực rằng bạn hoàn toàn tuân thủ theo các quy tắc của XML . Nếu bạn đang sử dụng chương trình Windows® Internet Explorer®, bạn có thể mở tệp tài liệu XML của mình bằng trình duyệt này. Nó sẽ hiển thị các phần tử, các thuộc tính và nội dung trong tệp tài liệu XML đó. Nếu xuất hiện lỗi, chắc chắn bên trong tài liệu của bạn tồn tại lỗi cú pháp và bạn cần phải kiểm tra tài liệu của mình một cách cẩn thận. Có thể các lỗi này là do đánh máy hoặc do quên mở hoặc đóng các thẻ cũng như dấu chấm câu.
Như đã đề cập ở phần Lồng ghép các phần
tử, một phần tử mà nó chứa một phần tử khác, thì nó là phần tử
cha của phần tử mà nó chứa bên trong. Giống như ví dụ dưới đây,
<recipe> là phân tử gốc và nó chứa
tất cả nội dung của tài liệu. Phần tử cha này, <recipe>, chứa các phần tử con <recipename>, <ingredlist>, <directions>, và một vài phần tử con khác. Cấu trúc này
tạo ra phần tử <recipename>, <ingredlist>, và phần tử <directions> có cùng cấp, và chúng được gọi
là phần tử anh, chị của nhau. Bạn nên chú ý khi lồng ghép các phần tử
anh, chị một cách rõ ràng và cẩn thận. Ví dụ
7 là một XML được tổ chức tốt và được lồng ghép chính
xác.
Ví dụ 7. XML được tổ chức tốt
<?xml version="1.0" encoding="UTF-8"?> <recipe type="dessert"> <recipename cuisine="american" servings="1">Ice Cream Sundae</recipename> <ingredlist> <listitem><quantity units="cups">0.5</quantity> <itemdescription>vanilla ice cream</itemdescription></listitem> <listitem><quantity units="tablespoons">3</quantity> <itemdescription>chocolate syrup or chocolate fudge</itemdescription></listitem> <listitem><quantity units="tablespoons">1</quantity> <itemdescription>nuts</itemdescription></listitem> <listitem><quantity units="each">1</quantity> <itemdescription>cherry</itemdescription></listitem> </ingredlist> <utensils> <listitem><quantity units="each">1</quantity> <utensilname>bowl</utensilname></listitem> <listitem><quantity units="each">1</quantity> <utensilname>spoons</utensilname></listitem> <listitem><quantity units="each">1</quantity> <utensilname>ice cream scoop</utensilname></listitem> </utensils> <directions> <step>Using ice cream scoop, place vanilla ice cream into bowl.</step> <step>Drizzle chocolate syrup or chocolate fudge over the ice cream.</step> <step>Sprinkle nuts over the mound of chocolate and ice cream.</step> <step>Place cherry on top of mound with stem pointing upward.</step> <step>Serve.</step> </directions> <variations> <option>Replace nuts with raisins.</option> <option>Use chocolate ice cream instead of vanilla ice cream.</option> </variations> <preptime>5 minutes</preptime> </recipe> |
Chú ý: Việc xuống dòng sẽ giúp bạn dễ dàng đọc mã mà không làm ảnh hưởng đến nội dung của tệp tài liệu XML.
Có lẽ bạn nên thực hành nhiều với tài liệu của bạn bằng cách thay đổi vị trí các thẻ bắt đầu và thẻ kết thúc qua đó bạn sẽ có nhiều kinh nghiệm với các thông báo lỗi.
Trong Hình 1, các phần tử của bạn lộ
ra một cách rõ ràng khi chúng ta mở tài liệu trong Internet Explorer. Các
thẻ bắt đầu và kết thúc bao quanh nội dung của bạn. Các ký tự dấu cộng (
+ ) và dấu trừ ( - ) có hiệu lực cho đến các phần tử cha kế tiếp, vậy nên bạn
có thể làm lỗi tất cả các phần tử được lồng ghép bên trong chúng (đó là
các phần tử con, cháu).
Hình 1. Một tệp tài liệu XML có các phần tử anh, chị bị lỗi
Ngoài một vài các quy tắc đơn giản, bạn có thể linh động thiết kế các phần tử và các thuộc tính XML. Các quy tắc của XML không khó, soạn thảo một tệp tài liệu XML cũng không khó. Điều khó khăn đó là bạn phải mường tượng điều bạn cần từ tài liệu của chính mình dưới dạng có thể sắp xếp hay có thể tìm kiếm được, sau đó thiết kế các phần tử và các thuộc tính nhằm phù hợp với những gì bạn cần.
Khi bạn có ý tưởng tốt về mục tiêu và cách đánh dấu nội dung của mình, bạn có thể xây dựng các phần tử và các thuộc tính một cách hiệu quả. Từ đó, cẩn thận khi dùng thẻ là tất cả những gì bạn cần để có thể tạo được một tài liệu XML được tổ chức tốt và hợp lệ.
| Mô tả | Tên | Kích thước | Phương thức tải |
|---|---|---|---|
| Ví dụ mã nguồn | example.zip | 2KB | HTTP |
Học tập
- XML technical library: Đây là các bài báo và các mẹo của các nhà
phát triển XML, các hướng dẫn, các tiêu chuẩn, và các cuốn sách của IBM.
- XML topic on Wikipedia: Các thông tin thêm về XML.
- XML Tutorials at W3
Schools: Mở rộng và kiểm tra các kỹ năng của bạn từ cơ bản đến
JavaScript và các chủ đề nâng cao khác.
- XML
specification của World Wide Web Consortium: Các thông tin thêm về
định dạng văn bản này mà nó có thể sử dụng cho chế bản điện tử cũng như
với các dữ liệu trên Web và những lĩnh vực khác.
- Introduction to XML (Doug Tidwell, developerWorks, August 2002):
Trước khi khám phá ra XML là gì, tại sao nó được phát triển và nó hình
thành thương mại điện tử thế nào được chỉ ra trong phần giới thiệu này.
Ngoài ra nó còn đề cập đến những chú ý quan trọng khi lập trình giao diện
cũng như các tiêu chuẩn và hai trường hợp các công ty dùng XML để giải
quyết các vấn đề thương mại.
- Validating XML (Nicholas Chase, developerWorks, August 2003):
Trong phần hướng dẫn này, sẽ được tìm hiểu xác nhận tính hợp lệ của XML là
gì và làm sao để kiểm tra tài liệu với DTD hoặc lưu đồ XML.
- New to XML : Là những bài báo và những hướng dẫn khác về XML, các
thông tin từ trung tâm tài nguyên về XML.
- IBM XML
certification: Chỉ cho bạn cách trở thành nhà phát triển về XML
cũng như các kỹ thuật liên quan được IBM chứng nhận.
- developerWorks technical events and webcasts: Những hỗ trợ hiện
tại về XML.
- developerWorks podcasts: Nghe các cuộc phỏng vấn và thảo luận thú
vị với các nhà phát triển phần mềm.
Lấy sản phẩm và công nghệ
- IBM trial software for product evaluation: Tạo dự án mới với phầm
mềm dùng thử có thể tải trực tiếp từ developerWorks, nó bao gồm các công
cụ phát triển ứng dụng và các sản phẩm trung gian từ DB2®,
Lotus®, Rational®, Tivoli®, và
WebSphere®.
Thảo luận
- Yahoo! Groups:
Tham gia thảo luận các chủ đề liên quan đến XML.
- XML zone discussion forums: Nơi bạn có thể thảo luận các vấn đề
liên quan về XML.
- developerWorks blogs: Tham gia vào các nhật ký mạng và lấy thông
tin từ cộng đồng developerWorks .
Kay Whatley là tác giả, biên tập viên và chủ biên. Cô còn là đồng tác giả của một số cuốn sách khác, bao gồm XML Weekend Crash Course for Hungry Minds (Wiley, 2000), Tác giả chính của Advanced FrameMaker (TIPS, 2004), và là tác giả của XML and FrameMaker (Apress, 2004). Cuốn sách mới nhất về công nghệ của cô là XML: Problem-Design-Solution (Wiley, 2006). Ngoài việc viết sách, Kay còn thường xuyên viết bài cho các tạp chí công nghiệp và các trang web.