Existe-t-il une convention de dénomination standard pour les éléments XML? [fermé]

96

Existe-t-il une norme, de facto ou autre, pour les documents XML? Par exemple, quelle est la "meilleure" façon d'écrire une balise?

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

De même si j'ai une valeur énumérée pour un attribut qui est meilleur

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
puissance
la source
2
Techniquement parlant, vous pouvez également utiliser <my.tag />. Peut-être pas une bonne idée dans certains contextes ...
PhiLho
1
Duplicata de stackoverflow.com/questions/1074447/…
Igor Brejc
Il existe plusieurs "standards" trouvés en ligne ..
user2864740

Réponses:

46

Je soupçonne que les valeurs les plus courantes seraient camelCased - ie

<myTag someAttribute="someValue"/>

En particulier, les espaces provoquent quelques problèmes s'ils sont mélangés avec des générateurs de code (c'est-à-dire pour [dé] sérialiser xml en objets), car peu de langages autorisent les énumérations avec des espaces (exigeant un mappage entre les deux).

Marc Gravell
la source
35
Hm ... meilleure réponse ... Je pense que c'est une bonne réponse, mais ce n'est qu'une opinion. Avoir une sorte de référence serait bien.
Hamish Grubijan
4
Je ne suis pas d'accord, je n'ai pas l'habitude de voir du XML avec un étui camel.
Rafa
Je sais que c'est une vieille réponse, mais la plupart des nouveaux Microsoft XML que j'ai vus ont tendance à ne pas être d'accord avec ce choix de format. Mais alors IIS aime dot.naming so ..
user2246674
4
Comme tout le monde le mentionne, c'est personnel, mais je suis votre approche car je définis toujours mon XML en utilisant XMLSchema, et XMLSchema suit cette approche. w3.org/2001/XMLSchema.xsd . Pour moi, cela n'a rien à voir avec les langages de programmation. Nous utilisons XML car il s'agit d'un standard d'interface interopérable. Les langages de programmation ne sont qu'un détail d'implémentation et chaque langage a sa propre convention.
dan carter
Mes 2 cents - j'ai vu CamelCase, et tout en minuscules; rarement tout en majuscules (ancien HTML), et j'ai vu des minuscules. Je ne me souviens pas avoir jamais vu camelBack. Je préfère CamelCase ou minuscule. Attributs, cependant, j'ai tendance à voir tous les minuscules.
Kit10
30

Règles de dénomination XML

Les éléments XML doivent suivre ces règles de dénomination:

    - 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

N'importe quel nom peut être utilisé, aucun mot n'est réservé (sauf xml).

Meilleures pratiques de dénomination

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

Styles de dénomination

Aucun style de dénomination n'est défini pour les éléments XML. Mais en voici quelques-uns couramment utilisés:

    - 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

référence http://www.w3schools.com/xml/xml_elements.asp

Farhad Maleki
la source
13

Pour moi, c'est comme discuter du style de code pour un langage de programmation: certains plaideront pour un style, d'autres défendront une alternative. Le seul consensus que j'ai vu est: "Choisissez un style et soyez cohérent"!

Je note juste que beaucoup de dialectes XML utilisent simplement des noms en minuscules (SVG, Ant, XHTML ...).

Je n'obtiens pas la règle "aucun espace dans les valeurs d'attributs". D'une manière ou d'une autre, cela envoie au débat "que mettre en attributs et que mettre en texte?".
Ce ne sont peut-être pas les meilleurs exemples, mais il existe des formats XML bien connus utilisant des espaces dans les attributs:

  • XHTML, en particulier l'attribut de classe (vous pouvez mettre deux classes ou plus) et bien sûr les attributs alt et title.
  • SVG, avec par exemple l'attribut d de la balise path.
  • Les deux avec l'attribut style ...

Je ne comprends pas entièrement les arguments contre la pratique (semblent s'appliquer à certains usages seulement) mais c'est légal au moins, et assez largement utilisé. Avec des inconvénients, apparemment.

Oh, et vous n'avez pas besoin d'espace avant la barre oblique à fermeture automatique. :-)

