Esiste una convenzione di denominazione standard per gli elementi XML? [chiuso]


96

Esiste uno standard, de facto o altro, per i documenti XML? Ad esempio qual è il modo "migliore" per scrivere un tag?

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

Allo stesso modo se ho un valore enumerato per un attributo che è migliore

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

2
Tecnicamente parlando, puoi anche usare <my.tag />. Potrebbe non essere una buona idea in alcuni contesti ...
PhiLho


In linea sono disponibili diversi "standard" ..
user2864740

Risposte:


46

Sospetto che i valori più comuni sarebbero camelCased - ie

<myTag someAttribute="someValue"/>

In particolare, gli spazi causano alcuni glitch se mescolati con generatori di codice (cioè per [de] serializzare xml in oggetti), poiché non molti linguaggi consentono enumerazioni con spazi (richiedendo una mappatura tra i due).


35
Hm ... la migliore risposta ... Penso che sia una risposta decente, ma è solo un'opinione. Avere una sorta di riferimento sarebbe carino.
Hamish Grubijan

4
Non sono d'accordo, non sono abituato a vedere XML con custodia cammello.
Rafa

So che questa è una vecchia risposta, ma la maggior parte del Microsoft XML più recente che ho visto tende a non essere d'accordo con questa scelta di formato. Ma a IIS piace dot.naming così ..
user2246674

4
Come tutti affermano che è personale, ma seguo il tuo approccio poiché definisco sempre il mio XML usando XMLSchema e XMLSchema segue questo approccio. w3.org/2001/XMLSchema.xsd . Per me non ha nulla a che fare con i linguaggi di programmazione. Usiamo XML perché è uno standard di interfaccia interoperabile. I linguaggi di programmazione sono solo un dettaglio di implementazione e ogni linguaggio ha la propria convenzione.
dan carter

I miei 2 centesimi - ho visto CamelCase e tutto minuscolo; raramente tutto in maiuscolo (vecchio HTML) e ho visto lettere minuscole. Non ricordo di aver mai visto CamelBack. Preferisco CamelCase o minuscolo. Attributi, tuttavia, tendo a vedere tutti in minuscolo.
Kit10

30

Regole di denominazione XML

Gli elementi XML devono seguire queste regole di denominazione:

    - 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

È possibile utilizzare qualsiasi nome, nessuna parola è riservata (tranne xml).

Migliori pratiche di denominazione

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

Stili di denominazione

Non ci sono stili di denominazione definiti per gli elementi XML. Ma qui ci sono alcuni comunemente usati:

    - 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

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


13

Per me, è come discutere dello stile del codice per un linguaggio di programmazione: alcuni sosterranno uno stile, altri difenderanno un'alternativa. L'unico consenso che ho visto è: "Scegli uno stile e sii coerente"!

Ho notato solo che molti dialetti XML usano solo nomi in minuscolo (SVG, Ant, XHTML ...).

Non ottengo la regola "nessuno spazio nei valori degli attributi". In qualche modo, invia al dibattito "cosa mettere negli attributi e cosa mettere come testo?".
Forse questi non sono i migliori esempi, ma ci sono alcuni formati XML ben noti che utilizzano spazi negli attributi:

  • XHTML, in particolare l'attributo di classe (puoi inserire due o più classi) e ovviamente gli attributi alt e title.
  • SVG, con ad esempio l'attributo d del tag path.
  • Entrambi con attributo di stile ...

Non capisco appieno gli argomenti contro la pratica (sembra che si applichi solo ad alcuni usi) ma è almeno legale e abbastanza ampiamente utilizzata. Con inconvenienti, a quanto pare.

Oh, e non hai bisogno di uno spazio prima della barra di chiusura automatica. :-)


L'argomento contro gli spazi è, e questo è solo perché è stato chiesto specificamente nella domanda, se il valore viene enumerato per supportare l'analisi, non molti linguaggi supportano enumerazioni con spazi, tuttavia molti di noi che usano XML in C / C ++, C # o Java (i linguaggi che uso, ma non solo) spesso mappano i valori degli attributi alle enumerazioni. Possiamo quindi semplicemente analizzare un letterale in una mappa / dizionario (o più facilmente nel caso di Java e C #). In definitiva, sono d'accordo che sembra essere una questione di fervore piuttosto che uno standard. Seguo semplicemente la filosofia "quando a Roma".
Kit10

12

Preferisco TitleCase per i nomi degli elementi e camelCase per gli attributi. Nessuno spazio per nessuno dei due.

<AnElement anAttribute="Some Value"/>

Per inciso, ho fatto una rapida ricerca di Best Practices in XML e ho trovato questo collegamento piuttosto interessante: Schemi XML: Best Practices .


8

Tenderei a favorire i tag minuscoli o camelcase e poiché gli attributi dovrebbero in genere riflettere i valori dei dati - non il contenuto - mi atterrei a un valore che potrebbe essere utilizzato come nome di variabile in qualsiasi piattaforma / lingua potrebbe essere interessata, ad esempio evitare gli spazi ma l'altro due forme potrebbero andare bene


+1 per aver pensato ai nomi di variabili / funzioni
Ates Goral

@downvoter: per favore fammi la cortesia di spiegarti.
annakata

8

È soggettivo, ma se ci sono due parole in un tag elemento, la leggibilità può essere migliorata aggiungendo un carattere di sottolineatura tra le parole (ad esempio <my_tag>) invece di usare nessun separatore. Riferimento: http://www.w3schools.com/xml/xml_elements.asp . Quindi secondo w3schools la risposta sarebbe:

<my_tag attribute="some value">

Il valore non deve utilizzare un trattino basso o un separatore, poiché sono consentiti spazi nei valori degli attributi ma non nei nomi dei tag degli elementi.


