Phương pháp giản đơn cho lập trình XML Schema

Chủ dề Công nghệDel.icio.us

xmlsmall.jpgSơ lược về XLM Schema:
- Ngày nay hấu hết các website liên quan đến Content Management System (CMS) như các cổng thông tin, blog đều hỗ trợ RSS feed. Một trang RSS feed thường là một XML document

- XML Chema có chức năng miêu tả cấu trúc của XML document, XML Schema sử dụng cú pháp của XML và được xem là sự thay thế xứng đáng cho Document Type Definition (DTD) đã lỗi thời và có quá nhiều khuyết điểm.

Tính năng vượt trội của XML Schema so với DTD:
- XML Schema hỗ trợ kiểu dữ liệu (data type): thuận tiện cho việc thao tác với cơ sở dữ liệu, chuyển đổi các kiểu dữ liệu, dễ dàng miêu tả cấu trúc của document…
- XML Schema sử dụng cú pháp XML
- XML Schema nâng cao tính bảo mật của dữ liệu truyền tải
- XML Schema dễ dàng mở rộng
- XML Schema sử dụng form chuẩn
Về kiểu dữ liệu và các elements cơ bản của XML Schema, các bạn có thể xem chi tiết trên website w3school .Ở đây, tôi chỉ xin trình bày một phương pháp để đơn giản việc lập trình với XML Schema.

Trong ví dụ sau chúng ta sẽ xem xét hai phương pháp lập trình cho một XML Schema dùng để miêu tả cấu trúc của XML document:

XML document trên hiển thị một student transcript
- transcript : student và 1 hay nhiều unit
- student : id, name và 1 hay nhiều degree
- unit : code, unitNamegrade

Phương pháp thứ nhất : Cấu trúc lồng
Viết XLM schema từ trên xuống dưới, nghĩa là viết đến element nào thì định nghĩa element đó. Như vậy, đối với ví dụ trên, chúng ta sẽ bắt đầu với việc đinh nghĩa transcript
- bên trong transcript ta sẽ tiếp tục đinh nghĩa student unit,
- bên trong student lại định nghĩa studentID,namedegree
- bên trong unit thì định nghĩa code,unitNamgrade
Nói tóm lại, XML scheam sẽ có cấu trúc lồng vào nhau, duới đây là lược đồ của các elements trong XLM schema:

schema1.gif

Code của schame1.xsd

Nhược điểm của phương pháp lồng:
- Khi viết code theo kiểu lồng vào nhau thì XML schema sẽ có code rất phức tạp. Như các bạn đã thấy, chỉ với một xml đơn giản mà code của XML cũng đã khá rối rắm, nếu xml phức tạp hơn một chút thì sẽ càng khó cho việc debug hơn.
- Việc viết code theo kiểu từ trên xuống không sử dụng lại các element đã định nghĩa.

Phương pháp 2: Cấu trúc riêng lẻ
Đây là cách viết có phần “hướng đổi tượng”, chúng ta sẽ định nghĩa mỗi element riêng biệt, rồi sử dụng các element này như là kiểu dữ liệu đối với element khác.Nhu vậy, với ví dụ trên, chúng ta tiến hành như sau:
- đinh nghĩa transcript
- định nghĩa student
- đinh nghĩa unit
- định nghĩa studentID
- định nghia unitCode
- định nghĩa grade
Trong đó:
- transcrip sử dụng student unit như là kiểu dữ liệu con
- student sử dụng studentIDgrade như kiểu dữ liệu con
- unit sử dụng unitCode như kiểu dữ liệu con
Lược đồ của XML schema :

schema2.gif

Code của chema2.xsd

Với cách viết code cho từng element riêng lẻ, chúng ta rất dẽ dàng cho việc debug và sử dụng lại các element trong trường hợp cần thiết, tránh việc dư thừa và code rác.

Download source code của ví dụ trong bài viết: xmlschema.rar

NDLoc, 9.6.2007

Đã có 10 phản hồi về bài viết

  • Saturday 09/06/2007 8:48 pm
    diepae

    Ba cai si-ke-ma xai de lam chi dzay Loc?

  • Saturday 09/06/2007 11:50 pm
    tmhung

    Rồi , em mù T_T . Chưa biết gì lun

  • Monday 25/06/2007 6:55 pm
    tdnam

    bai viet kha hay

  • Saturday 08/09/2007 9:53 am
    nguyen dung hai

    Cảm ơn nhé, tui thấy nó khá hay, nhưng chưa được đầy đủ lắm. mong anh em chỉ thêm về phần sử lý XML với JavaScript nhé, tôi mắc khá nhiều về phần đó. tạ ơn anh em nhé!

  • Monday 07/01/2008 9:20 pm
    Le Khanh

    Chào bạn, mình đang tìm hiểu về XML.Mình có 1 thắc mắc thế này, mong bạn chỉ giáo.Mình có 1 ví dụ thế này.Mình có 1 file html , trong đó sẽ có các combo box để cho người dùng chọn.Sau khi chọn xong, người dùng nhấn nút “Tìm”.Sau khi nhấn nút “Tìm” thì sẽ hiện ra dữ liệu tương ứng với thông tin đã chọn ở trong combo box.Dữ liệu được lấy từ 1 file XML.Mình không biết làm như thế nào cả.Mong bạn giúp mình với.

  • Monday 07/01/2008 9:23 pm
    Le Khanh

    Luu luong nuoc thai

    –Chon luu luong nuoc thai–
    Luu luong nuoc thai tu 50m3ngay den duoi 500m3/ngay
    Luu luong nuoc thai tu 500m3/ngay den duoi 5000m3/ngay
    Luu luong nuoc thai tu 5000m3/ngay tro len

    Đó là file html của mình.Mình muốn sau khi nhấn nút “Tìm kiếm”, thì sẽ hiện thị dữ liệu được lấy từ trong file XML ra.

  • Monday 31/03/2008 10:43 am
    Schema

    hiện nay mình đang học về xml và rất cần các bài tập cũng như bài giải về xml, đặc biệt là schema…mình rất mong bạn cung cấp cho mình một số bài tập hơạc tài liệu để mình tham khảo

  • Tuesday 13/05/2008 6:46 pm
    Duc

    Hiện mình đang học về XML và rất cần bài tập về XML; đặc biệt là dùng XML để xây dựng chương trình nhỏ như: Từ điển, quản lý nhân sự. Nếu có rất mong bạn cho mình tham khảo với. Cảm ơn bạn nhiều.

  • Tuesday 24/06/2008 4:37 pm
    coctia

    boot bai` ma` ko viet code len thi noi chuyen gj

  • Tuesday 24/06/2008 4:43 pm
    coctia

    sorry tôi nhầm .Bài viết này cũng khá ấn tượng đấy.Thanks pác nhá!!!!!!!!!!!!!!!!

Gửi phản hồi

Website của bạn

Tắt Tiếng Việt Kiểu gõ Telex Kiểu gõ VNI