Esercitazione XML

XML CASA Introduzione XML XML Come usare Albero XML Sintassi XML Elementi XML Attributi XML Spazi dei nomi XML Visualizzazione XML Richiesta HTTP XML Analizzatore XML XML DOM XPath XML XML XSLT XQuery XML XML XLink Validatore XML DTD XML Schema XML Server XML Esempi XML Quiz XML Certificato XML

XML AJAX

Introduzione AJAX AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

XML DOM

DOM Introduzione Nodi DOM Accesso DOM Informazioni sul nodo DOM Elenco dei nodi DOM DOM attraversando Navigazione DOM DOM Ottieni valori Nodi di modifica DOM DOM Rimuovere i nodi DOM Sostituisci nodi DOM Crea nodi DOM Aggiungi nodi Clonazione dei nodi DOM Esempi DOM

Esercitazione XPath

Introduzione a XPath Nodi XPath Sintassi XPath Assi XPath Operatori XPath Esempi di XPath

Esercitazione XSLT

Introduzione a XSLT Lingue XSL Trasformazione XSLT XSLT <modello> XSLT <valore-di> XSLT <per-ciascuno> XSLT <ordina> XSLT <se> XSLT <scegli> Applicare XSLT XSLT sul Cliente XSLT sul server XSLT Modifica XML Esempi XSLT

Esercitazione XQuery

Introduzione a XQuery Esempio XQuery XQuery FLWOR XQuery HTML Termini di XQuery Sintassi XQuery Aggiungi XQuery XQuery Seleziona Funzioni XQuery

DTD XML

Introduzione alla DTD Blocchi di costruzione DTD Elementi DTD Attributi DTD Elementi DTD vs Attr Entità DTD Esempi di DTD

Schema XSD

Introduzione all'XSD XSD Come fare per XSD <schema> Elementi XSD Attributi XSD Restrizioni XSD

Complesso XSD

Elementi XSD XSD vuoto Solo elementi XSD Solo testo XSD XSD misto Indicatori XSD XSD <qualsiasi> XSD <qualsiasi attributo> Sostituzione XSD Esempio XSD

Dati XSD

Stringa XSD Data XSD Numerico XSD XSD Varie Riferimento XSD

Servizi Web

Servizi XML XML WSDL SAPONE XML XML RDF RSS XML

Riferimenti

Tipi di nodi DOM Nodo DOM Elenco nodi DOM DOM NamedNodeMap Documento DOM Elemento DOM Attributo DOM Testo DOM DOM CDATA Commento DOM DOM XMLHttpRichiesta Analizzatore DOM Elementi XSLT Funzioni XSLT/XPath

Elementi XML e attributi


In XML non ci sono regole su quando usare gli attributi e quando usare gli elementi figlio.


Uso di elementi e attributi

I dati possono essere archiviati negli elementi figlio o negli attributi.

Dai un'occhiata a questi esempi:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

Nel primo esempio il sesso è un attributo. Nell'ultimo, il sesso è un elemento figlio. Entrambi gli esempi forniscono le stesse informazioni.

Non ci sono regole su quando usare gli attributi e quando usare gli elementi figlio. La mia esperienza è che gli attributi sono utili in HTML, ma in XML dovresti cercare di evitarli. Usa gli elementi figlio se le informazioni sembrano dati.


Il mio modo preferito

Mi piace memorizzare i dati negli elementi figlio.

I seguenti tre documenti XML contengono esattamente le stesse informazioni:

Nel primo esempio viene utilizzato un attributo di data:

<note date="12/11/2002">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Nel secondo esempio viene utilizzato un elemento data:

<note>
  <date>12/11/2002</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Un elemento di data espanso viene utilizzato nel terzo: (QUESTO È IL MIO PREFERITO):

<note>
  <date>
    <day>12</day>
    <month>11</month>
    <year>2002</year>
  </date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>


Evitare di utilizzare gli attributi?

Dovresti evitare di usare gli attributi?

Alcuni dei problemi con gli attributi sono:

  • gli attributi non possono contenere più valori (gli elementi figlio possono)
  • gli attributi non sono facilmente espandibili (per modifiche future)
  • gli attributi non possono descrivere le strutture (gli elementi figlio possono)
  • gli attributi sono più difficili da manipolare dal codice del programma
  • i valori degli attributi non sono facili da testare rispetto a un DTD

Se utilizzi gli attributi come contenitori per i dati, ti ritroverai con documenti difficili da leggere e gestire. Prova a usare gli elementi per descrivere i dati. Utilizzare gli attributi solo per fornire informazioni non rilevanti per i dati.

Non finire così (non è così che dovrebbe essere usato XML):

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

Un'eccezione alla mia regola degli attributi

Le regole hanno sempre delle eccezioni.

La mia regola sugli attributi ha un'eccezione:

A volte assegno riferimenti ID agli elementi. Questi riferimenti ID possono essere utilizzati per accedere agli elementi XML più o meno allo stesso modo degli attributi NAME o ID in HTML. Questo esempio lo dimostra:

<messages>
<note id="p501">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

<note id="p502">
  <to>Jani</to>
  <from>Tove</from>
  <heading>Re: Reminder</heading>
  <body>I will not!</body>
</note>
</messages>

L'ID in questi esempi è solo un contatore, o un identificatore univoco, per identificare le diverse note nel file XML e non una parte dei dati della nota.

Quello che sto cercando di dire qui è che i metadati (dati sui dati) dovrebbero essere archiviati come attributi e che i dati stessi dovrebbero essere archiviati come elementi.