• Non ci sono risultati.

Ogni oggetto secondario (nidificato) deve risiedere interamente all’interno dell’elemento che lo contiene

N/A
N/A
Protected

Academic year: 2021

Condividi "Ogni oggetto secondario (nidificato) deve risiedere interamente all’interno dell’elemento che lo contiene "

Copied!
48
0
0

Testo completo

(1)

XML

(2)
(3)

XML Reti di Calcolatori

3

(4)
(5)

XML Reti di Calcolatori

5

(6)
(7)

XML Reti di Calcolatori

7

(8)
(9)

XML Reti di Calcolatori

<?xml version=“1.0”?>

<Risultati>

<Corso>Basi di dati</Corso>

<Data>10 Dicembre 2003</Data>

<Lista_Studenti>

<Studente>

<Nome>Mario Rossi</Nome>

<Voto>27</Voto>

</Studente>

<Studente>

<Nome>Giuseppe Verdi</Nome>

<Voto>30L</Voto>

</Studente>

</Lista_Studenti>

</Risultati>

Risultati

Corso Data

List a_St uden ti

Stude nte

Nome Voto

Stude nte

Nome Voto

root element

9

(10)
(11)

XML Reti di Calcolatori

 

Gli oggetti possono essere inseriti uno dentro l’altro con l’uso della nidificazione

<Studente>

<Nome>...</Nome>

<Voto>...</Voto>

</Studente>

 

Ogni oggetto secondario (nidificato) deve risiedere interamente all’interno dell’elemento che lo contiene

  es. <Voto> all’esterno dell’elemento <Studente> perde il suo significato

 

La nidificazione definisce una relazione fra gli elementi di un documento

11

(12)
(13)

XML Reti di Calcolatori

13

(14)
(15)

<Nome> Bruno Rossi </Nome>!

XML Reti di Calcolatori

Contenuto

elemento tag

15

(16)

 

L’attributo aggiunge una proprietà all’elemento

 

Ogni attributo ha un nome e un valore

 

Gli attributi ammissibili per un elemento sono specificati nel DTD/

XML Schema

 

Un attributo può essere rappresentato da un elemento interno

attributo valore dell’attributo

attributo come elemento interno

(17)

XML Reti di Calcolatori

nome dell’entità valore associato all’entità

17

(18)

parte non analizzata

(19)

XML Reti di Calcolatori

19

(20)

 

Si può definire un namespace di default per un elemento

<Risultati xmlns=“http://www.ing.unisi.it/%7emaggini”>

<Corso>Basi di dati</Corso>

</Risultati>

 

Si può definire un namespace esplicito

<mag:Risultati xmlns:mag=“http://www.ing.unisi.it/%7emaggini”>

<mag:Corso>Basi di dati</mag:Corso>

</mag:Risultati>

  mag è un alias del nome del namespace completo che è rappresentato

(21)

XML Reti di Calcolatori

  C’è un conflitto nell’interpretazione dell’elemento Indirizzo

<?xml version=“1.0” ?>

<Indirizzo>

<Via>Roma 56</Via>

<Citta>Siena</Citta>

<Cap>53100</Cap>

</Indirizzo>

<?xml version=“1.0” ?>

<Server>

<Nome>www.ing.unisi.it</Nome>

<Indirizzo>

193.205.7.2 </Indirizzo>

</Server>

<?xml version=“1.0” ?>

<Facolta>

<Indirizzo>

<Via>Roma 56</Via>

<Citta>Siena</Citta>

<Cap>53100</Cap>

</Indirizzo>

<Server>

<Nome>www.ing.unisi.it</Nome>

<Indirizzo>

193.205.7.2 </Indirizzo>

</Server>

</Facolta>

21

(22)

<?xml version=“1.0” ?>

<Facolta>

<ind:Indirizzo xmlns:ind=“www.ing.unisi.it/ind”>

<ind:Via>Roma 56</ind:Via>

<ind:Citta>Siena</ind:Citta>

<ind:Cap>53100</ind:Cap>

</ind:Indirizzo>

<srv:Server xmlns:srv=“www.ing.unisi.it/srv”>

<srv:Nome>www.ing.unisi.it</srv:Nome>

