Najnowsze tutoriale tworzenie stron internetowych
 

XML Atrybuty elementów vs.


W XML, nie ma żadnych zasad o kiedy używać atrybutów i kiedy należy używać elementów podrzędnych.


Wykorzystanie elementów atrybutów vs.

Dane mogą być przechowywane w elementach dziecko lub w atrybutach.

Spójrz na tych przykładach:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

W pierwszym przykładzie seks jest atrybutem. W ostatnim, seks jest elementem podrzędnym. Oba przykłady te same informacje.

Nie istnieją żadne przepisy o kiedy używać atrybutów i kiedy należy używać elementów podrzędnych. Z mojego doświadczenia wynika, że ​​atrybuty są poręczne w HTML, ale w XML należy starać się ich unikać. Użyj elementy podrzędne, jeśli informacje czuje danych.


Mój ulubiony sposób

I like to store data in child elements.

Poniższe trzy dokumenty XML zawierają dokładnie te same informacje:

Atrybut termin jest używany w pierwszym przykładzie:

<note date="12/11/2002">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Element termin jest stosowany w drugim przykładzie:

<note>
  <date>12/11/2002</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Datę rozszerzony element jest stosowany w trzecim: (THIS IS MY FAVORITE) :

<note>
  <date>
    <day>12</day>
    <month>11</month>
    <year>2002</year>
  </date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Unikaj używania atrybutów?

Należy unikać stosowania atrybutów?

Niektóre z problemów dotyczących atrybutów są:

  • atrybuty nie mogą zawierać wiele wartości (child elements can)
  • atrybuty nie są łatwo rozszerzalne (for future changes)
  • atrybuty nie da się opisać struktury (child elements can)
  • atrybuty są trudniejsze manipulowanie kodem programu
  • przypisania wartości nie są łatwe do testowania wobec DTD

W przypadku korzystania z atrybutów jako pojemniki na danych, skończy się z dokumentami, które są trudne do odczytania i utrzymaniu. Spróbuj użyć elements opisu danych. Stosowanie atrybutów tylko do przekazywania informacji, które nie są istotne dla danych.

Nie skończyć jak ten (this is not how XML should be used) :

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

Wyjątek od reguły mojego atrybutu

Zasady zawsze wyjątki.

Moja zasada o atrybutach ma jeden wyjątek:

Czasami przypisać referencje identyfikator elementów. Te odniesienia identyfikacyjne mogą być wykorzystywane w celu uzyskania dostępu elementów XML w taki sam sposób, jak sama nazwa lub atrybutów ID w HTML. Ten przykład demonstruje sposób:

<messages>
<note id="p501">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

<note id="p502">
  <to>Jani</to>
  <from>Tove</from>
  <heading>Re: Reminder</heading>
  <body>I will not!</body>
</note>
</messages>

Identyfikator w tych przykładach jest tylko licznik, lub unikatowy identyfikator, aby zidentyfikować różne notatki w pliku XML, a nie część danych z karty.

Co próbuję powiedzieć, jest to, że metadane (data about data) powinny być przechowywane jako atrybuty, a same dane powinny być przechowywane jako elementy.