Czy istnieje standardowa konwencja nazewnictwa dla elementów XML? [Zamknięte]


99

Czy istnieje jakiś standard, de facto lub inny, dla dokumentów XML? Na przykład, jaki jest „najlepszy” sposób pisania tagu?

<MyTag />
<myTag />
<mytag />
<my-tag />
<my_tag />

Podobnie, jeśli mam wyliczoną wartość atrybutu, który jest lepszy

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>

2
Z technicznego punktu widzenia możesz również użyć <my.tag />. Może nie być dobrym pomysłem w niektórych kontekstach ...
PhiLho,


Istnieje kilka „standardów” znalezionych w Internecie ..
user2864740

Odpowiedzi:


47

Podejrzewam, że najczęstszymi wartościami byłyby camelCased - tj

<myTag someAttribute="someValue"/>

W szczególności spacje powodują kilka błędów, jeśli są mieszane z generatorami kodu (tj. W celu [de] serializacji xml do obiektów), ponieważ niewiele języków pozwala na wyliczenia ze spacjami (wymagające mapowania między nimi).


36
Hm ... najlepsza odpowiedź ... Myślę, że to przyzwoita odpowiedź, ale to tylko opinia. Przydałoby się jakieś odniesienie.
Hamish Grubijan

4
Nie zgadzam się, nie jestem przyzwyczajony do oglądania XML w przypadku wielbłąda.
Rafa

Wiem, że to stara odpowiedź, ale większość nowszych Microsoft XML, które widziałem, zwykle nie zgadza się z tym wyborem formatu. Ale potem IIS lubi dot.naming, więc ...
user2246674

4
Jak wszyscy wspominają, że jest to osobiste, ale podążam za Twoim podejściem, ponieważ zawsze definiuję swój XML za pomocą XMLSchema, a XMLSchema podąża za tym podejściem. w3.org/2001/XMLSchema.xsd . Dla mnie nie ma to nic wspólnego z językami programowania. Używamy XML, ponieważ jest to interoperacyjny standard interfejsu. Języki programowania to tylko szczegół implementacji, a każdy język ma swoją własną konwencję.
dan Carter

Moje 2 centy - widziałem CamelCase i wszystkie małe litery; rzadko wszystkie duże (stary HTML) i widziałem małe litery. Nie przypominam sobie, żeby kiedykolwiek widziałem Camel Back. Wolę CamelCase lub małe litery. Jednak atrybuty zwykle widzę małe litery.
Kit10

30

Reguły nazewnictwa XML

Elementy XML muszą być zgodne z następującymi regułami nazewnictwa:

    - Element names are case-sensitive 
    - Element names must start with a letter or underscore
    - Element names cannot start with the letters xml(or XML, or Xml, etc) 
    - Element names can contain letters, digits, hyphens, underscores, and periods 
    - Element names cannot contain spaces

Można użyć dowolnej nazwy, żadne słowa nie są zastrzeżone (z wyjątkiem xml).

Najlepsze praktyki nazewnicze

    - Create descriptive names, like this: <person>, <firstname>, <lastname>.
    - Create short and simple names, like this: <book_title> not like this: <the_title_of_the_book>.
    - Avoid "-". If you name something "first-name", some software may think you want to subtract "name" from "first".
    - Avoid ".". If you name something "first.name", some software may think that "name" is a property of the object "first".
    - Avoid ":". Colons are reserved for namespaces (more later).
    - Non-English letters like éòá are perfectly legal in XML, but watch out for problems if your software doesn't support them.

Nazewnictwo stylów

Nie ma zdefiniowanych stylów nazewnictwa dla elementów XML. Ale oto kilka powszechnie używanych:

    - Lower case    <firstname> All letters lower case
    - Upper case    <FIRSTNAME> All letters upper case
    - Underscore    <first_name>    Underscore separates words
    - Pascal case   <FirstName> Uppercase first letter in each word
    - Camel case    <firstName> Uppercase first letter in each word except the first

odniesienie http://www.w3schools.com/xml/xml_elements.asp


13

Dla mnie jest to jak dyskusja o stylu kodu w języku programowania: niektórzy będą opowiadać się za stylem, inni będą bronić alternatywy. Jedyny konsensus, jaki widziałem, to: „Wybierz jeden styl i bądź konsekwentny”!

Zauważyłem tylko, że wiele dialektów XML używa tylko małych liter (SVG, Ant, XHTML ...).

Nie widzę reguły „brak spacji w wartościach atrybutów”. W jakiś sposób wysyła do debaty „co umieścić w atrybutach, a co jako tekst?”.
Może to nie są najlepsze przykłady, ale jest kilka dobrze znanych formatów XML używających spacji w atrybutach:

  • XHTML, szczególnie atrybut class (możesz umieścić dwie lub więcej klas) i oczywiście atrybuty alt i title.
  • SVG, na przykład z atrybutem d znacznika ścieżki.
  • Oba z atrybutem stylu ...

