# XML/Relazione uno-uno

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
Obiettivi di apprendimento
* Creare uno schema per un modello dati contenente una relazione 1:1
* Inserire restrizioni su elementi o attributi in uno schema XML
* Specificare valori fissi o predefiniti per un elemento in uno schema XML
Nel capitolo precedente sono state introdotte alcune nuove caratteristiche degli schemi XML, documenti e fogli di stile, oltre a come modellare una relazione uno-a-molti. In questo capitolo introdurremo la modellazione di una relazione one-to-one in XML. Introdurremo anche altre caratteristiche di uno schema XML.

## Una relazione uno a uno (1:1)

Il diagramma seguente mostra un rapporto uno a uno e uno a molti. La relazione uno-uno registra ogni paese come un'unica destinazione top.

## Schema XML

Nel modello di dati dell'esempio 4.1 è rappresentata una relazione uno a uno (1:1). L'aggiunta del paese e della destinazione al modello dati consente la relazione 1:1 denominata topDestination. Un paese ha molte destinazioni diverse, ma solo una destinazione top. Lo schema XML nell'esempio 4.2 mostra come rappresentare una relazione 1:1 in uno schema XML.

### Esempio di schema XML

Esempio 4.2: Schema XML per una relazione 1:1

### Nuovi elementi nello schema

Esaminiamo i nuovi elementi e attributi nello schema dell'esempio 4.2.
* Country è un tipo complesso definito in City per rappresentare il rapporto 1:M tra un paese e le sue città.
* Destination è un tipo complesso definito in Country per rappresentare la relazione 1:M tra un paese e le sue numerose destinazioni.
* topDestination è un tipo complesso definito in Country per rappresentare il rapporto 1:1 tra un paese e la sua destinazione principale.

### Restrizioni nello schema

Nel capitolo precedente è stata introdotta l'imposizione di restrizioni sugli elementi; tuttavia, ci sono restrizioni potenzialmente più utili che possono essere imposte su un elemento. Le restrizioni possono essere applicate agli elementi e agli attributi che influenzano il modo in cui il processore gestisce i caratteri degli spazi bianchi:

#### Spazio bianco e vincoli di lunghezza

Il vincolo whiteSpace è impostato su "preserve" (conserva), il che significa che il processore XML non rimuoverà nessuno dei caratteri dello spazio bianco. Altre utili restrizioni sono:
* Replace - il processore XML sostituirà tutti i caratteri degli spazi bianchi con spazi.
    <xsd:whiteSpace value="replace"/>
* Collapse – il processore rimuoverà tutti i caratteri degli spazi bianchi.
    <xsd:whiteSpace value="collapse"/>
* Length, maxLength, minLength — la lunghezza dell'elemento può essere fissa o può avere un intervallo predefinito.
    <xsd:length value="8"/>
    <xsd:minLength value="5"/>
    <xsd:maxLength value="8"/>

#### Indicatori d'ordine

Oltre a porre restrizioni sugli elementi, gli indicatori di ordine possono essere utilizzati per definire in quali elementi di ordine dovrebbero essere presenti.

##### Tutti gli indicatori

L'indicatore <all> specifica per impostazione predefinita che gli elementi figlio possono apparire in qualsiasi ordine e che ogni elemento figlio deve comparire una sola volta e una sola volta:

##### Indicatore di scelta

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

##### Indicatore di sequenza

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

## Documento XML

Il documento XML dell'esempio 4.3 mostra come i nuovi elementi (paese e destinazione) definiti nello schema XML dell'esempio 4.2 sono utilizzati in un documento XML. Si noti che gli elementi figli di <topDestination> possono apparire in qualsiasi ordine a causa dell'indicatore <xsd:all> utilizzato nello schema.
esempio 4.3: Documento XML Document per una relazione 1:1