L−ợcđồ XML

Một phần của tài liệu Ứng dụng công nghệ hướng đối tượng và XML để phát triển hệ thống trên nền WEB (Trang 50)

Giống nh− DTD, mục đích của l−ợc đồ XML là để định nghĩa, xây dựng các khối của tài liệu XML. Một l−ợc đồ XML định nghĩa các thành phần, thuộc tính xuất hiện trong tài liệu XML, xác định thành phần nào là thành phần con, thứ tự của chúng cũng nh− là kiểu dữ liệu của các thành phần và thuộc tính.

L−ợc đồ XML dần dần đ−ợc sử dụng trong hầu hết các ứng dụng Web và có thể thay thế DTD bởi một số lý do:

– L−ợc đồ XML có thể mở rộng – L−ợc đồ XML mạch mẽ hơn DTD – L−ợc đồ XML viết theo cú pháp XML – L−ợc đồ XML hỗ trợ các kiểu dữ liệu – L−ợc đồ XML hỗ trợ không gian tên

Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ

Luận văn tốt nghiệp thạc sỹ Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo

ứ ứứ

ứng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Web

43

a. Đặc điểm cơ bản của l−ợc đồ XML so với DTD a1. Hỗ trợ các kiểu dữ liệu

Một đặc điểm quan trọng của l−ợc đồ XML là khả năng hỗ trợ các kiểu dữ liệu. Với sự hỗ trợ đó XML có thể:

– Dễ dàng mô tả nội dung tài liệu

– Dễ dàng làm việc với dữ liệu từ cơ sở dữ liệu – Dễ dàng mô tả data facets

– Dễ dàng xác định các mẫu dữ liệu

– Dễ dàng chuyển đổi dữ liệu giữa các kiểu dữ liệu khác nhau a2. L−ợc đồ XML sử dụng cú pháp XML

L−ợc đồ XML sử dụng cú pháp XML do đó ta không phải học thêm một ngôn ngữ khác, sử dụng bộ soạn thảo XML để soạn l−ợc đồ XML, sử dụng bộ thông dịch XML để biên dịch các file l−ợc đồ XML và thuận lợi nữa là ta có thể thao tác l−ợc đồ với XML DOM và chuyển đổi giữa l−ợc đồ và XSLT.

b. Cấu trúc tài liệu l−ợc đồ

L−ợc đồ tài liệu XML cũng giống nh− tài liệu XML có hai phần: phần mở đầu và phần tài liệu. Điểm khác biệt lớn giữa hai loại trên là ở chỗ l−ợc đồ không chứa DTD. Trên thực thế, cấu trúc tài liệu đ−ợc định nghĩa bên trong các thành phần l−ợc đồ. Ví dụ:

<?xml version="1.0"?>

<Schema name="tênl−ợcđồ" xmlns="urn:schemas-microsoft-com:xml-data"> <!- - Khai báo các thành phần -->

<ElementType name="tênthànhphần" content="kiểunộidung"/> </Schema>

Trong ví dụ trên các thành phần của l−ợc đồ phải khai báo ở trong không gian tên. Trên thực thế không nhất thiết phải khai báo không gian tên trong phần mở đầu của l−ợc đồ. Tuy nhiên, với không gian tên mặc định ta có thể sử dụng tiền tố không gian tên cho tất cả các khai báo tài liệu l−ợc đồ. Trong ví dụ d−ới đây sử dụng khai báo tiền tố trong khai báo không gian tên.

<?xml version="1.0"?>

<s:Schema name="tênl−ợcđồ"> <!- - Phần khai báo-->

<s:ElementType name="tênthànhphần" content="kiểunộidung"/> </s:Schema>

Các khai báo l−ợc đồ có thể có phạm vi sử dụng khác nhau, điều đó có nghĩa rằng có thể có các hình thức khai báo khác nhau nh− khai báo toàn cục (Top-level) và khai báo cục bộ (Local – level). Phạm vi khai báo xác định tại đó các thành phần đ đ−ợc khai báo có thể sử dụng trong tài liệu l−ợc đồ.

b1. Khai báo toàn cục

Khai báo toàn cục gồm các kiểu tài liệu, kiểu thuộc tính đ đ−ợc khai báo trong tài liệu l−ợc đồ. Kiểu tài liệu và kiểu thuộc tính đ−ợc khai báo toàn cục có thể sử dụng trong khai báo nội dung của kiểu thành phần khác trong l−ợc đồ. Ví dụ:

<Schema name="flowers" xmlns="urn:schemas-microsoft-com:xml-data"> <ElementType name="name" content="textonly"/>

<ElementType name="plant"> <element type="name"/> </ElementType>

</Schema>

Trong l−ợc đồ trên kiểu thành phần name đ−ợc khai báo toàn cục và đ−ợc sử dụng làm kiểu nội dung trong thành phần plant.

b2. Khai báo cục bộ

Một khai báo xuất hiện bên trong một khai báo khác nh−ng không phải toàn cục đ−ợc xác định là khai báo cục bộ. Một khai báo cục bộ chỉ có thể đ−ợc sử dụng bên trong phạm vi khai báo đ đ−ợc khai báo. Ví dụ:

<Schema name="flowers" xmlns="urn:schemas-microsoft-com:xml-data"> <ElementType name="name" content="textOnly"/>

<ElementType name="plant"> <element type="name"/>