<srv:Indirizzo>193.205.7.2</srv:Indirizzo>

</srv:Server>

</Facolta>

(23)

XML Reti di Calcolatori

23

(24)

  XML Schema definisce

 

quali elementi possono essere presenti in un documento

 

l’ordine e delle relazioni tra elementi

 

Gli attributi di ogni elemento e se sono opzionali,

richiesti o godono di qualche altra proprietà particolare

 

Il tipo di dato del contenuto degli attributi

(25)

XML Reti di Calcolatori

25

(26)
(27)

XML Reti di Calcolatori

 

Possono essere definiti dall’utente con l’elemento

simpleType

<xsd:simpleType name=“nomeTipo”>

- definizione del tipo –

</xsd:simpleType>

 

Sono presenti tipi predefiniti nella specifica di XML schema

  string

  boolean

  decimal

  integer

  date

  binary

  uriReference

27

(28)

 

Definizione di un nuovo tipo semplice derivato con una restrizione dal tipo intero

<xsd:simpleType name=“voti”>

<xsd:restriction base=“xsd:integer”>

<xsd:minInclusive value=“1” />

<xsd:maxInclusive value=“30” />

</xsd:restriction>

</xsd:simpleType>

creazione di tipo semplice namespace

xsd

nome del tipo

tipo base valore

1 ≤ n ≤ 30

(29)

XML Reti di Calcolatori

 

Definizione di una stringa che rispetta un pattern specifico

  2 caratteri maiuscoli seguiti da underscore e un numero di 3 cifre

<xsd:simpleType name=“code”>

<xsd:restriction base=“xsd:string”>

<xsd:pattern value=“[A-Z]{2}_[0-9]{3} />

</xsd:restriction>

</xsd:simpleType>

creazione di tipo semplice namespace

xsd nome del tipo

tipo base

pattern di vincolo sui valori (REGEX)

29

(30)

 

Si definiscono utilizzando l’elemento

complexType

<xsd:complexType name=“nomeTipo”>

- definizione del tipo –

</xsd:complexType>

 

La definizione può contenere dichiarazioni di elementi, riferimenti ad elementi

 

La definizione può prevedere un elemento

  <sequence> per specificare una lista ordinata di elementi

  <choice> per indicare un sottoinsieme di tutti gli elementi specificati

  <all> per indicare un insieme di elementi non ordinato

(31)

XML Reti di Calcolatori

 

Definizione del tipo complesso

StudenteTp

<xsd:complexType name=“StudenteTp”>

<xsd:sequence>

<xsd:element name=“Nome” type=“xsd:string” />

<xsd:element name=“Voto” type=“voti” />

</xsd:sequence>

</xsd:complexType>

creazione di tipo complesso namespace

xsd

nome del tipo

si utilizza il tipo definito in precedenza

31

(32)

 

Sono utilizzati per indicare quante volte un elemento può occorrere

  maxOccurs : numero massimo

  minOccurs : numero minimo

 

Per default

minOccurs=1

e

maxOccurs=minOccurs

  minOccurs=0

identifica un elemento opzionale

 

se il numero massimo di ripetizioni non è definito si usa “

unbounded

<xsd:complexType name=“Lista_StudentiTp”>

<xsd:sequence>

<xsd:element name=“Studente” type=“StudenteTp”

minOccurs=“0” maxOccurs=“unbounded” />

</xsd:sequence>

(33)

XML Reti di Calcolatori

 

Gli attributi si possono associare solo ad elementi complessi

 

L’attributo è definito con l’elemento attribute

<xsd:attribute name=“nomeAttr” type=“tipoAttr” />

  Gli attributi sono sempre definiti usando un tipo semplice

  Gli attributi si possono dichiarare opzionali o obbligatori usando la specifica use

<xsd:attribute name=“colore” type=“xsd:string” use=“optional” />

<xsd:attribute name=“matricola” type=“xsd:string” use=“required” />

33

(34)

 

Si possono definire il valore di default o un valore fisso per un dato attributo

<xsd:attribute name=“language” type=“xsd:string” default=“EN” />

<xsd:attribute name=“disponibile” type=“xsd:string” fixed=“SI” />

 

Per convenzione gli attributi si definiscono come ultimo elemento di un tipo complesso