Nie do końca rozumiem argumenty przeciwko tej praktyce (wydaje się, że dotyczy to tylko niektórych zastosowań), ale jest ona przynajmniej legalna i dość szeroko stosowana. Najwyraźniej z wadami.

Aha, i nie potrzebujesz spacji przed automatycznie zamykającym ukośnikiem. :-)


Argumentem przeciwko spacjom jest, i to tylko dlatego, że zadano go konkretnie w pytaniu, jeśli wartość jest wyliczana, a następnie do obsługi parsowania, niewiele języków obsługuje wyliczenia ze spacjami, ale wielu z nas używa XML w C / C ++, C # lub Java (języki, których używam, ale nie tylko) często mapuje wartości atrybutów na wyliczenia. Następnie możemy po prostu przeanalizować literał do mapy / słownika (lub łatwiej w przypadku Javy i C #). Ostatecznie zgadzam się, że wydaje się to raczej kwestią zapału niż standardu. Po prostu kieruję się filozofią „kiedy w Rzymie”.
Kit10

12

Preferuję TitleCase dla nazw elementów i camelCase dla atrybutów. Brak miejsca na to.

<AnElement anAttribute="Some Value"/>

Na marginesie, szybko wyszukałem najlepsze praktyki w XML i znalazłem to dość interesujące łącze: schematy XML: najlepsze praktyki .


8

Preferowałbym małe lub wielbłądy znaczniki, a ponieważ atrybuty powinny zazwyczaj odzwierciedlać wartości danych - a nie treść - trzymałbym się wartości, która mogłaby być używana jako nazwa zmiennej na dowolnej platformie / języku, tj. Unikać spacji, ale innych dwie formy mogą być w porządku


+1 za myślenie o nazwach zmiennych / funkcji
Ates Goral

@downvoter: zrób mi uprzejmość i wyjaśnij mi siebie.
annakata

8

Jest to subiektywne, ale jeśli w tagu elementu znajdują się dwa słowa, czytelność można poprawić, dodając podkreślenie między słowami (np. <my_tag>) Zamiast używania separatora. Źródła: http://www.w3schools.com/xml/xml_elements.asp . Tak więc według w3schools odpowiedź byłaby:

<my_tag attribute="some value">

Wartość nie musi zawierać podkreślenia ani separatora, ponieważ dozwolone są spacje w wartościach atrybutów, ale nie w nazwach znaczników elementów.


2
+1, ponieważ zacytowałeś odniesienie, które ma sekcję „Najlepsze praktyki dotyczące nazewnictwa” (nie tylko opinię)
Fuhrmanator,

2
@Fuhrmanator To „odniesienie” jest samo w sobie opinią, mimo że zawiera pewne uzasadnienie. W żadnym wypadku nie jest to standard - i (chociaż jest znacznie mniej straszny niż był) nie polecam ani nie używam w3schools jako „odniesienia”. Źródeł oryginalnych i obszerniejszych jest znacznie więcej.
user2864740

@ user2864740, na przykład? Skończyłeś swój komentarz przed udostępnieniem bardziej oryginalnych i obszernych źródeł. Punkt mojej +1 polegał na tym, że PO poprosił o standardy, ale większość odpowiedzi zawiera opinie.
Fuhrmanator

Ta odpowiedź zawiera tylko opinie , link do w3schools jest nieistotny i ich nie usuwa. Jeśli chodzi o standardy, patrz zasady wdrażania (jak w RSS ) lub zasady organizacyjne (jak w OAGi ) - na pewnym poziomie „standard” jest stosowany tylko na poziomie konkretnej aplikacji / biznesu. Link w3schools dostarcza tylko własnej opinii / najlepszych praktyk w bardzo niejasnym sensie (zawiera kilka wskazówek i mówi „oto sposób, w jaki to się robi”).
user2864740

Oznacza to, że samo dołączenie linku nie sprawia, że ​​odpowiedź (lub powiązany zasób) jest miarodajna.
user2864740

7

Wiele dialektów XML skoncentrowanych na dokumentach używa podstawowych liter łacińskich i myślników. Mam tendencję do tego.

Generatory kodu, które mapują XML bezpośrednio na identyfikatory języka programowania, są kruche i (z wyjątkiem naiwnej serializacji obiektów, takiej jak XAML) należy unikać w przenośnych formatach dokumentów; w celu najlepszego ponownego wykorzystania i trwałości informacji XML powinien być dopasowany do domeny, a nie do implementacji.


3

rss jest prawdopodobnie jednym z najczęściej używanych schematów XML na świecie i jest to camelCased.

