Tin tức
Tài liệu XML chuẩn
24/10/2008
Một tài liệu XML phải well-formedvalid. Mặc dầu hai từ này nghe tờ tợ, nhưng chúng có ý nghĩa khác nhau. Một XML well-formed là một XML thích hợp cho parser chế biến. Tức là XML tuân thủ các luật lệ về Tag, Element, Attribute , value .v.v.. chứa bên trong để parser có thể nhận diện và phân biệt mọi thứ.

Để ý là một XML well-formed chưa chắc chứa đựng những dữ liệu hữu dụng trong công việc làm ăn. Là well-formed chỉ có nghĩa là XML có cấu trúc đúng. Để hữu dụng cho công việc làm ăn, XML chẳng những well-formed mà còn cần phải valid.
 
Một tài liệu XML valid khi nó chứa những data cần có trong loại tài liệu loại hay class ấy. Thí dụ một XML đặt hàng có thể bị đòi hỏi phải có một Attribute OrderNo và một Child Element Orderdate. Parser validate một XML bằng cách kiểm tra data trong XML xem có đúng như định nghĩa trong một Specification về loại tài liệu XML ấy. Specification này có thể là một Document Type Definition (DTD) hay một Schema.
Tài liệu XML hợp khuôn dạng (well-formed)
Để well-formed, một tài liệu XML phải theo đúng các luật sau đây:
1.     Phải có một root (gốc) Element duy nhất, gọi là Document Element, nó chứa tất cả các Elements khác trong tài liệu.
2.     Mỗi opening Tag phải có một closing Tag giống như nó.
3.     Tags trong XML thì case sensitive, tức là opening Tag và closing Tag phải được đánh vần y như nhau, chữ hoa hay chữ thường.
4.     Mỗi Child Element phải nằm trọn bên trong Element cha của nó.
5.     Attribute value trong XML phải được gói giữa một cặp ngoặc kép hay một cặp apostrophe.
Luật thứ nhất đòi hỏi một root Element duy nhất, nên tài liệu dưới đây không well-formed vì nó không có một top level Element:
<Product ProductID="1">Chair</Product>
<Product ProductID="2">Desk</Product>
 
Một tài liệu XML không có root Element được gọi là một XML fragment (mảnh). Để làm cho nó well-formed ta cần phải thêm một root Element như dưới đây:
<Catalog>
   <Product ProductID="1">Chair</Product>
   <Product ProductID="2">Desk</Product>
</Catalog>
 
Luật thứ hai nói rằng mỗi opening Tag phải có một closing Tag giống như nó. Tức là mỗi Tag mở ra phải được đóng lại. Empty Element viết cách gọn như <MiddleInitial/> được gọi là có Tag tự đóng lại. Các Tags khác phải có closing Tag. Cái XML dưới đây không well-formed vì nó có chứa một một Tag <Item> thiếu closing Tag </Item>:
<Order>
   <OrderDate>2002-6-14</OrderDate>
   <Customer>Helen Mooney</Customer>
   <Item>
      <ProductID>2</ProductID>
      <Quantity>1</Quantity>
   <Item>
      <ProductID>4</ProductID>
      <Quantity>3</Quantity>
   </Item>
</Order>
 
Để làm cho nó well-formed ta phải thêm cái closing tag cho Element Item thứ nhất:
<Order>
   <OrderDate>2002-6-14</OrderDate>
   <Customer>Helen Mooney</Customer>
   <Item>
      <ProductID>2</ProductID>
      <Quantity>1</Quantity>
   </Item>
   <Item>
      <ProductID>4</ProductID>
      <Quantity>3</Quantity>
   </Item>
</Order>
 
Luật thứ ba nói là tên Tag thì case sensitive, tức là closing Tag phải đánh vần y hệt như opening Tag, phân biệt chữ hoa, chữ thường. Như thế <order> khác với <Order>, ta không thể dùng Tag </Order> để đóng Tag <order>. Cái XML dưới đây không well-formed vì opening Tag và closing Tags của Element OrderDate không đánh vần giống nhau:
<Order>
   <OrderDate>2001-01-01</Orderdate>
   <Customer>Graeme Malcolm</Customer>
</Order>
 
Muốn làm cho nó well formed, ta phải sửa chữ d thành chữ hoa (uppercase) D như sau:
<Order>
   <OrderDate>2001-01-01</OrderDate>
   <Customer>Graeme Malcolm</Customer>
</Order>
 
Luật thứ tư nói mỗi Child Element phải nằm trọn bên trong Element cha của nó, tức là không thể bắt đầu một Element mới khi Element này chưa chấm dứt. Thí dụ như tài liệu XML dưới đây không well-formed vì closing Tag của Category hiện ra trước closing Tag của Product.
<Catalog>
   <Category CategoryName="Beverages">
       <Product ProductID="1">
          Coca-Cola
       </Category>
   </Product>
</Catalog>
 
Muốn sửa cho nó well-formed ta cần phải đóng Tag Product trước như dưới đây:
<Catalog>
   <Category CategoryName="Beverages">
       <Product ProductID="1">
          Coca-Cola
       </Product>
   </Category>
</Catalog>
 
Luật cuối cùng về tài liệu XML well-formed đòi hỏi value của Attribute phải được gói trong một cặp apostrophe hay ngoặc kép. Tài liệu dưới đây không well-form vì các Attribute values không được ngoặc đàng hoàng, số 1 không có dấu ngoặc, số 2 có một cái apostrophe, một cái ngoặc kép:
<Catalog>
   <Product ProductID=1>Chair</Product>
   <Product ProductID='2">Desk</Product>
</Catalog>
 
Tài liệu XML hợp lệ (Valid)
 
Hầu hết các trình duyệt trước hết kiểm tra xem tài liệu XML của bạn có hợp khuôn dạng không. Tiếp theo một vài trình duyệt có thẻ kiểm tra thêm tính hợp lệ của tài liệu.

Một tài liệu XML được gọi là hợp lệ khi nó là tài liệu được kết hợp với định nghĩa kiểu tư liệu DTD (DOCUMENT TYPE DEFINITION) và tuân theo chuẩn DTD. DTD có thể được chứa trong một file tách biệt hoặc chứa ngay trong chính tài liệu. DTD sử dụng thẻ <!DOCTYPE>. Dưới đây là một ví dụ về định nghĩa kiểu tư liệu DTD.
 
Code:
<?xml version=“1.0” encoding=“UTF-8”?>
<?xml-stylesheet type=“text/css” href=“first.css”?>
<!DOCTYPE DOCUMENT[
<!ELEMENT DOCUMENT (GREETING,MESSAGE)>
<!ELEMENT GREETING (#PCDATA)>
<!ELEMENT MESSAGE (#PCDATA)>
]>
<DOCUMENT>
            <GREETING>
                        Hello from XML
            </GREETING>
            <MESSAGES>
                        Well come to XML
            </MESSAGES>
</DOCUMENT>
Nội dung file first.css:
GREETING{
            display: block;
            font-SIZE:36pt;
            color:#FF000;
            text-align:center
}
MESSAGES{
            display: block;
            font-SIZE:18pt;
            color:#00000;
}
 
Chúng ta thấy DTD chỉ định bạn có thể có hai thẻ <GREETING>, <MESSAGES> được đặt nằm trong thẻ <DOCUMENT>. Định nghĩa cho thấy <DOCUMENT> là phần tử gốc. Và <GREETING>, <MESSAGES> là các phần tử mang theo văn bản.
Ý kiến bạn đọc