2
+1 perché hai citato un riferimento che contiene una sezione "Best Naming Practices" (non solo un'opinione)
Fuhrmanator

2
@ Fuhrmanator Quel "riferimento" è esso stesso un'opinione, anche se fornisce una giustificazione. Non è affatto uno standard - e (anche se è molto meno terribile di quanto non fosse) non consiglio né uso w3schools come "riferimento". Ci sono fonti molto più originali e complete.
user2864740

@ user2864740 come? Hai terminato il tuo commento prima di fornire le fonti più originali e complete. Il punto del mio +1 era che l'OP chiedeva degli standard ma la maggior parte delle risposte fornisce opinioni.
Fuhrmanator

Questa risposta fornisce solo opinioni , il collegamento a w3schools è irrilevante e non le rimuove. Per quanto riguarda gli standard, vedere le regole di implementazione (come in RSS ) o le regole dell'organizzazione (come in OAGi ) - a un certo livello lo "standard" viene applicato solo a un particolare livello di applicazione / business. Il collegamento w3schools fornisce solo la propria opinione / best practice in un senso molto vago (fornisce alcuni suggerimenti e dice "ecco come si fa").
user2864740

Cioè, il solo inserimento di un collegamento non rende autorevole una risposta (o la risorsa collegata).
user2864740

7

Molti dialetti XML centrati sui documenti utilizzano il latino di base minuscolo e il trattino. Tendo ad andare con quello.

I generatori di codice che associano XML direttamente agli identificatori del linguaggio di programmazione sono fragili e (ad eccezione della serializzazione di oggetti ingenua, come XAML) dovrebbero essere evitati nei formati di documenti portabili; per il miglior riutilizzo e la longevità delle informazioni, l'XML dovrebbe cercare di abbinare il dominio, non l'implementazione.


3

rss è probabilmente uno degli schemi xml più utilizzati al mondo ed è camelCased.

Le specifiche sono qui: http://cyber.law.harvard.edu/rss/rss.html

Certo, non ha attributi di nodo nello schema, ma tutti i nomi degli elementi del nodo sono camelCased. Per esempio:

lastBuildDate managingEditor pubDate


2

Normalmente allineo la convenzione di denominazione XML con la stessa convenzione di denominazione in altre parti del codice. Il motivo è quando carico l'XML in Object, i suoi attributi e nomi di elementi possono essere indicati come la stessa convenzione di denominazione attualmente utilizzata nel progetto.

Ad esempio, se il tuo javascript utilizza camelCase, anche il tuo XML utilizza camelCase.


1
Sebbene sia utile per il lavoro di intraproiezione, si interrompe rapidamente quando XML viene utilizzato come formato di interscambio indipendente dalla lingua.
user2864740

Quindi i componenti del progetto sono coerenti, ma come si progetta lo standard iniziale a cui è conforme il progetto?
Gqqnbig

2

Microsoft abbraccia due convenzioni:

  1. Per la configurazione , Microsoft utilizza camelCase . Guarda il file di configurazione di Visual Studio. Per VS2013, è archiviato in:

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

Esempio:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Microsoft utilizza anche UpperCase per il proprio XAML. Immagino che sia per differenziarsi dall'HTML (che usa le lettere minuscole).

Esempio:

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

1

Non esiste una raccomandazione esplicita. Sulla base di un'altra raccomandazione del W3C, quella per XHTML , ho optato per il minuscolo:

4.2. I nomi degli elementi e degli attributi devono essere in minuscolo

I documenti XHTML devono utilizzare lettere minuscole per tutti gli elementi HTML e i nomi degli attributi. Questa differenza è necessaria perché XML fa distinzione tra maiuscole e minuscole, ad esempio <li> e <LI> sono tag diversi.


0

Regole di denominazione XML

Gli elementi XML devono seguire queste regole di denominazione:

  • I nomi possono contenere lettere, numeri e altri caratteri
  • I nomi non possono iniziare con un numero o un carattere di punteggiatura
  • I nomi non possono iniziare con le lettere xml (o XML, o Xml, ecc.)
  • I nomi non possono contenere spazi È possibile utilizzare qualsiasi nome, nessuna parola è riservata.

Fonte: W3 School


Una vaga descrizione del tipo di nomi possibili fornisce poche indicazioni su quale dei nomi possibili dovrebbe essere utilizzato.
Samuel Edwin Ward

Sebbene definiscano la linea di base di ciò che è possibile, giusto?
petermeissner

10
Certo, ma è come se qualcuno chiedesse "come dovrei chiamare mio figlio in modo che non venga preso di mira a scuola" e tu rispondessi "beh, ecco un elenco di suoni che gli umani sono in grado di produrre".
Samuel Edwin Ward

Sì, ma in realtà non era la domanda, giusto? Perché le domande erano: "Esiste una convenzione di denominazione standard per gli elementi XML?" e "Esiste uno standard, de facto o altro, per i documenti XML?" quindi questa è una risposta, giusto? Uno che risponde alla domanda e non solo un flusso comune di interpretazione della domanda.
petermeissner

3
È solo una risposta se ignori il resto della domanda dopo quelle due frasi. Non hai tentato di rispondere "qual è il" migliore "" o "qual è il migliore".
Samuel Edwin Ward

0

Ho cercato molto un buon approccio, leggendo anche questo thread e alcuni altri e voterei per l' uso dei trattini .

Sono ampiamente utilizzati in ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ) che possono essere visti in molti codici sorgente e sono quindi comuni. Come già sottolineato qui, sono certamente consentiti, il che è spiegato anche qui: Utilizzo di - nel nome dell'elemento XML

Anche come vantaggio collaterale: quando si scrive HTML in combinazione con CSS, spesso si hanno classi i cui nomi utilizzano trattini come separatori per impostazione predefinita. Ora, se hai tag personalizzati che utilizzano classi CSS o attributi personalizzati per tag che utilizzano classi CSS, allora qualcosa come:

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

è più coerente e legge - a mio modesto parere - molto più bello di:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.