Home » Articole » Articole » Calculatoare » Dezvoltarea web » XML » Relația unu-la-unu în XML

Relația unu-la-unu în XML

postat în: XML 0

În capitolul anterior, au fost introduse câteva caracteristici noi ale schemelor, documentelor și foilor de stil XML, precum și modul de modelare a unei relații unu-la-mulți. În acest capitol, vom introduce modelarea unei relații unu-la-unu în XML. Vom introduce, de asemenea, mai multe caracteristici ale unei scheme XML.

O relație unu-la-unu (1:1)

Următoarea diagramă arată o relație unu-la-unu și unu-la-mulți. Relația unu-la-unu înregistrează fiecare țară ca o singură destinație de top.

Model de date XML pentru o relație 1:1
Figura 4-1: Model de date pentru o relație 1:1

Schema XML

O relație unu-la-unu (1:1) este reprezentată în modelul de date din Figura 4-1. Adăugarea țării și a destinației la modelul de date permite relația 1:1 numită topDestination. O țară are multe destinații diferite, dar o singură destinație de top. Schema XML din Figura 4-2 arată cum să reprezinte o relație 1:1 într-o schemă XML.

Exemplu de schemă XML

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"> 
<!--
Tour Guide
--> 
 <xsd:element name="tourGuide"> 
  <xsd:complexType> 
   <xsd:sequence> 
    <xsd:element name="country" type="countryDetails" minOccurs="1" maxOccurs="unbounded" /> 
   </xsd:sequence> 
  </xsd:complexType> 
 </xsd:element> 
<!--
Country
--> 
 <xsd:complexType name="countryDetails"> 
  <xsd:sequence> 
   <xsd:element name="countryName" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
   <xsd:element name="population" type="xsd:integer" minOccurs="0" maxOccurs="1" default="0"/> 
   <xsd:element name="continent" minOccurs="0" maxOccurs="1"> 
    <xsd:simpleType> 
     <xsd:restriction base="xsd:string"> 
      <xsd:enumeration value="Asia"/> 
      <xsd:enumeration value="Africa"/> 
      <xsd:enumeration value="Australasia"/> 
      <xsd:enumeration value="Europe"/> 
      <xsd:enumeration value="North America"/> 
      <xsd:enumeration value="South America"/> 
      <xsd:enumeration value="Antarctica"/> 
     </xsd:restriction> 
    </xsd:simpleType> 
   </xsd:element> 
   <xsd:element name="topDestination" type="destinationDetails" minOccurs="0" maxOccurs="1"/> 
   <xsd:element name="destination" type="destinationDetails" minOccurs="0" maxOccurs="unbounded"/> 
  </xsd:sequence> 
 </xsd:complexType> 
<!--
Destination
--> 
 <xsd:complexType name="destinationDetails"> 
  <xsd:all> 
   <xsd:element name="destinationName" type="xsd:string"/> 
   <xsd:element name="description" type="xsd:string"/> 
   <xsd:element name="streetAddress" type="xsd:string" minOccurs="0"/> 
   <xsd:element name="telephoneNumber" type="xsd:string" minOccurs="0"/> 
   <xsd:element name="websiteURL" type="xsd:anyURI" minOccurs="0"/> 
  </xsd:all> 
 </xsd:complexType> 
</xsd:schema>

Figura 4-2: Schema XML pentru o relație unu-la-unu

Elemente noi în schemă

Să examinăm noile elemente și atribute din schema din Figura 4-2.

  • Țara este un tip complex definit în City pentru a reprezenta relația 1:M dintre o țară și orașele sale.
  • Destination este un tip complex definit în Country pentru a reprezenta relația 1:M dintre o țară și numeroasele sale destinații.
  • topDestination este un tip complex definit în Country pentru a reprezenta relația 1:1 dintre o țară și destinația sa de top.

Restricții în schemă

Punerea de restricții asupra elementelor a fost introdusă în capitolul anterior; cu toate acestea, există mai multe restricții potențial utile care pot fi aplicate unui element. Restricțiile pot fi aplicate elementelor și atributelor care afectează modul în care procesorul gestionează caracterele spațiilor albe:

<xsd:element name="streetAddress">
 <xsd:simpleType>
  <xsd:restriction base="xsd:string">
   <xsd:whiteSpace value="preserve"/>
  </xsd:restriction>
 </xsd:simpleType>
</xsd:element>

Constrângeri de spațiu și lungime

Constrângerea whiteSpace este setată la „preserve”, ceea ce înseamnă că procesorul XML nu va elimina niciun caracter de spațiu alb. Alte restricții utile includ următoarele:

  • Replace – procesorul XML va înlocui toate caracterele spațiilor albe cu spații.<xsd:whiteSpace value=”replace”/>
  • Collapse – Procesorul va elimina toate caracterele spațiilor albe.<xsd:whiteSpace value=”collapse”/>
  • Length, maxLength, minLength—lungimea elementului poate fi fixă sau poate avea un interval predefinit.<xsd:length value=”8″/>
    <xsd:minLength value=”5″/>
    <xsd:maxLength value=”8″/>

