Zasady projektowania XML: kiedy używać elementów kontra atrybuty Uche Ogbuji z IBM jest prawdopodobnie jednym z najlepszych zasobów w tej sprawie.
U podstaw tej decyzji leży to, że atrybuty są „zrobione”. Nie możesz ich zmienić, zmodyfikować ani zagnieździć. Są one niezależne i odrębne w obrębie elementu (nie możesz mieć dwóch tego samego).
Jeśli którekolwiek z tych ograniczeń mogą ulec zmianie, uczyń dane węzłem potomnym kodu XML.
W twoim przykładzie masz osobę, która ma imię i wiek. Mam imię, środkowe i nazwisko ... i pseudonim. A niektórzy ludzie mają nazwiska panieńskie, wiele drugich imion lub honorykę - jak byś włożył Johna Ronalda Reuela Tolkiena w takiej strukturze?
Mamy więc kogoś, kto ma dwa drugie imiona, które mają do nich rozkaz. Powinno to wyraźnie wskazywać, że nie, atrybut nie jest najlepszym wyborem.
Obecnie nie mogę go znaleźć, ale w powyższym połączonym dokumencie znajduje się stwierdzenie, że imiona są rzeczami, które wymagają zastanowienia, prowadząc do „Mam nadzieję rozszerzyć sposób traktowania nazwisk ludzi w znacznikach w przyszłym artykule”. Jeśli ktoś ma na to temat, zostaw komentarz lub edytuj go w tym miejscu.
Z drugiej strony wiek jest czymś, co ma raczej stałą strukturę (sugerowałbym urodziny, a nie liczbę całkowitą). Jako takie, przedstawienie tej informacji w dobrze znanym i zrozumiałym formacie ma sens w atrybucie. Osoba ma jedno i tylko jedno urodziny i nie ma „zamówienia”, które chcesz zachować.
Uche Ogbuji identyfikuje trzy podstawowe zasady prawidłowego projektowania formatu xml. Poniżej znajdują się skrócone cytaty z powyższego połączonego dokumentu.
- Zasada ustrukturyzowanej informacji
Jeśli informacje są wyrażone w ustrukturyzowanej formie, szczególnie jeśli struktura może być rozszerzalna, użyj elementów. Z drugiej strony: jeśli informacja jest wyrażona jako token atomowy, użyj atrybutów
- Zasada czytelności
Jeśli informacje mają być przeczytane i zrozumiane przez osobę, należy użyć elementów. Jeśli informacje są najłatwiej zrozumiałe i przetworzone przez maszynę, użyj atrybutów.
- Zasada wiązania elementu / atrybutu
Użyj elementu, jeśli chcesz zmodyfikować jego wartość innym atrybutem
I tak, nazwy powinny zawierać elementy - są to ustrukturyzowane dane, które nie są tokenem atomowym, są bardziej prawdopodobne, że zostaną odczytane przez człowieka niż komputer i mogą zostać zmodyfikowane przez inny atrybut samej nazwy.
Daty powinny być atrybutami - są to dane, które są tokenem atomowym, są bardziej prawdopodobne, że są odczytywane przez komputer niż człowiek (a następnie przekształcane w preferowany format człowieka, jeśli to konieczne ), a na koniec jest mało prawdopodobne, aby zostały zmodyfikowane przez inne atrybuty na nich.