PhiLho
la source
L'argument contre les espaces est, et c'est uniquement parce qu'il a été posé spécifiquement dans la question, si la valeur est énumérée alors pour prendre en charge l'analyse, peu de langages prennent en charge les énumérations avec des espaces, mais beaucoup d'entre nous qui utilisent XML en C / C ++, C # , ou Java (les langages que j'utilise, mais sans s'y limiter) mapperont souvent les valeurs d'attribut aux énumérations. Nous pouvons alors simplement analyser un littéral en une carte / dictionnaire (ou plus facilement dans le cas de Java et C #). En fin de compte, je conviens que cela semble être une question de ferveur plutôt qu'une norme. Je suis simplement la philosophie «quand à Rome».
Kit10
12

Je préfère TitleCase pour les noms d'élément et camelCase pour les attributs. Pas de place pour l'un ou l'autre.

<AnElement anAttribute="Some Value"/>

En passant, j'ai fait une recherche rapide des meilleures pratiques en XML et j'ai trouvé ce lien plutôt intéressant: schémas XML: meilleures pratiques .

Raithlin
la source
8

J'aurais tendance à favoriser les balises minuscules ou camelcase et comme les attributs devraient généralement refléter les valeurs des données - pas le contenu - je m'en tiendrai à une valeur qui pourrait être utilisée comme nom de variable dans n'importe quelle plate-forme / langue pourrait être intéressée, c'est-à-dire éviter les espaces mais l'autre deux formes pourraient convenir

Annakata
la source
+1 pour penser aux noms de variables / fonctions
Ates Goral
@downvoter: faites-moi la courtoisie de vous expliquer.
annakata
8

C'est subjectif, mais s'il y a deux mots dans une balise d'élément, la lisibilité peut être améliorée en ajoutant un trait de soulignement entre les mots (par exemple <my_tag>) au lieu de n'utiliser aucun séparateur. Référence: http://www.w3schools.com/xml/xml_elements.asp . Donc, selon w3schools, la réponse serait:

<my_tag attribute="some value">

La valeur n'a pas besoin d'utiliser de trait de soulignement ou de séparateur, car vous êtes autorisé à utiliser des espaces dans les valeurs d'attribut mais pas dans les noms de balises d'élément.

alistair
la source
2
+1 parce que vous avez cité une référence qui contient une section «Meilleures pratiques de dénomination» (pas seulement une opinion)
Fuhrmanator
2
@Fuhrmanator Cette "référence" est elle-même une opinion, même si elle fournit une justification. Il est pas une norme par tous les moyens - et (même si elle est beaucoup moins terrible que c'était) je ne pas recommander comme une « référence » ou W3Schools d'utilisation. Il existe des sources beaucoup plus originales et complètes.
user2864740
@ user2864740 comme? Vous avez terminé votre commentaire avant de fournir les sources les plus originales et complètes. Le point de mon +1 était que le PO demandait des normes, mais la plupart des réponses fournissent des opinions.
Fuhrmanator
Cette réponse ne fournit que des opinions , le lien vers w3schools n'est pas pertinent et ne supprime pas ces derniers. En ce qui concerne les normes, voir les règles de mise en œuvre (comme dans RSS ) ou les règles d'organisation (comme dans OAGi ) - à un certain niveau, la «norme» n'est appliquée qu'à un niveau d'application / métier particulier. Le lien w3schools ne fournit que sa propre opinion / meilleure pratique dans un sens très vague (il fournit quelques astuces et dit "voici comment procéder").
user2864740
Autrement dit, le simple fait d'inclure un lien ne rend pas une réponse (ou la ressource liée) faisant autorité.
user2864740
7

De nombreux dialectes XML centrés sur les documents utilisent le latin de base en minuscules et le tiret. J'ai tendance à accepter ça.

Les générateurs de code qui mappent XML directement aux identificateurs de langage de programmation sont fragiles et (à l'exception de la sérialisation d'objets naïfs, tels que XAML) doivent être évités dans les formats de documents portables; pour une meilleure réutilisation et une meilleure longévité des informations, le XML doit essayer de faire correspondre le domaine, pas l'implémentation.

Pete Kirkham
la source
3

rss est probablement l'un des schémas xml les plus consommés au monde et il est camelCased.

Spec est ici: http://cyber.law.harvard.edu/rss/rss.html

Certes, il n'a aucun attribut de nœud dans le schéma, mais tous les noms d'élément de nœud sont camelCased. Par exemple:

lastBuildDate manageEditor pubDate

Evermeire
la source
2

J'aligne normalement la convention de dénomination XML avec la même convention de dénomination dans d'autres parties du code. La raison est que lorsque je charge le XML dans Object, ses attributs et noms d'élément peuvent être référencés comme la même convention de dénomination actuellement utilisée dans le projet.

Par exemple, si votre javascript utilise camelCase, votre XML utilise également camelCase.

micksatana
la source
1
Bien qu'utile pour le travail intra-projet, cela se décompose rapidement lorsque XML est utilisé comme format d'échange
indépendant de la
Les composants de votre projet sont donc cohérents, mais comment concevez-vous la norme initiale à laquelle le projet se conforme?
Gqqnbig
2

Microsoft adopte deux conventions:

  1. Pour la configuration , Microsoft utilise camelCase . Regardez le fichier de configuration de Visual Studio. Pour VS2013, il est stocké dans:

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

Exemple:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Microsoft utilise également UpperCase pour leur XAML. Je suppose que c'est pour se différencier du HTML (qui utilise des minuscules).

Exemple:

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

Il n'y a pas de recommandation explicite. Sur la base d'une autre recommandation du W3C, celle pour XHTML , j'ai opté pour les minuscules:

4.2. Les noms d'élément et d'attribut doivent être en minuscules

Les documents XHTML doivent utiliser des minuscules pour tous les noms d'éléments et d'attributs HTML. Cette différence est nécessaire car XML est sensible à la casse, par exemple <li> et <LI> sont des balises différentes.

Diego Menta
la source
0

Règles de dénomination XML

Les éléments XML doivent suivre ces règles de dénomination:

  • Les noms peuvent contenir des lettres, des chiffres et d'autres caractères
  • Les noms ne peuvent pas commencer par un chiffre ou un caractère de ponctuation
  • Les noms ne peuvent pas commencer par les lettres xml (ou XML, ou Xml, etc.)
  • Les noms ne peuvent pas contenir d'espaces N'importe quel nom peut être utilisé, aucun mot n'est réservé.

Source: École W3

Petermeissner
la source
Une description vague des types de noms possibles ne donne guère d'indications sur les noms possibles à utiliser.
Samuel Edwin Ward
Bien qu'ils définissent la base de ce qui est possible - n'est-ce pas?
petermeissner
10
Bien sûr, mais c'est comme si quelqu'un demandait «comment dois-je nommer mon enfant pour qu'il ne se fasse pas prendre à l'école» et que vous répondiez «eh bien, voici une liste de sons que les humains sont capables de produire».
Samuel Edwin Ward
Ouais, mais htat n'était pas vraiment la question, non? Parce que les questions étaient: "Existe-t-il une convention de dénomination standard pour les éléments XML?" et "Existe-t-il une norme, de facto ou autre, pour les documents XML?" donc c'est une réponse non? Celui qui répond à la question et pas seulement un courant commun d'interprétation de la question.
petermeissner
3
Ce n'est une réponse que si vous ignorez le reste de la question après ces deux phrases. Vous n'avez pas tenté de répondre "qui est le" meilleur "" ou "qui est le meilleur".
Samuel Edwin Ward
0

J'ai beaucoup cherché une bonne approche, j'ai également lu ce fil et quelques autres et je voterais pour l' utilisation de tirets .

Ils sont largement utilisés dans ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ) qui peuvent être vus dans de nombreux codes sources et sont donc courants. Comme déjà souligné ici, ils sont certainement autorisés, ce qui est également expliqué ici: Utilisation de - dans le nom d'élément XML

Autre avantage supplémentaire: lorsque vous écrivez du HTML en combinaison avec CSS, vous avez souvent des classes dont les noms utilisent également des traits d'union comme séparateur par défaut. Maintenant, si vous avez des balises personnalisées qui utilisent des classes CSS ou des attributs personnalisés pour les balises qui utilisent des classes CSS, alors quelque chose comme:

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

est plus cohérent et se lit - à mon humble avis - bien mieux que:

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

Feu de glace
la source