Thuộc tính trong XML




Chương này trình bày cho bạn về thuộc tính trong XML. Các thuộc tính là các phần của các phần tử XML. Một phần tử có thể có nhiều thuộc tính duy nhất. Các thuộc tính cung cấp thêm thông tin về các phần tử XML. Một thuộc tính XML luôn luôn là một cặp name-value.

Cú pháp

Một thuộc tính XML có cú pháp như sau:

<element-name attribute1 attribute2 >
....content..
< /element-name>

Ở đây, attribute1attribute2 có mẫu như sau:

name = "value"

value phải nằm trong dấu trích dẫn đơn (" ") hoặc trích dẫn kép (' '). Ở đây, attribute1attribute2 là nhãn thuộc tính duy nhất.

Các thuộc tính được sử dụng để thêm một nhãn duy nhất cho một phần tử, đặt nhãn trong một Category, thêm một Boolean flag, hoặc liên kết nó với một số chuỗi dữ liệu. Ví dụ sau minh họa sự sử dụng của thuộc tính:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE garden [
   <!ELEMENT garden (plants)*>
   <!ELEMENT plants (#PCDATA)>
   <!ATTLIST plants category CDATA #REQUIRED>
]>
<garden>
   <plants category="flowers" />
   <plants category="shrubs">
   </plants>
</garden>
Quảng cáo

Các thuộc tính được sử dụng để phân biệt các phần tử có cùng tên. Khi bạn không muốn tạo một phần tử mới trong mọi tình huống, thì sử dụng một thuộc tính có thể bổ sung thêm sự khác nhau giữa hai hoặc nhiều phần tử tương tự.

Trong ví dụ trên, chúng ta đã phân loại các plants bằng việc thêm thuộc tính category và gán các giá trị khác nhau cho mỗi phần tử. Vì thế, chúng ta có hai loại plants, một là flowers và loại khác là shrubs. Do đó, chúng ta có hai phần tử plants với các thuộc tính khác nhau.

Bạn cũng có thể nhận thấy rằng chúng ta đã khai báo thuộc tính này tại phần đầu của XML.

Kiểu thuộc tính trong XML

Bảng dưới liệt kê các kiểu thuộc tính trong XML:

Kiểu thuộc tính Miêu tả
StringType

Nó nhận bất kỳ chuỗi hằng nào như là một giá trị. CDATA là một StringType. CDATA là dữ liệu ký tự. Nghĩa là, bất cứ chuỗi ký tự không đánh dấu nào là một phần hợp lệ của thuộc tính

TokenizedType

Đây là một kiểu khá phức tạp. Các ràng buộc giá trị ghi chú trong cú pháp được áp dụng sau khi giá trị thuộc tính được tiêu chuẩn hóa. Các thuộc tính kiểu TokenizedType được cung cấp như sau:

  • ID: Nó được sử dụng để xác định phần tử là duy nhất
  • IDREF: Nó được sử dụng để tham chiếu một ID mà đã được chỉ định cho phần tử khác
  • IDREFS: Nó được sử dụng để tham chiếu tới tất cả ID của một phần tử
  • ENTITY: Nó chỉ rằng thuộc tính sẽ biểu diễn một thực thể bên ngoài trong tài liệu
  • ENTITIES: Nó chỉ rằng thuộc tính sẽ biểu diễn các thực thể bên ngoài trong tài liệu
  • NMTOKEN: Nó là tương tự như CDATA với các sự ràng buộc về kiểu dữ liệu nào có thể là một phần của thuộc tính này
  • NMTOKENS: Nó là tương tự như CDATA với các sự ràng buộc về kiểu dữ liệu nào có thể là một phần của thuộc tính này
EnumeratedType

Nó có một danh sách các giá trị được định nghĩa trước trong khai báo của nó. Ở bên ngoài danh sách, nó phải gán một giá trị. Có hai kiểu thuộc tính dạng EnumeratedType:

  • NotationType: Nó khai báo rằng một phần tử sẽ được tham chiếu tới một NOTATION đã được khai báo ở đâu đó trong tài liệu XML
  • Enumeration: Cho phép bạn định nghĩa danh sách các giá trị cụ thể mà giá trị thuộc tính phải kết nối
Quảng cáo

Qui tắc cho thuộc tính phần tử trong XML

Bạn cần theo các qui tắc dưới đây khi sử dụng thuộc tính phần tử trong XML:

  • Một tên thuộc tính phải không xuất hiện nhiều hơn một lần trong cùng thẻ đóng và thẻ mở.

  • Một thuộc tính phải được khai báo trong Document Type Definition (DTD) bởi sử dụng một khai báo danh sách thuộc tính.

  • Các giá trị thuộc tính phải không chứa các tham chiếu thực thể trực tiếp hoặc gián tiếp tới các thực thể bên ngoài.

  • Phần text thay thế của một thực thể được tham chiếu trực tiếp hoặc gián tiếp trong một giá trị thuộc tính phải không chứa dấu nhỏ hơn <

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.