Existe uma convenção de nomenclatura padrão para elementos XML? [fechadas]

96

Existe algum padrão, de fato ou não, para documentos XML? Por exemplo, qual é a "melhor" maneira de escrever uma tag?

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

Da mesma forma, se eu tiver um valor enumerado para um atributo que é melhor

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
tpower
fonte
2
Tecnicamente falando, você também pode usar <my.tag />. Pode não ser uma boa ideia em alguns contextos ...
PhiLho
1
Duplicado de stackoverflow.com/questions/1074447/…
Igor Brejc
Existem vários "padrões" encontrados online.
user2864740

Respostas:

46

Eu suspeito que os valores mais comuns seriam camelCased - ou seja,

<myTag someAttribute="someValue"/>

Em particular, os espaços causam algumas falhas se misturados com geradores de código (ou seja, para [des] serializar xml para objetos), já que muitas linguagens não permitem enums com espaços (exigindo um mapeamento entre os dois).

Marc Gravell
fonte
35
Hm ... melhor resposta ... Eu acho que é uma resposta decente, mas é apenas uma opinião. Ter algum tipo de referência seria bom.
Hamish Grubijan
4
Não concordo, não estou acostumado a ver XML com caixa de camelo.
Rafa
Eu sei que esta é uma resposta antiga, mas a maior parte do Microsoft XML mais recente que vi tende a discordar dessa escolha de formato. Mas o IIS gosta de dot.naming então ..
user2246674
4
Como todos mencionam, é pessoal, mas eu sigo sua abordagem, pois sempre defino meu XML usando XMLSchema, e XMLSchema segue essa abordagem. w3.org/2001/XMLSchema.xsd . Para mim, não tem nada a ver com linguagens de programação. Usamos XML porque é um padrão de interface interoperável. Linguagens de programação são apenas um detalhe de implementação e cada linguagem tem sua própria convenção.
Dan Carter
Meus 2 centavos - eu vi CamelCase, e tudo em minúsculas; raramente todas em letras maiúsculas (HTML antigo) e já vi letras minúsculas. Não me lembro de ter visto camelBack. Eu prefiro CamelCase ou minúsculas. Atributos, no entanto, tendo a ver todos em letras minúsculas.
Kit10
30

Regras de nomenclatura XML

Os elementos XML devem seguir estas regras 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

Qualquer nome pode ser usado, nenhuma palavra é reservada (exceto xml).

Melhores práticas 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 Nomenclatura

Não há estilos de nomenclatura definidos para elementos XML. Mas aqui estão alguns comumente usados:

    - 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

referência http://www.w3schools.com/xml/xml_elements.asp

Farhad Maleki
fonte
13

Para mim, é como discutir o estilo do código para uma linguagem de programação: alguns argumentarão por um estilo, outros defenderão uma alternativa. O único consenso que vi é: "Escolha um estilo e seja consistente"!

Acabei de notar que muitos dialetos XML usam apenas nomes em minúsculas (SVG, Ant, XHTML ...).

Eu não entendo a regra "sem espaços nos valores dos atributos". De alguma forma, remete ao debate "o que colocar em atributos e o que colocar como texto?".
Talvez esses não sejam os melhores exemplos, mas existem alguns formatos XML bem conhecidos usando espaços nos atributos:

  • XHTML, particularmente atributo de classe (você pode colocar duas ou mais classes) e, claro, atributos alt e title.
  • SVG, com por exemplo o atributo d da tag de caminho.
  • Ambos com atributo de estilo ...

Eu não entendo completamente os argumentos contra a prática (parece se aplicar apenas a alguns usos), mas ela é legal, pelo menos, e amplamente usada. Com desvantagens, aparentemente.

Ah, e você não precisa de um espaço antes da barra de fechamento automático. :-)

PhiLho
fonte
O argumento contra os espaços é, e isso ocorre apenas porque foi perguntado especificamente na pergunta, se o valor for enumerado para oferecer suporte à análise, nem muitas linguagens oferecem suporte a enumerações com espaços, mas muitos de nós que usam XML em C / C ++, C # ou Java (linguagens que uso, mas não limitado a) frequentemente mapearão valores de atributos para enumerações. Podemos então simplesmente analisar um literal para um mapa / dicionário (ou mais facilmente no caso de Java e C #). Em última análise, concordo que parece ser mais uma questão de fervor do que de um padrão. Eu simplesmente sigo a filosofia "quando em Roma".
Kit10
12

Eu prefiro TitleCase para nomes de elementos e camelCase para atributos. Sem espaços para qualquer um.

<AnElement anAttribute="Some Value"/>

Como um aparte, fiz uma busca rápida por Best Practices in XML e encontrei este link bastante interessante: XML schemas: Best Practices .

Raithlin
fonte
8

Eu tenderia a favorecer as tags em minúsculas ou camelcase e, uma vez que os atributos devem normalmente refletir os valores dos dados - não o conteúdo - eu preferiria um valor que poderia ser usado como um nome de variável em qualquer plataforma / idioma de interesse, ou seja, evite espaços, mas o outro duas formas podem estar ok

Annakata
fonte
+1 para pensar sobre nomes de variáveis ​​/ funções
Ates Goral
@downvoter: por favor, tenha a cortesia de se explicar.
annakata
8

É subjetivo, mas se houver duas palavras em uma tag de elemento, a legibilidade pode ser melhorada adicionando um sublinhado entre as palavras (por exemplo <my_tag>) em vez de usar nenhum separador. Referência: http://www.w3schools.com/xml/xml_elements.asp . Portanto, de acordo com w3schools, a resposta seria:

<my_tag attribute="some value">

O valor não precisa usar um sublinhado ou separador, já que são permitidos espaços nos valores dos atributos, mas não nos nomes das tags dos elementos.

alistair
fonte
2
+1 porque você citou uma referência que tem uma seção "Melhores práticas de nomenclatura" (não apenas uma opinião)
Fuhrmanator
2
@Fuhrmanator Essa "referência" em si é uma opinião, embora forneça alguma justificativa. Não é um padrão de forma alguma - e (embora seja muito menos terrível do que era) eu não recomendo ou uso w3schools como uma "referência". Existem fontes muito mais originais e abrangentes.
user2864740
@ user2864740 como? Você terminou seu comentário antes de fornecer as fontes mais originais e abrangentes. O ponto do meu +1 foi que o OP pediu padrões, mas a maioria das respostas fornece opiniões.
Fuhrmanator
Esta resposta fornece apenas opiniões , o link para w3schools é irrelevante e não as remove. No que diz respeito aos padrões, consulte as regras de implementação (como em RSS ) ou regras de organização (como em OAGi ) - em algum nível, o "padrão" é aplicado apenas em um determinado aplicativo / nível de negócios. O link w3schools fornece apenas sua própria opinião / prática recomendada em um sentido muito vago (fornece algumas dicas e diz "aqui estão algumas maneiras de como isso é feito").
user2864740
Ou seja, apenas incluir um link não torna uma resposta (ou o recurso vinculado) oficial.
user2864740
7

Muitos dialetos XML centrados em documentos usam latim básico em minúsculas e traço. Eu costumo ir com isso.

Os geradores de código que mapeiam XML diretamente para identificadores de linguagem de programação são frágeis e (com exceção da serialização ingênua de objetos, como XAML) devem ser evitados em formatos de documentos portáteis; para melhor reutilização e longevidade das informações, o XML deve tentar corresponder ao domínio, não à implementação.

Pete Kirkham
fonte
3

rss é provavelmente um dos esquemas xml mais consumidos no mundo e é camelCased.

As especificações estão aqui: http://cyber.law.harvard.edu/rss/rss.html

Concedido, ele não tem atributos de nó no esquema, mas todos os nomes de elementos de nó são camelCased. Por exemplo:

lastBuildDate manageEditor pubDate

Evermeire
fonte
2

Eu normalmente alinho a convenção de nomenclatura XML com a mesma convenção de nomenclatura em outras partes do código. A razão é que quando eu carrego o XML em Object, seus atributos e nomes de elementos podem ser referidos como a mesma convenção de nomenclatura usada atualmente no projeto.

Por exemplo, se o seu javascript usa camelCase, seu XML também usa camelCase.

micksatana
fonte
1
Embora útil para o trabalho intraprojeto, isso rapidamente se desfaz quando XML é usado como um formato de intercâmbio
independente de
Portanto, os componentes em seu projeto são consistentes, mas como você projeta o padrão inicial ao qual o projeto se conforma?
Gqqnbig de
2

A Microsoft adota duas convenções:

  1. Para configuração , a Microsoft usa camelCase . Observe o arquivo de configuração do Visual Studio. Para VS2013, é armazenado em:

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

Exemplo:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. A Microsoft também usa UpperCase para seu XAML. Acho que é para diferenciar do HTML (que usa letras minúsculas).

Exemplo:

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

Não há recomendação explícita. Com base em outra recomendação do W3C, para XHTML , optei por letras minúsculas:

4.2. Os nomes dos elementos e atributos devem estar em minúsculas

Os documentos XHTML devem usar letras minúsculas para todos os elementos HTML e nomes de atributos. Essa diferença é necessária porque XML faz distinção entre maiúsculas e minúsculas, por exemplo, <li> e <LI> são tags diferentes.

Diego Menta
fonte
0

Regras de nomenclatura XML

Os elementos XML devem seguir estas regras de nomenclatura:

  • Os nomes podem conter letras, números e outros caracteres
  • Os nomes não podem começar com um número ou caractere de pontuação
  • Os nomes não podem começar com as letras xml (ou XML, ou Xml, etc)
  • Os nomes não podem conter espaços. Qualquer nome pode ser usado, nenhuma palavra é reservada.

Fonte: Escola W3

Petermeissner
fonte
Uma descrição vaga de quais tipos de nomes são possíveis fornece pouca orientação sobre quais nomes possíveis devem ser usados.
Samuel Edwin Ward
Embora eles definam a linha de base do que é possível - certo?
petermeissner
10
Claro, mas é como se alguém perguntasse "como devo nomear meu filho para que não sejam incomodados na escola" e você respondesse "bem, aqui está uma lista de sons que os humanos são capazes de produzir."
Samuel Edwin Ward
Sim, mas na verdade não era a questão, certo? Porque a pergunta era: "Existe uma convenção de nomenclatura padrão para elementos XML?" e "Existe algum padrão, de fato ou não, para documentos XML?" então esta é uma resposta certa? Aquele que responde à pergunta e não apenas um fluxo comum de interpretação da pergunta.
petermeissner
3
É apenas uma resposta se você ignorar o resto da pergunta após essas duas frases. Você não tentou responder 'qual é o' melhor '' ou 'qual é o melhor'.
Samuel Edwin Ward
0

Tenho procurado muito por uma boa abordagem, também lendo este tópico e alguns outros e votaria a favor do uso de hífens .

Eles são amplamente usados ​​em ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ), que podem ser vistos em muitos códigos-fonte e, portanto, são comuns. Como já apontado aqui, eles são certamente permitidos, o que também é explicado aqui: Usando - no nome do elemento XML

Também como um benefício colateral: ao escrever HTML em combinação com CSS, você geralmente tem classes cujos nomes usam hifens como separador por padrão também. Agora, se você tiver tags personalizadas que usam classes CSS ou atributos personalizados para tags que usam classes CSS, algo como:

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

é mais consistente e lê - na minha humilde opinião - muito mais agradável do que:

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

Gelo fogo
fonte