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

Indicatori XSD


Possiamo controllare COME gli elementi devono essere utilizzati nei documenti con indicatori.


Indicatori

Ci sono sette indicatori:

Indicatori dell'ordine:

  • Tutto
  • Scelta
  • Sequenza

Indicatori di occorrenza:

  • maxOccs
  • min si verifica

Indicatori di gruppo:

  • Nome del gruppo
  • nome del gruppo attributo

Indicatori di ordine

Gli indicatori di ordine vengono utilizzati per definire l'ordine degli elementi.

Tutti gli indicatori

L'indicatore <all> specifica che gli elementi figlio possono apparire in qualsiasi ordine e che ogni elemento figlio deve verificarsi solo una volta:

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:all>
  </xs:complexType>
</xs:element>

Nota: quando si utilizza l'indicatore <all> è possibile impostare l'indicatore <minOccurs> su 0 o 1 e l'indicatore <maxOccurs> può essere impostato solo su 1 (i <minOccurs> e <maxOccurs> sono descritti più avanti).

Indicatore di scelta

L'indicatore <choice> specifica che può verificarsi un elemento figlio o un altro:

<xs:element name="person">
  <xs:complexType>
    <xs:choice>
      <xs:element name="employee" type="employee"/>
      <xs:element name="member" type="member"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

Indicatore di sequenza

L'indicatore <sequence> specifica che gli elementi figlio devono apparire in un ordine specifico:

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


Indicatori di occorrenza

Gli indicatori di occorrenza vengono utilizzati per definire la frequenza con cui un elemento può verificarsi.

Nota: per tutti gli indicatori "Ordine" e "Gruppo" (qualsiasi, tutti, scelta, sequenza, nome del gruppo e riferimento al gruppo) il valore predefinito per maxOccurs e minOccurs è 1.

Indicatore maxOccurs

L'indicatore <maxOccurs> specifica il numero massimo di volte in cui un elemento può verificarsi:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string" maxOccurs="10"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

L'esempio sopra indica che l'elemento "child_name" può verificarsi almeno una volta (il valore predefinito per minOccurs è 1) e un massimo di dieci volte nell'elemento "person".

Indicatore minOccurs

L'indicatore <minOccurs> specifica il numero minimo di volte in cui un elemento può verificarsi:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string"
      maxOccurs="10" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

L'esempio sopra indica che l'elemento "child_name" può comparire un minimo di zero volte e un massimo di dieci volte nell'elemento "person".

Suggerimento: per consentire a un elemento di apparire un numero illimitato di volte, utilizzare l'istruzione maxOccurs="unbounded":

Un esempio funzionante:

Un file XML chiamato "Myfamily.xml":

<?xml version="1.0" encoding="UTF-8"?>

<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">

<person>
  <full_name>Hege Refsnes</full_name>
  <child_name>Cecilie</child_name>
</person>

<person>
  <full_name>Tove Refsnes</full_name>
  <child_name>Hege</child_name>
  <child_name>Stale</child_name>
  <child_name>Jim</child_name>
  <child_name>Borge</child_name>
</person>

<person>
  <full_name>Stale Refsnes</full_name>
</person>

</persons>

Il file XML sopra contiene un elemento radice chiamato "persone". All'interno di questo elemento radice abbiamo definito tre elementi "persona". Ogni elemento "person" deve contenere un elemento "full_name" e può contenere fino a cinque elementi "child_name".

Ecco il file di schema "family.xsd":

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">

<xs:element name="persons">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="person" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="full_name" type="xs:string"/>
            <xs:element name="child_name" type="xs:string"
            minOccurs="0" maxOccurs="5"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>

Indicatori di gruppo

Gli indicatori di gruppo vengono utilizzati per definire insiemi di elementi correlati.

Gruppi di elementi

I gruppi di elementi sono definiti con la dichiarazione di gruppo, in questo modo:

<xs:group name="groupname">
...
</xs:group>

È necessario definire un elemento all, choice o sequence all'interno della dichiarazione di gruppo. L'esempio seguente definisce un gruppo denominato "persongroup", che definisce un gruppo di elementi che devono verificarsi in una sequenza esatta:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

Dopo aver definito un gruppo, puoi fare riferimento ad esso in un'altra definizione, come questa:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

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

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:group ref="persongroup"/>
    <xs:element name="country" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Gruppi di attributi

I gruppi di attributi sono definiti con la dichiarazione attributeGroup, in questo modo:

<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>

L'esempio seguente definisce un gruppo di attributi denominato "personattrgroup":

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

Dopo aver definito un gruppo di attributi, puoi fare riferimento ad esso in un'altra definizione, come questa:

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

<xs:element name="person">
  <xs:complexType>
    <xs:attributeGroup ref="personattrgroup"/>
  </xs:complexType>
</xs:element>