Specyfikacja jest tutaj: http://cyber.law.harvard.edu/rss/rss.html

To prawda, że ​​nie ma atrybutów węzłów w schemacie, ale wszystkie nazwy elementów węzłów to camelCased. Na przykład:

lastBuildDate managementEditor pubDate


2

Zwykle dostosowuję konwencję nazewnictwa XML do tej samej konwencji nazewnictwa w innych częściach kodu. Powodem jest to, że kiedy ładuję XML do Object, jego atrybuty i nazwy elementów mogą być określane jako ta sama konwencja nazewnictwa, która jest obecnie używana w projekcie.

Na przykład, jeśli twój javascript używa camelCase, wtedy twój XML również używa camelCase.


1
Jest to przydatne do pracy nad projektami, ale szybko się psuje, gdy XML jest używany jako format wymiany
niezależny

Zatem komponenty twojego projektu są spójne, ale jak zaprojektować początkowy standard, z którym projekt jest zgodny?
Gqqnbig

2

Microsoft stosuje dwie konwencje:

  1. Do konfiguracji firma Microsoft używa camelCase . Spójrz na plik konfiguracyjny programu Visual Studio. W przypadku VS2013 jest przechowywany w:

    C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ devenv.exe.config

Przykład:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Firma Microsoft używa również UpperCase dla swoich XAML. Myślę, że ma to odróżnić od HTML (który używa małych liter).

Przykład:

<MenuItem Header="Open..." Command="ApplicationCommands.Open">
    <MenuItem.Icon>
        <Image Source="/Images/folder-horizontal-open.png" />
    </MenuItem.Icon>
</MenuItem>

1

Nie ma wyraźnych zaleceń. Opierając się na innych zaleceniach W3C, dotyczących XHTML , wybrałem małe litery:

4.2. Nazwy elementów i atrybutów muszą być pisane małymi literami

Dokumenty XHTML muszą używać małych liter we wszystkich nazwach elementów HTML i atrybutów. Ta różnica jest konieczna, ponieważ XML rozróżnia wielkość liter, np. <li> i <LI> to różne tagi.


0

Reguły nazewnictwa XML

Elementy XML muszą być zgodne z następującymi regułami nazewnictwa:

  • Nazwy mogą zawierać litery, cyfry i inne znaki
  • Nazwy nie mogą zaczynać się cyfrą ani znakiem interpunkcyjnym
  • Nazwy nie mogą zaczynać się od liter xml (lub XML, Xml itp.)
  • Nazwy nie mogą zawierać spacji Można użyć dowolnej nazwy, żadne słowa nie są zastrzeżone.

Źródło: Szkoła W3


Niejasny opis możliwych rodzajów nazw daje niewiele wskazówek co do tego, które z możliwych nazw należy użyć.
Samuel Edwin Ward

Chociaż określają podstawy tego, co jest możliwe - prawda?
petermeissner

10
Jasne, ale to tak, jakby ktoś zapytał „jak mam nazwać moje dziecko, żeby nie było zaczepiane w szkole”, a ty odpowiedziałeś „cóż, oto lista dźwięków, które ludzie są w stanie wytworzyć”.
Samuel Edwin Ward

Tak, ale właściwie to nie było pytanie, prawda? Ponieważ pytanie brzmiało: „Czy istnieje standardowa konwencja nazewnictwa dla elementów XML?” i „Czy istnieje jakiś standard, de facto lub inny, dla dokumentów XML?” więc to jest odpowiedź, prawda? Takiej, która odpowiada na pytanie, a nie tylko na jeden wspólny strumień interpretacji pytania.
petermeissner

3
To tylko odpowiedź, jeśli zignorujesz resztę pytania po tych dwóch zdaniach. Nie próbowałeś odpowiedzieć „co jest„ najlepsze ”” lub „które jest lepsze”.
Samuel Edwin Ward

0

Dużo szukałem dobrego podejścia, czytając również ten wątek i kilka innych i zagłosowałbym za użyciem łączników .

Są szeroko stosowane w ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ), które można zobaczyć w wielu kodach źródłowych i dlatego są powszechne. Jak już wspomniano, są one z pewnością dozwolone, co również wyjaśniono tutaj: Używanie - w nazwie elementu XML

Dodatkowa korzyść: pisząc HTML w połączeniu z CSS, często masz klasy, których nazwy również domyślnie używają myślników jako separatorów. Teraz, jeśli masz niestandardowe tagi, które używają klas CSS lub niestandardowe atrybuty dla tagów, które używają klas CSS, to coś takiego:

<custom-tag class="some-css-class">

jest bardziej spójny i czyta - moim skromnym zdaniem - o wiele ładniejszy niż:

<customTag class="some-css-class">

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.