Indicatori de ordine

Pe lângă introducerea de restricții asupra elementelor, indicatorii de oridne pot fi utilizați pentru a defini în ce ordine elementele ar trebui să apară.

Indicatorul all

Indicatorul <all> specifică implicit că elementele copil pot apărea în orice ordine și că fiecare element copil trebuie să apară o dată și o singură dată:

<xsd:element name="person">
 <xsd:complexType>
  <xsd:all>
   <xsd:element name="firstname" type="xsd:string"/>
   <xsd:element name="lastname" type="xsd:string"/>
  </xsd:all>
 </xsd:complexType>
</xsd:element>
Indicatorul choice

Indicatorul <choice> specifică faptul că poate apărea fie un element copil, fie altul:

<xsd:element name="person">
 <xsd:complexType>
  <xsd:choice>
   <xsd:element name="employee" type="employee"/>
   <xsd:element name="visitor" type="visitor"/>
  </xsd:choice>
 </xsd:complexType>
</xsd:element>
Indicatorul sequence

Indicatorul <sequence> specifică faptul că elementele copil trebuie să apară într-o anumită ordine:

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

Document XML

Documentul XML din Figura 4-3 arată modul în care noile elemente (country și destination) definite în schema XML găsită în Figura 4-2 sunt utilizate într-un document XML. Rețineți că elementele secundare ale <topDestination> pot apărea în orice ordine datorită indicatorului de ordine <xsd:all> utilizat în schemă.

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="newXMLSchema.xsl" media="screen"?>
<tourGuide xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="XMLSchema.xsd">   
<!--
Malaysia
-->   
<country> 
   <countryName>Malaysia</countryName> 
   <population>22229040</population> 
   <continent>Asia</continent> 
   <topDestination> 
    <description>A popular duty-free island north of Penang.</description> 
    <destinationName>Pulau Langkawi</destinationName> 
   </topDestination> 
   <destination> 
    <destinationName>Muzium Di-Raja</destinationName> 
    <description>The original palace of the Sultan</description>
    <streetAddress>122 Muzium Road</streetAddress>
    <telephoneNumber>48494030</telephoneNumber>
    <websiteURL>www.muziumdiraja.com</websiteURL> 
   </destination> 
   <destination> 
    <destinationName>Kinabalu National Park</destinationName> 
    <description>A national park</description>
    <streetAddress>54 Ocean View Drive</streetAddress>
    <telephoneNumber>4847101</telephoneNumber>
    <websiteURL>www.kinabalu.com</websiteURL> 
   </destination> 
  </country>
<!--
Belize
--> 
  <country> 
   <countryName>Belize</countryName> 
   <population>249183</population> 
   <continent>South America</continent> 
   <topDestination> 
    <destinationName>San Pedro</destinationName> 
    <description>San Pedro is an island off the coast of Belize</description> 
   </topDestination> 
   <destination> 
    <destinationName>Belize City</destinationName> 
    <description>Belize City is the former capital of Belize</description>
    <websiteURL>www.belizecity.com</websiteURL> 
   </destination> 
   <destination> 
    <destinationName>Xunantunich</destinationName> 
    <description>Mayan ruins</description>
    <streetAddress>4 High Street</streetAddress>
    <telephoneNumber>011770801</telephoneNumber> 
   </destination> 
  </country> 
  </tourGuide>

Figura 4-3: Document XML pentru o relație unu-la-unu

Rezumat

Designerii de scheme pot impune restricții asupra lungimii elementelor și asupra modului în care procesorul gestionează spațiul alb. Designerii de scheme pot specifica, de asemenea, valori fixe sau implicite pentru un element. Indicatorii de ordine pot fi utilizați pentru a specifica ordinea în care trebuie să apară elementele într-un document XML.

(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)

Războiul electronic și inteligența artificială
Războiul electronic și inteligența artificială

Această carte este ideală pentru profesioniștii în afaceri, strategii militari, și publicul academic.

Nu a fost votat $1.99$5.19 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Întreţinerea şi repararea calculatoarelor
Întreţinerea şi repararea calculatoarelor

Vrei să înveți cum funcționează un calculator și cum îl poți repara sau întreține singur?

Nu a fost votat $0.00 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Introducere în Business Intelligence
Introducere în Business Intelligence

O resursă esențială pentru toți cei interesați de analiza datelor și de optimizarea proceselor de afaceri.

Nu a fost votat $2.99$5.37 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *