web-dev-qa-db-fra.com

Conventions de cas sur les noms d'élément?

Existe-t-il des recommandations formelles sur la casse des éléments en XML?

Je sais que XHTML utilise des noms d'éléments en minuscules (par opposition à HTML qui utilise canoniquement les majuscules mais n'est pas sensible à la casse.)

Mais je parle de XML pour le contenu générique.

minuscule:

<customer> 
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>

affaire de chameau:

<customer> 
   <accountNumber>619</accountNumber>
   <name>Shelby Lake</name>
</customer>

PascalCase:

<Customer> 
   <AccountNumber>619</AccountNumber>
   <Name>Shelby Lake</Name>
</Customer>

MAJUSCULE:

<CUSTOMER> 
   <ACCOUNTNUMBER>619</ACCOUNTNUMBER>
   <NAME>Shelby Lake</NAME>
</CUSTOMER>

Note: Je recherche des directives citées plutôt que des opinions. Mais l'avis avec le plus de votes peut être considéré comme une ligne directrice.

117
Ian Boyd

La plupart des normes XML provenant du W3C ont tendance à utiliser des minuscules avec des tirets.

Il existe une distinction philosophique entre voir XML comme un format pour les documents neutres de plate-forme, que les normes W3C tentent d'encourager, et les langages tels que XAML qui voient XML comme une sérialisation d'un graphique d'objet spécifique à une plate-forme.

Si vous n'utilisez pas XML en tant que format de document neutre pour la plate-forme, mais en tant que sérialisation spécifique à l'application, vous pourriez tout aussi bien vous épargner de la peine et avoir une correspondance 1: 1 entre les noms XML et les noms spécifiques à la plate-forme. Mais presque tout autre format de graphique d'objet est meilleur que XML à cet effet.

Si vous l'êtes, vous voudrez peut-être vous adapter à XHTML, XSLT, SVG, XProc, RelaxNG et le reste.

87
Pete Kirkham

Ce n'est pas important, mais j'ai toujours aimé PascalCase pour les éléments et camelCase pour les attributs:

<Root>
  <ParentElement attributeId="1">
    <ChildElement attributeName="foo" />
  </ParentElement>
</Root>
62
Metro Smurf

Il n'y a pas de recommandation formelle.

Étant donné que XML a été conçu dans le double but de tenir des documents et échanger des informations entre des systèmes disparates, il a été conçu de manière à pouvoir faire correspondre le applications l'utilisant.

Donc .Net XML a tendance à utiliser ProperCasing (témoin XAML), tandis que d'autres XML utiliseront camelCasing, python_conventions, dot.naming et même COBOL-CONVENTIONS. Le W3C semble aimer les minuscules avec des tirets-un peu (par exemple XSLT) ou simplement des mots de passe écrasés ensemble (par exemple MathML).

J'aime tous les minuscules et aucun trait de soulignement, car cela signifie moins d'utilisation de la touche [Maj], et mes doigts sont un peu paresseux. :)

30
lavinio

Pour ajouter à la réponse de Metro Smurf.

Le modèle national d'échange d'informations (NIEM: http://en.wikipedia.org/wiki/National_Information_Exchange_Model ) dit d'utiliser:

  • CamelCase supérieur (PascalCase) pour les éléments.
  • (inférieur) camelCase pour les attributs.

Le NIEM constitue une bonne option lorsque vous cherchez à vous conformer à une norme.

23
Koert van Kleef

Voir Spécification technique des règles de dénomination et de conception XML UN/CEFACT version 3. page 23 pour des exemples de règles utilisées dans plusieurs normes.

Particularités (à partir de la page 23 de la version 3.0 du 17 décembre 2009):

  • LowerCamelCase (LCC) DOIT être utilisé pour nommer les attributs.
  • UpperCamelCase (UCC) DOIT être utilisé pour nommer les éléments et les types.
  • Les noms d'élément, d'attribut et de type DOIVENT être au singulier sauf si le concept lui-même est pluriel.

( autre lien, site suédois )

13
oluies

Pour développer mon commentaire ci-dessus : l'utilisation de 'minuscules avec des tirets' a quelques problèmes dans XSLT. Plus précisément, il est facile de confondre un nœud appelé, par exemple, `` année à partir de l'âge '' avec une formule `` année à l'âge '' (par exemple, soustraire l'âge de l'année).

Comme le souligne @KarlKieninger, ce n'est qu'un problème au niveau humain et non pour l'analyseur XSLT. Cependant, comme cela ne produira souvent pas d'erreur , l'utilisation de "minuscules avec des tirets" comme standard est source de problèmes, à mon humble avis.

Quelques exemples pertinents:

<a>1</a><b>1</b>
<xsl:value-of select="a+b"/>
outputs 2, as expected

<a>1</a><b>1</b>
<xsl:value-of select="a-b"/>
DOES NOT ERROR, BUT OUTPUTS NOTHING AT ALL

Dans le code ci-dessus, vous devez mettre au moins un espace avant un opérateur de soustraction, mais il n'y a pas une telle exigence pour un opérateur d'addition.

<a-b>1</a-b><c>1</c>
<xsl:value-of select="a-b -c"/>
outputs 0, as expected

Mais notez à quel point ce qui est déroutant est de lire!

<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a-b"/>
outputs 3

<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a -b"/>
outputs -1

La présence d'un seul espace modifie la sortie ci-dessus, mais aucune des variantes n'est une erreur.

12
Richard Kennard

guide de style de Google recommande (peut-être même des mandats) camelCase pour tous les noms d'élément, ainsi que les noms d'attribut.

9
kencordero

L'intention d'origine pour la casse XML était en minuscules avec des tirets. Il est sensible à la casse et ne vous oblige pas à suivre cette convention - vous pouvez donc faire ce que vous voulez. Je n'ai pas de citations, désolé.

4
Adam Luter

Je ne dirais pas que HTML utilise "en canon" les majuscules. Je pense qu'à l'origine, les majuscules étaient utilisées pour séparer visuellement le HTML du contenu plus facilement. Avec la coloration syntaxique de nos jours, ce n'est tout simplement pas nécessaire.

Je vire vers les minuscules, avec des tirets si nécessaire (plus rapide à taper aussi). Le mixage de cas en XML me semble juste mal.

1
DisgruntledGoat