Samouczek XML

Strona główna XML Wprowadzenie do XML XML Jak używać Drzewo XML Składnia XML Elementy XML Atrybuty XML Przestrzenie nazw XML Wyświetlacz XML Żądanie HTTP XML Parser XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Walidator XML XML DTD Schemat XML Serwer XML Przykłady XML Quiz XML Certyfikat XML

XML AJAX

Wprowadzenie do AJAX AJAX XMLHttp Żądanie AJAX Odpowiedź AJAX Plik XML AJAX AJAX PHP ASP AJAX Baza danych AJAX Aplikacje AJAX Przykłady AJAX

XML DOM

Wprowadzenie do DOM Węzły DOM Dostęp do DOM Informacje o węźle DOM Lista węzłów DOM Przechodzenie DOM Nawigacja DOM DOM Uzyskaj wartości Zmiana węzłów DOM DOM Usuń węzły DOM Zamień węzły DOM Utwórz węzły DOM Dodaj węzły Węzły klonowania DOM Przykłady DOM

Samouczek XPath

Wprowadzenie do XPath Węzły XPath Składnia XPath Osie XPath Operatorzy XPath Przykłady XPath

Samouczek XSLT

Wprowadzenie XSLT Języki XSL Transformacja XSLT XSLT <szablon> XSLT <wartość-z> XSLT <dla każdego> XSLT <sortuj> XSLT <jeśli> XSLT <wybierz> XSLT Zastosuj XSLT na kliencie XSLT na serwerze XSLT Edytuj XML Przykłady XSLT

Samouczek XQuery

Wprowadzenie do XQuery Przykład XQuery XQuery FLWOR XQuery HTML Warunki XQuery Składnia XQuery XQuery Dodaj XQuery Wybierz Funkcje XQuery

XML DTD

Wprowadzenie do DTD Bloki konstrukcyjne DTD Elementy DTD Atrybuty DTD Elementy DTD a Attr Jednostki DTD Przykłady DTD

Schemat XSD

Wprowadzenie do XSD XSD Jak to zrobić XSD <schemat> Elementy XSD Atrybuty XSD Ograniczenia XSD

Kompleks XSD

Elementy XSD XSD Pusty Tylko elementy XSD Tylko tekst XSD Mieszane XSD Wskaźniki XSD XSD <dowolny> XSD <dowolnyAtrybut> Zastąpienie XSD Przykład XSD

Dane XSD

XSD ciąg Data XSD Numeryczne XSD Różne XSD Odniesienie XSD

Usługi internetowe

Usługi XML XML WSDL MYDŁO XML XML RDF XML RSS

Bibliografia

Typy węzłów DOM Węzeł DOM Lista węzłów DOM DOM NamedNodeMap Dokument DOM Element DOM Atrybut DOM Tekst DOM DOM CDATA Komentarz DOM DOM XMLHttpRequest Analizator DOM Elementy XSLT Funkcje XSLT/XPath

Elementy XML a atrybuty


W XML nie ma reguł dotyczących tego, kiedy używać atrybutów, a kiedy używać elementów podrzędnych.


Użycie elementów a atrybutów

Dane mogą być przechowywane w elementach podrzędnych lub w atrybutach.

Spójrz na te przykłady:

<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 płeć jest atrybutem. W końcu seks jest elementem potomnym. Oba przykłady dostarczają tych samych informacji.

Nie ma reguł dotyczących tego, kiedy używać atrybutów, a kiedy używać elementów podrzędnych. Z mojego doświadczenia wynika, że ​​atrybuty są przydatne w HTML, ale w XML powinieneś ich unikać. Użyj elementów podrzędnych, jeśli informacje przypominają dane.


Mój ulubiony sposób

Lubię przechowywać dane w elementach potomnych.

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

W pierwszym przykładzie użyto atrybutu daty:

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

W drugim przykładzie użyto elementu daty:

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

Rozwinięty element daty jest używany w trzecim: (TO JEST MOJE ULUBIONE):

<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>


Unikasz używania atrybutów?

Czy powinieneś unikać używania atrybutów?

Niektóre problemy z atrybutami to:

  • atrybuty nie mogą zawierać wielu wartości (elementy podrzędne mogą)
  • atrybuty nie są łatwo rozszerzalne (dla przyszłych zmian)
  • atrybuty nie mogą opisywać struktur (elementy potomne mogą)
  • atrybuty są trudniejsze do manipulowania przez kod programu
  • wartości atrybutów nie są łatwe do przetestowania względem DTD

Jeśli używasz atrybutów jako pojemników na dane, otrzymujesz dokumenty, które są trudne do odczytania i utrzymania. Staraj się używać elementów do opisu danych. Używaj atrybutów tylko w celu podania informacji, które nie są istotne dla danych.

Nie kończ w ten sposób (nie tak powinno się używać XML):

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

Wyjątek od mojej reguły atrybutów

Zasady zawsze mają wyjątki.

Moja zasada dotycząca atrybutów ma jeden wyjątek:

Czasami przypisuję referencje ID do elementów. Te odwołania do identyfikatorów mogą być używane do uzyskiwania dostępu do elementów XML w podobny sposób, jak atrybuty NAME lub ID w HTML. Ten przykład pokazuje to:

<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 licznikiem lub unikalnym identyfikatorem identyfikującym różne notatki w pliku XML, a nie częścią danych notatki.

Chcę tutaj powiedzieć, że metadane (dane o danych) powinny być przechowywane jako atrybuty, a same dane powinny być przechowywane jako elementy.