<attribute name="bestseller" values="yes no"/> </ElementType>

</Schema>

Trong ví dụ trên, thuộc tính bestseller chỉ có thể đ−ợc sử dụng trong khai báo kiểu thành phần plant.

Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ

Luận văn tốt nghiệp thạc sỹ Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo

ứ ứứ

ứng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Web

45 c. Khai báo kiểu thành phần

Một kiểu thành phần đ−ợc khai báo trong thành phần ElementType. Mỗi khai báo kiểu thành phần phải bao gồm thuộc tính name xác định kiểu thành phần. Ví dụ khai báo kiểu thành phần d−ới đây khai báo một kiểu thành phần có tên là plant.

<ElementType name = “plant”/>

Kiểu nội dung của một thành phần đ−ợc khai báo bởi thuộc tính content và mỗi kiểu thành phần có thể chứa một trong bốn nội dung: không chứa nội dung gì (empty), chỉ văn bản, các thành phần con, cả thành phần con cả văn bản. Các nội dung đ−ợc gán là giá trị của thuộc tính content trong khai báo kiểu thành phần. Thuộc tính content có thể chứa các giá trị:

• empty: không chứa nội dung gì

• textOnly: chỉ có thể chứa nội dung văn bản • eltOnly: chỉ có thể chứa các thành phần con • mixed: có thể chứa cả văn bản và thành phần con

Ví dụ để khai báo kiểu thành phần plant chỉ chứa nội dung văn bản ta có thể khai báo nh− sau: <ElementType name “plant” content = “onlyText”/>

Thuộc tính order đ−ợc dùng để gán cho kiểu của các thành phần đ−ợc khai báo trong một kiểu thành phần. Thuộc tính order có thể chứa một trong các giá trị:

seq: các thành phần phải xuất hiện theo đúng thứ tự các thành phần đ sử dụng trong khai báo kiểu thành phần. Đây là giá trị mặc định cho thành phần có thuộc tính content là eltOnly.

one: Một thành phần con của kiểu đ đ−ợc khai báo trong khai báo kiểu thành phần phải xuất hiện trong thành phần cha.

all: tất cả các thành phần của kiểu đ khai báo trong khai báo kiểu thành phần phải xuất hiện nh− các thành phần con, nh−ng các thành phần con này có thể xuất hiện không theo thứ tự.

many: bất kể thành phần con nào đ đ−ợc khai báo trong khai báo kiểu thành phần có thể xuất hiện không theo thứ tự. Đây là giá trị mặc định của kiểu thành phần có giá trị content là mixed. Ví dụ:

<ElementType name="name" content="textOnly"/> <ElementType name="growth" content="mixed"/> <ElementType name="salesinfo" content="mixed"/>

<ElementType name="plant" content="eltOnly" order="seq"> <element type="name"/>

<element type="growth"/> <element type="salesinfo"/> </ElementType>

d. Khai báo kiểu thuộc tính

Một kiểu thuộc tính đ−ợc khai báo trong thành phần AttributeType và mỗi thành phấn AttributeType phải đ−ợc xác định bởi tên của nó. Ví dụ thành phần AttributeType d−ới đây có tên là bestseller.

Các khai báo kiểu thuộc tính đ−ợc khai báo toàn cục phụ thuộc vào khai báo kiểu thành phần. Chúng có thể đ−ợc sử dụng trong bất cứ kiểu thành phần nào mà tác giả muốn. Ví dụ thuộc tính bestseller sử dụng trong khai báo kiểu thành phần có tên là plant.

<AttributeType name="bestseller"/> <ElementType name="plant"> <attribute type="bestseller"/> </ElementType>

Trong mỗi khai báo kiểu thuộc tính có thể chứa thuộc tính default để chỉ ra giá trị thuộc tính mặc định. Ví dụ:

<AttributeType name="bestseller" default="yes"/> <ElementType name="plant">

<attribute type="bestseller"/> </ElementType>

Đoạn m này xác định giá trị của thuộc tính default đ−ợc chấp nhận ở bất cứ chỗ nào kiểu thuộc tính sử dụng trong thành phần. Nếu chúng ta thay đổi đoạn m trên thành:

Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ

Luận văn tốt nghiệp thạc sỹ Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo

ứ ứứ

ứng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Web

47 <AttributeType name="bestseller"/> <ElementType name="plant">

<attribute type="bestseller" default="no"/> </ElementType>

Thì giá trị của thuộc tính default chỉ đ−ợc chấp nhận khi nó sử dụng trong thành phần plant. Nếu thuộc tính default đ−ợc sử dụng cả hai, nh−:

AttributeType name="bestseller" default="yes"/> <ElementType name="plant">

<attribute type="bestseller" default="no"/> </ElementType>

Thì nếu giá trị default có giá trị yes thì thuộc tính bestseller sẽ đ−ợc chấp nhận bất cứ chỗ nào khi nó đ−ợc sử dụng hoặc kể cả khi nó xuất hiện trong thành phần plant, ở đó giá trị mặc định no đ−ợc chấp nhận.

Một khai báo kiểu thành phần có thuộc tính required thì kiểu thành phần đó bắt buộc phải có giá trị. Ví dụ:

<ElementType name="plant">

<attribute type="bestseller" default="no" required="yes"/> </ElementType>

Một phần của tài liệu Ứng dụng công nghệ hướng đối tượng và XML để phát triển hệ thống trên nền WEB (Trang 50)