¿Existe una convención de nomenclatura estándar para los elementos XML? [cerrado]

96

¿Existe algún estándar, de facto o de otro tipo, para los documentos XML? Por ejemplo, ¿cuál es la "mejor" forma de escribir una etiqueta?

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

Del mismo modo, si tengo un valor enumerado para un atributo que es mejor

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
tpower
fuente
2
Técnicamente hablando, también puede usar <my.tag />. Puede que no sea una buena idea en algunos contextos ...
PhiLho
1
Duplicado de stackoverflow.com/questions/1074447/…
Igor Brejc
Hay varios "estándares" encontrados en línea ..
user2864740

Respuestas:

46

Sospecho que los valores más comunes serían camelCased, es decir

<myTag someAttribute="someValue"/>

En particular, los espacios causan algunos fallos si se mezclan con generadores de código (es decir, para [des] serializar xml a objetos), ya que no muchos lenguajes permiten enumeraciones con espacios (exigiendo un mapeo entre los dos).

Marc Gravell
fuente
35
Hm ... mejor respuesta ... creo que es una respuesta decente, pero es solo una opinión. Sería bueno tener algún tipo de referencia.
Hamish Grubijan
4
No estoy de acuerdo, no estoy acostumbrado a ver XML con caja camel.
Rafa
Sé que esta es una respuesta antigua, pero la mayoría de los XML de Microsoft más nuevos que he visto tienden a no estar de acuerdo con esta elección de formato. Pero luego a IIS le gusta dot.naming así que ...
user2246674
4
Como todos mencionan, es personal, pero sigo su enfoque, ya que siempre defino mi XML usando XMLSchema, y ​​XMLSchema sigue este enfoque. w3.org/2001/XMLSchema.xsd . Para mí no tiene nada que ver con los lenguajes de programación. Usamos XML porque es un estándar de interfaz interoperable. Los lenguajes de programación son solo un detalle de implementación y cada lenguaje tiene su propia convención.
dan carter
Mis 2 centavos - He visto CamelCase, y todo en minúsculas; rara vez todo en mayúsculas (HTML antiguo), y he visto minúsculas. No recuerdo haber visto nunca camelBack. Prefiero CamelCase o minúsculas. Atributos, sin embargo, tiendo a verlos todos en minúsculas.
Kit10
30

Reglas de nombres XML

Los elementos XML deben seguir estas reglas de nomenclatura:

    - 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

Se puede usar cualquier nombre, no se reservan palabras (excepto xml).

Mejores prácticas de nomenclatura

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

Estilos de nombres

No hay estilos de nomenclatura definidos para elementos XML. Pero aquí hay algunos de uso común:

    - 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

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

Farhad Maleki
fuente
13

Para mí, es como discutir el estilo de código de un lenguaje de programación: algunos defenderán un estilo, otros defenderán una alternativa. El único consenso que vi es: "¡Elija un estilo y sea coherente"!

Solo noto que muchos dialectos XML solo usan nombres en minúsculas (SVG, Ant, XHTML ...).

No obtengo la regla "sin espacios en los valores de los atributos". De alguna manera, envía al debate "¿qué poner en atributos y qué poner como texto?".
Quizás estos no sean los mejores ejemplos, pero hay algunos formatos XML bien conocidos que usan espacios en los atributos:

  • XHTML, particularmente atributo de clase (puede poner dos o más clases) y por supuesto atributos alt y title.
  • SVG, con, por ejemplo, el atributo d de la etiqueta de ruta.
  • Ambos con atributo de estilo ...

No entiendo completamente los argumentos en contra de la práctica (parece aplicarse solo a algunos usos) pero es legal al menos, y se usa bastante ampliamente. Con inconvenientes, aparentemente.

Ah, y no necesitas un espacio antes de la barra de cierre automático. :-)

