Thuộc tính XML
Các phần tử XML có thể có các thuộc tính, giống như HTML.
Các thuộc tính được thiết kế để chứa dữ liệu liên quan đến một phần tử cụ thể.
Thuộc tính XML phải được trích dẫn
Giá trị thuộc tính phải luôn được trích dẫn. Có thể sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép.
Đối với giới tính của một người, phần tử <person> có thể được viết như sau:
<person gender="female">
hoặc như thế này:
<person gender='female'>
Nếu bản thân giá trị thuộc tính chứa dấu ngoặc kép thì bạn có thể sử dụng dấu ngoặc đơn, như trong ví dụ này:
<gangster name='George "Shotgun" Ziegler'>
hoặc bạn có thể sử dụng các thực thể ký tự:
<gangster name="George "Shotgun" Ziegler">
Các phần tử XML so với các thuộc tính
Hãy xem hai ví dụ sau:
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
Trong ví dụ đầu tiên, giới tính là một thuộc tính. Trong ví dụ cuối cùng, giới tính là một yếu tố. Cả hai ví dụ đều cung cấp thông tin giống nhau.
Không có quy tắc nào về thời điểm sử dụng thuộc tính hoặc thời điểm sử dụng các phần tử trong XML.
Con đường yêu thích của tôi
Ba tài liệu XML sau đây chứa thông tin giống hệt nhau:
Thuộc tính ngày được sử dụng trong ví dụ đầu tiên:
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
Phần tử <date> được sử dụng trong ví dụ thứ hai:
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
Phần tử <date> mở rộng được sử dụng trong ví dụ thứ ba: (ĐÂY LÀ YÊU THÍCH CỦA TÔI):
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
Tránh các thuộc tính XML?
Một số điều cần cân nhắc khi sử dụng thuộc tính là:
- thuộc tính không thể chứa nhiều giá trị (các phần tử có thể)
- thuộc tính không thể chứa cấu trúc cây (các phần tử có thể)
- các thuộc tính không dễ dàng mở rộng (đối với những thay đổi trong tương lai)
Đừng kết thúc như thế này:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Thuộc tính XML cho siêu dữ liệu
Đôi khi các tham chiếu ID được gán cho các phần tử. Những ID này có thể được sử dụng để xác định các phần tử XML theo cách tương tự như thuộc tính id trong HTML. Ví dụ này chứng minh điều này:
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
Các thuộc tính id ở trên dùng để xác định các ghi chú khác nhau. Bản thân nó không phải là một phần của ghi chú.
Điều tôi muốn nói ở đây là siêu dữ liệu (dữ liệu về dữ liệu) phải được lưu trữ dưới dạng thuộc tính và bản thân dữ liệu đó phải được lưu trữ dưới dạng phần tử.