Các thuộc tính XML

Phần tử XML có thể chứa thuộc tính trong thẻ mở đầu, tương tự như HTML.

Thuộc tính (Attribute) cung cấp thông tin bổ sung (thêm vào) về phần tử.

Thuộc tính XML phải có dấu ngoặc kép

Giá trị thuộc tính phải được bao quanh bởi dấu ngoặc kép, nhưng cả dấu ngoặc kép và dấu ngoặc đơn đều có thể sử dụng.

Ví dụ như giới tính của một người, thẻ <person> có thể được viết như sau:

<person gender="female">

hoặc như vậy cũng được:

<person gender='female'>

Nếu giá trị thuộc tính本身就 chứa dấu ngoặc kép, bạn có thể sử dụng dấu ngoặc đơn, như ví dụ sau:

<gangster name='George "Shotgun" Ziegler'>

hoặc bạn có thể sử dụng ký tự đại diện:

<gangster name="George "Shotgun" Ziegler">

XML phần tử và thuộc tính

Xin xem hai ví dụ này:

<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, sex là một thuộc tính. Trong ví dụ thứ hai, sex là một yếu tố con. Cả hai ví dụ đều có thể cung cấp thông tin tương tự.

Trong XML, không có quy tắc nào có thể告訴 chúng ta khi nào nên sử dụng thuộc tính và khi nào nên sử dụng yếu tố con. Kinh nghiệm của tôi là trong HTML, thuộc tính rất tiện lợi, nhưng trong XML, bạn nên tránh sử dụng thuộc tính. Nếu thông tin cảm giác giống như dữ liệu, hãy sử dụng yếu tố con đi.

Cách tôi yêu thích nhất

Ba tài liệu XML dưới đây chứa thông tin hoàn toàn tương tự:

Trong ví dụ đầu tiên, thuộc tính date được sử dụng:

<note date="2008-01-10">
  <to>George</to>
  <from>John</from>
</note>

Trong ví dụ thứ hai, yếu tố <date> được sử dụng:

<note>
  <date>2008-01-10</date>
  <to>George</to>
  <from>John</from>
</note>

Trong ví dụ thứ ba, yếu tố date được mở rộng (đây là điều tôi yêu thích nhất):

<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>George</to>
  <from>John</from>
</note>

Tránh sử dụng thuộc tính XML?

Một số việc cần xem xét khi sử dụng thuộc tính là:

  • Thuộc tính không thể chứa nhiều giá trị (yếu tố có thể)
  • Thuộc tính không thể mô tả cấu trúc cây (yếu tố có thể)
  • Thuộc tính không dễ dàng mở rộng (cho sự thay đổi trong tương lai)

Hãy cố gắng sử dụng yếu tố để mô tả dữ liệu. Còn chỉ sử dụng thuộc tính để cung cấp thông tin không liên quan đến dữ liệu.

Đừng làm những việc ngốc nghếch như vậy (đây không phải là cách sử dụng XML nên được sử dụng):

<note day="10" month="01" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!"
</note>

Thuộc tính XML cho dữ liệu元数据

Thỉnh thoảng có thể gán ID cho các yếu tố. Các ID này có thể được sử dụng để nhận diện yếu tố XML, cách hoạt động của nó tương tự như thuộc tính ID trong HTML. Ví dụ này đã minh họa tình huống này:

<messages>
  <note id="501">
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
  </note>
  <note id="502">
    <to>John</to>
    <from>George</from>
    <heading>Re: Nhắc nhở</heading>
    <body>Tôi sẽ không</body>
  </note> 
</messages>

ID ở trên chỉ là một chỉ thị, dùng để chỉ ra các thẻ khác nhau. Nó không phải là một phần của dữ liệu thẻ.

Ý tưởng mà chúng tôi极力向您 truyền tải ở đây là: Metadata (dữ liệu về dữ liệu) nên được lưu trữ dưới dạng thuộc tính, trong khi dữ liệu chính nên được lưu trữ dưới dạng phần tử.