PhiLho
fuente
El argumento en contra de los espacios es, y esto es solo porque se preguntó específicamente en la pregunta, si el valor se enumera para admitir el análisis sintáctico, no muchos lenguajes admiten enumeraciones con espacios, sin embargo, muchos de nosotros que usamos XML en C / C ++, C # , o Java (lenguajes que uso, pero no limitado a) a menudo asignan valores de atributo a enumeraciones. Luego, podemos simplemente analizar un literal en un mapa / diccionario (o más fácil en el caso de Java y C #). En última instancia, estoy de acuerdo en que parece ser una cuestión de fervor más que una norma. Simplemente sigo la filosofía de "cuando en Roma".
Kit10
12

Yo prefiero TitleCase para los nombres de los elementos y camelCase para los atributos. No hay espacios para ninguno.

<AnElement anAttribute="Some Value"/>

Aparte, hice una búsqueda rápida de Mejores prácticas en XML y encontré este enlace bastante interesante: Esquemas XML: Mejores prácticas .

Raithlin
fuente
8

Yo tendería a favorecer las etiquetas en minúsculas o en mayúsculas y, dado que los atributos normalmente deberían reflejar valores de datos, no contenido, me ceñiría a un valor que podría usarse como nombre de variable en cualquier plataforma / idioma que pueda estar interesado, es decir, evitar espacios pero el otro dos formas podrían estar bien

Annakata
fuente
+1 por pensar en nombres de variables / funciones
Ates Goral
@downvoter: por favor, hazme la cortesía de explicarte.
annakata
8

Es subjetivo, pero si hay dos palabras en una etiqueta de elemento, la legibilidad se puede mejorar agregando un guión bajo entre las palabras (p <my_tag>. Ej. ) En lugar de usar ningún separador. Referencia: http://www.w3schools.com/xml/xml_elements.asp . Entonces, de acuerdo con w3schools, la respuesta sería:

<my_tag attribute="some value">

El valor no necesita usar un guión bajo o un separador, ya que se le permiten espacios en los valores de los atributos, pero no en los nombres de las etiquetas de los elementos.

alistair
fuente
2
+1 porque citó una referencia que tiene una sección de "Mejores prácticas de nomenclatura" (no solo una opinión)
Fuhrmanator
2
@Fuhrmanator Esa "referencia" es en sí misma una opinión, aunque proporciona alguna justificación. No es un estándar de ninguna manera - y (aunque es mucho menos terrible de lo que era) no recomiendo ni uso w3schools como "referencia". Hay fuentes mucho más originales y completas.
user2864740
@ user2864740 como? Terminó su comentario antes de proporcionar las fuentes más originales y completas. El punto de mi +1 fue que el OP pidió estándares, pero la mayoría de las respuestas brindan opiniones.
Fuhrmanator
Esta respuesta solo proporciona opiniones , el enlace a w3schools es irrelevante y no las elimina. En cuanto a los estándares, consulte las reglas de implementación (como en RSS ) o las reglas de la organización (como en OAGi ); en algún nivel, el "estándar" se aplica solo a un nivel de aplicación / negocio en particular. El enlace de w3schools solo proporciona su propia opinión / mejores prácticas en un sentido muy vago (proporciona algunos consejos y dice "aquí hay algunas formas de hacerlo").
user2864740
Es decir, el simple hecho de incluir un enlace no hace que una respuesta (o el recurso enlazado) tenga autoridad.
user2864740
7

Muchos dialectos XML centrados en documentos utilizan el latín básico en minúsculas y el guión. Tiendo a ir con eso.

Los generadores de código que mapean XML directamente a identificadores de lenguaje de programación son frágiles y (con la excepción de la serialización de objetos ingenuos, como XAML) deben evitarse en formatos de documentos portátiles; para una mejor reutilización y longevidad de la información, el XML debe intentar coincidir con el dominio, no con la implementación.

Pete Kirkham
fuente
3

rss es probablemente uno de los esquemas XML más consumidos del mundo y está basado en camello.

Spec está aquí: http://cyber.law.harvard.edu/rss/rss.html

