Gibt es eine Standardbenennungskonvention für XML-Elemente? [geschlossen]

96

Gibt es de facto oder anderweitig einen Standard für XML-Dokumente? Was ist zum Beispiel der "beste" Weg, um ein Tag zu schreiben?

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

Ebenso, wenn ich einen Aufzählungswert für ein Attribut habe, das besser ist

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
tpower
quelle
2
Technisch gesehen können Sie auch <my.tag /> verwenden.
Könnte
1
Duplikat von stackoverflow.com/questions/1074447/…
Igor Brejc
Es gibt mehrere "Standards" online gefunden ..
user2864740

Antworten:

46

Ich vermute, die häufigsten Werte wären camelCased - dh

<myTag someAttribute="someValue"/>

Insbesondere verursachen die Leerzeichen einige Fehler, wenn sie mit Codegeneratoren gemischt werden (dh um XML in Objekte zu [de] serialisieren), da nicht viele Sprachen Aufzählungen mit Leerzeichen zulassen (was eine Zuordnung zwischen beiden erfordert).

Marc Gravell
quelle
35
Hm ... beste Antwort ... Ich denke, es ist eine anständige Antwort, aber es ist nur eine Meinung. Eine Referenz zu haben wäre schön.
Hamish Grubijan
4
Ich stimme nicht zu, ich bin es nicht gewohnt, XML mit Kamelfall zu sehen.
Rafa
Ich weiß, dass dies eine alte Antwort ist, aber die meisten neueren Microsoft XML-Dateien, die ich gesehen habe, stimmen dieser Formatauswahl nicht zu. Aber dann mag IIS dot.naming so ..
user2246674
4
Wie jeder erwähnt, ist es persönlich, aber ich folge Ihrem Ansatz, da ich mein XML immer mit XMLSchema definiere und XMLSchema diesem Ansatz folgt. w3.org/2001/XMLSchema.xsd . Für mich hat das nichts mit Programmiersprachen zu tun. Wir verwenden XML, weil es ein interoperabler Schnittstellenstandard ist. Programmiersprachen sind nur ein Implementierungsdetail und jede Sprache hat ihre eigene Konvention.
Dan Carter
Meine 2 Cent - ich habe CamelCase und alle Kleinbuchstaben gesehen; selten alle Großbuchstaben (altes HTML), und ich habe Kleinbuchstaben gesehen. Ich kann mich nicht erinnern, jemals camelBack gesehen zu haben. Ich bevorzuge CamelCase oder Kleinbuchstaben. Attribute sehe ich jedoch eher in Kleinbuchstaben.
Kit10
30

XML-Namensregeln

XML-Elemente müssen diesen Namensregeln folgen:

    - 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

Es kann ein beliebiger Name verwendet werden, es sind keine Wörter reserviert (außer XML).

Beste Benennungspraktiken

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

Stile benennen

Für XML-Elemente sind keine Namensstile definiert. Aber hier sind einige häufig verwendete:

    - 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

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

Farhad Maleki
quelle
13

Für mich ist es wie eine Diskussion über den Codestil für eine Programmiersprache: Einige argumentieren für einen Stil, andere verteidigen eine Alternative. Der einzige Konsens, den ich gesehen habe, ist: "Wähle einen Stil und sei konsequent"!

Ich stelle nur fest, dass viele XML-Dialekte nur Kleinbuchstaben verwenden (SVG, Ant, XHTML ...).

Ich erhalte nicht die Regel "Keine Leerzeichen in Attributwerten". Irgendwie sendet es an die Debatte "was in Attribute und was als Text zu setzen?".
Vielleicht sind dies nicht die besten Beispiele, aber es gibt einige bekannte XML-Formate, die Leerzeichen in Attributen verwenden:

  • XHTML, insbesondere Klassenattribute (Sie können zwei oder mehr Klassen einfügen) und natürlich Alt- und Titelattribute.
  • SVG, zum Beispiel mit dem Attribut d des Pfad-Tags.
  • Beide mit Stilattribut ...

Ich verstehe die Argumente gegen die Praxis nicht vollständig (scheint nur für einige Verwendungen zu gelten), aber sie ist zumindest legal und weit verbreitet. Anscheinend mit Nachteilen.

Oh, und Sie brauchen kein Leerzeichen vor dem Schrägstrich mit automatischer Schließung. :-)

