Un errore "Duplicate attributo" si era verificato durante un XML Parse

April 8

XML, acronimo di eXtensible Markup Language, può sembrare semplice a prima vista, ma XML ben formato deve rispettare una serie di regole rigorose. Quando queste regole sono violate, parser XML, come MSXML e Serse Segnala errori che spesso confondono i codificatori inizio. Per coloro che incontrano i messaggi di errore "attributo duplicato", capire alcuni concetti di base di codifica aiuterà illustrare le differenze tra elementi e attributi.

Elementi

Gli elementi sono alla base di XML. Tutti i documenti XML contengono un solo elemento principale che inizia con un tag di apertura, seguita da elementi figlio, e poi termina con un tag di chiusura.

<SCUOLA>
<CORSO ID = NAME "ENG101" = "abilità di scrittura di base">
<STUDENTE NAME = "Jim Smith" />
<STUDENTE NAME = "Mary Jones" />
</ CORSO>
<CORSO ID = NAME "ENG102" = "inglese grammatica e vocabolario" />
</ SCUOLA>

Nell'esempio precedente, l'elemento principale è la scuola. Il documento inizia con un tag di apertura <SCUOLA> e termina con un <SCUOLA /> tag di chiusura. All'interno di questi elementi sono due elementi di corso, che può o non può contenere elementi degli studenti.

attributi

Un modo per esprimere i dati in un file XML è incorporando attributi all'interno di un elemento. Un attributo posto dopo il tag di apertura con un nome e un valore coppia nella forma:

NAME = "valore"

Continuando l'esempio, l'elemento di corso ha gli attributi "id" e "nome". Valutando gli attributi, si vede che la scuola ha due corsi, ITA 101 e ITA 102, che prendono il nome "abilità di scrittura di base" e "English Grammar e vocabolario. "

attributi duplicati

Una regola di XML "ben formato" è che ogni attributo all'interno di un elemento deve avere un nome univoco. Nell'esempio, un solo studente normalmente non avere più nomi e naturalmente non avere più di un ID. Nella vita reale, questo non può essere il caso e lo stesso corso possono essere offerti da due dipartimenti come segue:

<CORSO ID = "ENG101" ID = NAME "COMM103" = "abilità di scrittura di base" />

Ciò non è consentito in XML, però. Se due classi con lo stesso nome devono essere espressi, un secondo attributo, come ad esempio ALT, può essere utilizzato al posto:

<CORSO ID = "ENG101" alt = NAME "COMM103" = "abilità di scrittura di base" />

Altri modi per esprimere attributi duplicati

XML non consente attributi duplicati, ma lo fa consentire a più elementi figlio con lo stesso nome. Nell'esempio, sia il corso e gli elementi STUDENTI appaiono due volte all'interno delle loro elementi padre. Utilizzare gli attributi per descrivere le caratteristiche uniche di ogni elemento e utilizzare elementi figlio di enumerare gli elementi che hanno più occorrenze. Un corso normalmente ha un ID e un nome, ma può avere molti studenti.