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 complessi XSD


Un elemento complesso contiene altri elementi e/o attributi.


Cos'è un elemento complesso?

Un elemento complesso è un elemento XML che contiene altri elementi e/o attributi.

Esistono quattro tipi di elementi complessi:

  • elementi vuoti
  • elementi che contengono solo altri elementi
  • elementi che contengono solo testo
  • elementi che contengono sia altri elementi che testo

Nota: ciascuno di questi elementi può contenere anche attributi!


Esempi di elementi complessi

Un elemento XML complesso, "prodotto", che è vuoto:

<product pid="1345"/>

Un elemento XML complesso, "employee", che contiene solo altri elementi:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

Un elemento XML complesso, "food", che contiene solo testo:

<food type="dessert">Ice cream</food>

Un elemento XML complesso, "descrizione", che contiene sia elementi che testo:

<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>


Come definire un elemento complesso

Guarda questo elemento XML complesso, "employee", che contiene solo altri elementi:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

Possiamo definire un elemento complesso in uno schema XML in due modi diversi:

1. L'elemento "dipendente" può essere dichiarato direttamente nominando l'elemento, in questo modo:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Se si utilizza il metodo sopra descritto, solo l'elemento "employee" può utilizzare il tipo complesso specificato. Si noti che gli elementi figlio, "firstname" e "lastname", sono circondati dall'indicatore <sequence>. Ciò significa che gli elementi figlio devono apparire nello stesso ordine in cui sono dichiarati. Imparerai di più sugli indicatori nel capitolo Indicatori XSD.

2. L'elemento "dipendente" può avere un attributo di tipo che fa riferimento al nome del tipo complesso da utilizzare:

<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Se si utilizza il metodo sopra descritto, più elementi possono fare riferimento allo stesso tipo complesso, in questo modo:

<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Puoi anche basare un tipo complesso su un tipo complesso esistente e aggiungere alcuni elementi, come questo:

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>