<xsd:element name=“Studente” type=“StudenteTp” />

<xsd:complexType name=“StudenteTp”>

<xsd:sequence>

<xsd:element name=“Nome” type=“xsd:string” />

<xsd:element name=“Voto” type=“voti” />

(35)

XML Reti di Calcolatori

 

L’elemento schema è il root element di ogni definizione di schema

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.ing.unisi.it/%7emaggini/SDM"

xmlns="http://www.ing.unisi.it/%7emaggini/SDM“>

--- Dichiarazioni –

</xsd:schema>

namespace per gli elementi di XML schema

namespace di default per gli elementi dell’XML descritto

(target namespace)

35

(36)

 

Si indica lo schema di riferimento per indicare all’analizzatore dove trovare la definizione dello schema

<Risultati xmlns="http://www.ing.unisi.it/%7emaggini/SDM“

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation=

"http://www.ing.unisi.it/%7emaggini/SDM/risultati.xsd">

--- contenuto del documento ---

namespace di default in cui sono dichiarati tutti gli elementi

del documento

rende disponibile il namespace per le istanze di schema

(37)

XML Reti di Calcolatori

37

(38)

bool xml_set_element_handler (resource $parser,!

callable $start_element_handler, callable $end_element_handler)!

(39)

XML Reti di Calcolatori

39

(40)

<?xml version=“1.0”?>

<Risultati>

<Corso>Basi di dati</Corso>

<Data>10 Dicembre 2003</Data>

<Lista_Studenti>

<Studente corso=“Informatica”>

<Nome>Mario Rossi</Nome>

<Voto>27</Voto>

</Studente>

<Studente corso=“gestionale”>

<Nome>Giuseppe Verdi</Nome>

<Voto>30L</Voto>

</Studente>

Risultati

Corso Data

List a_St uden ti

Stude nte

Nome Voto

Stude nte

Nome Voto Basi

di dati

10 dicemb

re 2003

corso! corso!

Element

Attribute

(41)

XML Reti di Calcolatori

41

(42)
(43)

Sistemi Distribuiti e Mobili Marco Maggini

/

Risultati

Corso Data Lista

_Ris ultati Stude

nte

Stude

nte Stude

nte

Nome Voto Nome Voto Nome Voto

(44)

 

Selezione in base al tag

  Studente – seleziona i nodi figli del nodo Studente (se presente nel contesto corrente)

  /Risultati - seleziona dal nodo radice

  //Nome – seleziona tutti i nodi del tipo specificato presenti nel sottoalbero a partire dal nodo corrente

  . – seleziona il nodo corrente

  .. – seleziona il padre del nodo corrente

 

Selezione con predicati

  Si può specificare una condizione di selezione fra [condizione]

  /Risultati/Lista_Studenti/Studente[1] – il primo elemento Studente

  /Risultati/Lista_Studenti/Studente[last()] – l’ultimo elemento Studente

  /Risultati/Lista_Studenti/Studente[position()<3] – i primi due elementi Studente

(45)

Sistemi Distribuiti e Mobili Marco Maggini

condizione

(46)
(47)

XML Reti di Calcolatori

47

(48)

Riferimenti

Documenti correlati

Dimostriamo che esiste sempre una soluzione ottima che contiene la scelta ingorda, ovvero in cui il job con durata pi`u corta sia scelto per primo.. Supponiamo di avere una

In un palazzo di 100 piani si vuole stabilire qual ` e il piano pi` u alto dal quale ` e possibile lanciare un uovo senza che esso si rompa.. Le uova sono considerate tutte aventi

Ricerca esaustiva: si scandisce il vettore, confrontando gli elementi con quello da cercare, fino a che.. • si sono confrontati tutti gli

• This means that it is possible to define parametric

Quindi lo studente deve scegliere quali esami sostenere tenuto conto che ne vuole preparare almeno N e che vuole impiegare il minor numero possibile di ore.. Costruire un modello

[r]

Dati un insieme A che contiene n elementi, un insieme B che contiene m elementi, ed una relazione R da A a B, la relazione R si può rappresentare con una matrice booleana nxm

La tendenza ad ossidarsi e ridursi genera un flusso di elettroni (e quindi di corrente elettrica) dall’anodo verso