PhiLho
quelle
Das Argument gegen Leerzeichen ist, und dies liegt nur daran, dass es speziell in der Frage gestellt wurde, ob der Wert zur Unterstützung des Parsens aufgezählt wird. Nicht viele Sprachen unterstützen Aufzählungen mit Leerzeichen, aber viele von uns, die XML in C / C ++, C # verwenden , oder Java (Sprachen, die ich verwende, aber nicht darauf beschränkt bin) ordnet Attributwerte häufig Aufzählungen zu. Wir können dann einfach ein Literal in eine Karte / ein Wörterbuch analysieren (oder einfacher im Fall von Java und C #). Letztendlich stimme ich zu, dass es eher eine Frage der Inbrunst als ein Standard zu sein scheint. Ich folge einfach der Philosophie "wenn in Rom".
Kit10
12

Ich bevorzuge TitleCase für Elementnamen und camelCase für Attribute. Keine Leerzeichen für beide.

<AnElement anAttribute="Some Value"/>

Nebenbei habe ich schnell nach Best Practices in XML gesucht und mir diesen ziemlich interessanten Link ausgedacht: XML-Schemas: Best Practices .

Raithlin
quelle
8

Ich würde eher Klein- oder Kamelbuchstaben bevorzugen, und da Attribute normalerweise Datenwerte widerspiegeln sollten - nicht Inhalte -, würde ich mich an einen Wert halten, der als Variablenname für jede Plattform / Sprache verwendet werden könnte, dh Leerzeichen, aber die andere Zwei Formen könnten in Ordnung sein

Annakata
quelle
+1 für das Nachdenken über Variablen- / Funktionsnamen
Ates Goral
@downvoter: Bitte tun Sie mir die Höflichkeit, sich selbst zu erklären.
Annakata
8

Es ist subjektiv, aber wenn ein Element-Tag zwei Wörter enthält, kann die Lesbarkeit verbessert werden, indem ein Unterstrich zwischen Wörtern (z. B. <my_tag>) hinzugefügt wird, anstatt kein Trennzeichen zu verwenden. Referenz: http://www.w3schools.com/xml/xml_elements.asp . Laut w3schools wäre die Antwort also:

<my_tag attribute="some value">

Der Wert muss keinen Unterstrich oder Trennzeichen verwenden, da Sie Leerzeichen in Attributwerten, jedoch nicht in Element-Tag-Namen zulassen.

Alistair
quelle
2
+1, weil Sie eine Referenz zitiert haben, die einen Abschnitt "Best Naming Practices" enthält (nicht nur Meinung)
Fuhrmanator
2
@Fuhrmanator Diese "Referenz" ist selbst eine Meinung, obwohl sie eine Rechtfertigung liefert. Es ist kein Standard mit allen Mitteln - und (obwohl es viel weniger schrecklich ist , als es war) ich nicht empfehlen oder Verwendung w3schools als „Referenz“. Es gibt viel originellere und umfassendere Quellen.
user2864740
@ user2864740 wie? Sie haben Ihren Kommentar beendet, bevor Sie die originelleren und umfassenderen Quellen angegeben haben. Der Punkt meiner +1 war, dass das OP nach Standards fragte, aber die meisten Antworten Meinungen abgeben.
Fuhrmanator
Diese Antwort liefert nur Meinungen , der Link zu w3schools ist irrelevant und entfernt solche nicht. Bezüglich der Standards siehe Implementierungsregeln (wie in RSS ) oder Organisationsregeln (wie in OAGi ) - auf einer bestimmten Ebene wird der "Standard" nur auf einer bestimmten Anwendungs- / Geschäftsebene angewendet. Der Link zu w3schools enthält nur in einem sehr vagen Sinne eine eigene Meinung / Best Practice (er enthält einige Tipps und sagt: "Hier ist, wie es gemacht wird").
user2864740
Das heißt, nur das Einfügen eines Links macht eine Antwort (oder die verknüpfte Ressource) nicht maßgeblich.
user2864740
7

Viele dokumentenzentrierte XML-Dialekte verwenden lateinisches Kleinbuchstaben und Bindestrich. Ich neige dazu, damit zu gehen.

Codegeneratoren, die XML direkt auf Programmiersprachenkennungen abbilden, sind spröde und sollten (mit Ausnahme der naiven Objektserialisierung wie XAML) in tragbaren Dokumentformaten vermieden werden. Für eine optimale Wiederverwendung und Langlebigkeit der Informationen sollte das XML versuchen, mit der Domäne und nicht mit der Implementierung übereinzustimmen.

Pete Kirkham
quelle
3

rss ist wahrscheinlich eines der am häufigsten verwendeten XML-Schemas der Welt und es ist camelCased.

Spezifikation ist hier: http://cyber.law.harvard.edu/rss/rss.html

Zugegeben, es enthält keine Knotenattribute im Schema, aber alle Knotenelementnamen sind camelCased. Beispielsweise:

lastBuildDate ManagingEditor pubDate

evermeire
quelle
2

Normalerweise richte ich die XML-Namenskonvention mit der gleichen Namenskonvention in anderen Teilen des Codes aus. Der Grund dafür ist, dass beim Laden des XML in Object die Attribute und Elementnamen als dieselbe Namenskonvention bezeichnet werden können, die derzeit im Projekt verwendet wird.

Wenn Ihr Javascript beispielsweise camelCase verwendet, verwendet Ihr XML auch camelCase.

Micksatana
quelle
1
Dies ist zwar nützlich für die Intraprojektarbeit, bricht jedoch schnell zusammen, wenn XML als
sprachunabhängiges
Die Komponenten in Ihrem Projekt sind also konsistent, aber wie gestalten Sie den Anfangsstandard, dem das Projekt entspricht?
Gqqnbig
2

Microsoft unterstützt zwei Konventionen:

  1. Für die Konfiguration verwendet Microsoft camelCase . Sehen Sie sich die Visual Studio-Konfigurationsdatei an. Für VS2013 wird es gespeichert in:

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

Beispiel:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Microsoft verwendet UpperCase auch für seine XAML. Ich denke, es ist eine Unterscheidung von HTML (das Kleinbuchstaben verwendet).

Beispiel:

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

Es gibt keine explizite Empfehlung. Aufgrund einer anderen Empfehlung von W3C, der für XHTML , habe ich mich für Kleinbuchstaben entschieden:

4.2. Element- und Attributnamen müssen in Kleinbuchstaben angegeben werden

XHTML-Dokumente müssen für alle HTML-Element- und Attributnamen Kleinbuchstaben verwenden. Dieser Unterschied ist erforderlich, da bei XML zwischen Groß- und Kleinschreibung unterschieden wird, z. B. <li> und <LI> unterschiedliche Tags sind.

Diego Menta
quelle
0

XML-Namensregeln

XML-Elemente müssen diesen Namensregeln folgen:

  • Namen können Buchstaben, Zahlen und andere Zeichen enthalten
  • Namen dürfen nicht mit einer Zahl oder einem Interpunktionszeichen beginnen
  • Namen dürfen nicht mit den Buchstaben xml (oder XML oder Xml usw.) beginnen.
  • Namen dürfen keine Leerzeichen enthalten. Es können beliebige Namen verwendet werden, es sind keine Wörter reserviert.

Quelle: W3 School

Petermeissner
quelle
Eine vage Beschreibung, welche Arten von Namen möglich sind, gibt wenig Aufschluss darüber, welche der möglichen Namen verwendet werden sollten.
Samuel Edwin Ward
Obwohl sie die Grundlinie dessen definieren, was möglich ist - richtig?
Petermeissner
10
Sicher, aber das ist so, als würde jemand fragen: "Wie soll ich mein Kind nennen, damit es in der Schule nicht ausgewählt wird?" Und Sie antworteten: "Nun, hier ist eine Liste von Geräuschen, die Menschen produzieren können."
Samuel Edwin Ward
Ja, aber das war eigentlich nicht die Frage, oder? Denn die Fragen lauteten: "Gibt es eine Standard-Namenskonvention für XML-Elemente?" und "Gibt es de facto oder anderweitig einen Standard für XML-Dokumente?" Das ist also eine Antwort, oder? Eine, die die Frage beantwortet und nicht nur einen gemeinsamen Interpretationsstrom der Frage.
Petermeissner
3
Es ist nur eine Antwort, wenn Sie den Rest der Frage nach diesen beiden Sätzen ignorieren. Sie haben nicht versucht zu antworten, was das Beste oder was besser ist.
Samuel Edwin Ward
0

Ich habe viel nach einem guten Ansatz gesucht, auch diesen Thread und einige andere gelesen und würde für die Verwendung von Bindestrichen stimmen .

Sie werden häufig in ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ) verwendet, das in vielen Quellcodes zu finden ist und daher häufig vorkommt. Wie hier bereits erwähnt, sind sie sicherlich erlaubt, was auch hier erklärt wird: Verwenden von - in XML-Elementnamen

Auch als Nebeneffekt: Wenn Sie HTML in Kombination mit CSS schreiben, haben Sie häufig Klassen, deren Namen standardmäßig auch Bindestriche als Trennzeichen verwenden. Wenn Sie nun benutzerdefinierte Tags haben, die CSS-Klassen verwenden, oder benutzerdefinierte Attribute für Tags, die CSS-Klassen verwenden, dann etwas wie:

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

ist konsistenter und liest sich - meiner bescheidenen Meinung nach - viel schöner als:

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

Eisfeuer
quelle