Por supuesto, no tiene atributos de nodo en el esquema, pero todos los nombres de elementos de nodo están basados ​​en camello. Por ejemplo:

lastBuildDate manageEditor pubDate

siempre
fuente
2

Normalmente alineo la convención de nomenclatura XML con la misma convención de nomenclatura en otras partes del código. La razón es que cuando cargo el XML en Object, sus atributos y nombres de elementos se pueden referir como la misma convención de nomenclatura que se usa actualmente en el proyecto.

Por ejemplo, si su javascript usa camelCase entonces su XML usa camelCase también.

micksatana
fuente
1
Si bien es útil para el trabajo dentro del proyecto, esto se rompe rápidamente cuando se usa XML como formato de intercambio
independiente del
Entonces, los componentes de su proyecto son consistentes, pero ¿cómo se diseña el estándar inicial al que se ajusta el proyecto?
Gqqnbig
2

Microsoft adopta dos convenciones:

  1. Para la configuración , Microsoft usa camelCase . Mire el archivo de configuración de Visual Studio. Para VS2013, se almacena en:

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

Ejemplo:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Microsoft también usa UpperCase para su XAML. Supongo que es para diferenciarlo de HTML (que usa minúsculas).

Ejemplo:

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

No hay ninguna recomendación explícita. Basado en otra recomendación del W3C, la de XHTML , he optado por minúsculas:

4.2. Los nombres de los elementos y atributos deben estar en minúsculas

Los documentos XHTML deben usar minúsculas para todos los nombres de atributos y elementos HTML. Esta diferencia es necesaria porque XML distingue entre mayúsculas y minúsculas, por ejemplo, <li> y <LI> son etiquetas diferentes.

Diego Menta
fuente
0

Reglas de nombres XML

Los elementos XML deben seguir estas reglas de nomenclatura:

  • Los nombres pueden contener letras, números y otros caracteres
  • Los nombres no pueden comenzar con un número o un carácter de puntuación
  • Los nombres no pueden comenzar con las letras xml (o XML, o Xml, etc.)
  • Los nombres no pueden contener espacios Se puede utilizar cualquier nombre, no se reservan palabras.

Fuente: W3 School

Petermeissner
fuente
Una descripción vaga de qué tipo de nombres son posibles da poca orientación sobre cuál de los posibles nombres debe usarse.
Samuel Edwin Ward
Aunque definen la línea de base de lo que es posible, ¿verdad?
petermeissner
10
Claro, pero esto es como si alguien preguntara "cómo debería llamar a mi hijo para que no se molesten en la escuela" y tú respondieras "bueno, aquí hay una lista de sonidos que los humanos son capaces de producir".
Samuel Edwin Ward
Sí, pero en realidad no era la pregunta, ¿verdad? Porque la pregunta era: "¿Existe una convención de nomenclatura estándar para los elementos XML?" y "¿Existe algún estándar, de facto o de otro tipo, para los documentos XML?" entonces esta es una respuesta, ¿verdad? Uno que responda a la pregunta y no solo una corriente común de interpretación de la pregunta.
petermeissner
3
Es solo una respuesta si ignora el resto de la pregunta después de esas dos oraciones. No ha intentado responder 'cuál es el mejor' o 'cuál es mejor'.
Samuel Edwin Ward
0

He estado buscando mucho un buen enfoque, también leyendo este hilo y algunos otros y votaría por usar guiones .

Se utilizan ampliamente en ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ) que se pueden ver en muchos códigos fuente y, por lo tanto, son comunes. Como ya se señaló aquí, ciertamente están permitidos, lo que también se explica aquí: Usando - en el nombre del elemento XML

También como beneficio adicional: al escribir HTML en combinación con CSS, a menudo tiene clases cuyos nombres también usan guiones como separadores de forma predeterminada. Ahora, si tiene etiquetas personalizadas que usan clases CSS o atributos personalizados para etiquetas que usan clases CSS, entonces algo como:

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

es más consistente y lee, en mi humilde opinión, mucho mejor que:

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

Hielo fuego
fuente