web-dev-qa-db-fra.com

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

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 mieux

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

Je soupçonne que les valeurs les plus courantes seraient camelCased - c'est-à-dire.

<myTag someAttribute="someValue"/>

En particulier, les espaces causent 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 des énumérations avec des espaces (exigeant une correspondance entre les deux).

42
Marc Gravell

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

25
Farhad Maleki

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 ne reçois pas la règle "pas d'espaces dans les valeurs d'attributs". D'une certaine manière, cela envoie au débat "quoi mettre dans les attributs et quoi mettre comme 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 ou plusieurs classes) 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 bien les arguments contre la pratique (semble ne s'appliquer qu'à certains usages) 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. :-)

13
PhiLho

Je préfère TitleCase pour les noms d'éléments et camelCase pour les attributs. Pas de place non plus.

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

12
Raithlin

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 d'utiliser aucun séparateur. Référence: http://www.w3schools.com/xml/xml_elements.asp . Ainsi, selon w3schools, la réponse serait:

<my_tag attribute="some value">

Il n'est pas nécessaire que la valeur utilise un trait de soulignement ou un séparateur, car vous disposez d'espaces dans les valeurs d'attribut mais pas dans les noms de balises d'élément.

8
alistair

J'aurais tendance à privilégier les balises en 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 quelle que soit la plate-forme/langue qui pourrait être intéressée, c'est-à-dire éviter les espaces mais les deux autres formes pourraient être ok

8
annakata

De nombreux dialectes XML centrés sur le document utilisent le latin basique et le tiret. J'ai tendance à aller avec ç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 longévité des informations, le XML doit essayer de faire correspondre le domaine, pas l'implémentation.

7
Pete Kirkham

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

La spécification 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éments de nœud sont camelCased. Par exemple:

lastBuildDate gérantEditor pubDate

3
evermeire

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 en est que lorsque je charge le XML dans un objet, ses attributs et noms d'élément peuvent être appelés 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.

2
micksatana

Microsoft adopte deux conventions:

  1. Pour 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 pperCase 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>
2
Jeson Martajaya

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.

1
Diego Menta

J'ai beaucoup cherché une bonne approche, lisant également ce fil et quelques autres et je voterais pour en utilisant des 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: tilisation de - dans le nom d'élément XML

Également comme avantage secondaire: lorsque vous écrivez du HTML en combinaison avec du CSS, vous avez souvent des classes dont les noms utilisent également des tirets 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 - beaucoup plus agréable que:

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

0
IceFire

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 W

0
petermeissner