Home » Articole » Articole » Calculatoare » Dezvoltarea web » XML » XML: Eticheta xsd:import

XML: Eticheta xsd:import

postat în: XML 0

Eticheta <xsd:import> este utilizată pentru a importa un document de schemă și spațiul de nume asociat cu tipurile de date definite în documentul de schemă. Acest lucru permite unui document de schemă XML să facă referire la o bibliotecă de tipuri folosind nume de spații de nume (prefixe). Să aruncăm o privire mai atentă la un document de instanță XML simplu pentru un magazin care utilizează aceste nume multiple de spații de nume:

<?xml version="1.0" encoding="UTF-8"?>
<store:SimpleStore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opentourism.org/xmltext/SimpleStore.xsd"
  xmlns:store="http://www.opentourism.org/xmltext/Store"
  xmlns:MGR="http://www.opentourism.org/xmltext/CoreSchema">
  <!-- Observați declarațiile de spațiu de nume definite în mod explicit, depozitul de prefixe
	reprezintă tipuri de date definite în spațiul de nume
     <code>http://www.opentourism.org/xmltext/Store.xml</code> și 
     prefixul MGR reprezintă tipuri de date definite în spațiul de nume
     <code>http://www.opentourism.org/xmltext/CoreSchema</code>. 
     De asemenea, observați că nu există o declarație implicită de spațiu de nume - fiecare element
	și atributul trebuie să fie asociat cu un spațiu de nume (vom vedea că aceasta este
	necesar dacă examinăm documentul schema)  
-->
  <store:Store>
    <MGR:Name xmlns:MGR=" http://www.opentourism.org/xmltext/CoreSchema ">
      <MGR:FirstName>Michael</MGR:FirstName>
      <MGR:MiddleNames>Jay</MGR:MiddleNames>
      <MGR:LastName>Fox</MGR:LastName>
    </MGR:Name>
    <store:StoreName>The Gap</store:StoreName>
    <store:StoreAddress>
      <store:Street>86 Nowhere Ave.</store:Street>
      <store:City>Los Angeles</store:City>
      <store:State>CA</store:State>
      <store:ZipCode>75309</store:ZipCode>
    </store:StoreAddress>
    <!-- More store information would go here. -->
  </store:Store>
  <!-- More stores would go here. -->
</store:SimpleStore>

Figura 7 Document de instanță XML

Să ne uităm la documentul de schemă și să vedem cum a fost folosită eticheta <xsd:import> pentru a importa tipuri de date dintr-o bibliotecă de tipuri (document de schemă extern).

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.opentourism.org/xmltext/Store.xml"
  xmlns:MGR="http://www.opentourism.org/xmltext/CoreSchema"
  targetNamespace="http://www.opentourism.org/xmltext/Store.xml" elementFormDefault="qualified">
  <!-- Prefixul MGR este legat de următorul nume de spațiu de nume:
	<code>http://www.opentourism.org/xmltext/CoreSchema</code>
	Documentul de schemă managerTypeLib.xsd este importat prin asocierea
	schemei cu <code>http://www.opentourism.org/xmltext/CoreSchema</code>
	numele spațiului de nume, care a fost legat de prefixul MGR.
	Atributul elementFormDefault are valoarea „calificat” care indică faptul că
	un document de instanță XML trebuie să utilizeze nume calificate pentru fiecare element (implicit
	spațiul de nume nu poate fi folosit)  
-->
  <!-- Spațiul de nume țintă și spațiul de nume implicit sunt aceleași  -->
  <xsd:import namespace="http://www.opentourism.org/xmltext/CoreSchema"
    schemaLocation="ManagerTypeLib.xsd"/>
  <xsd:element name="SimpleStore">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Store" type="StoreType" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="StoreType">
    <xsd:sequence>
      <xsd:element ref="MGR:Name"/>
      <xsd:element name="StoreName" type="xsd:string"/>
      <xsd:element name="StoreAddress" type="StoreAddressType"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="StoreAddressType">
    <xsd:sequence>
      <xsd:element name="Street" type="xsd:string"/>
      <xsd:element name="City" type="xsd:string"/>
      <xsd:element name="State" type="xsd:string"/>
      <xsd:element name="ZipCode" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

Figura 8: Schema XML

La fel ca eticheta include și eticheta redefine, eticheta import este un alt mijloc de încorporare a oricăror tipuri de date dintr-un document de schemă extern într-un alt document de schemă și trebuie să apară înainte de orice declarație de element sau atribut. Aceste mecanisme sunt importante atunci când schemele XML sunt modulare și bibliotecile de tipuri sunt menținute și utilizate în mai multe documente de schemă.

Când întregul este mai mare decât suma părților sale: Modularizarea schemei

Acum că am acoperit toate cele trei metode de încorporare a schemelor XML externe, să luăm în considerare importanța acestor mecanisme. Așa cum este tipic pentru majoritatea codului de programare, redundanța este descurajată; acest lucru este valabil și pentru definițiile personalizate ale tipurilor de date. Dacă există deja un tip de date personalizat care poate fi aplicat unui element din documentul dvs. de schemă, nu are sens să utilizați acest tip de date în loc să îl creați din nou în noul document de schemă? Mai mult, dacă știți că un singur tip de date poate fi reutilizat pentru mai multe aplicații, nu ar trebui să aveți o metodă de referință la acel tip de date atunci când aveți nevoie de el?

Ideea din spatele schemelor modulare este să examinați ceea ce face schema dvs., să determinați ce tipuri de date sunt utilizate frecvent într-o formă sau alta și să dezvoltați o bibliotecă de tipuri. Pe măsură ce nevoile dvs. de scheme mai complexe cresc, puteți continua să adăugați la bibliotecă, să reutilizați tipuri de date din biblioteca de tipuri și să redefiniți acele tipuri de date după cum este necesar. Un exemplu de reutilizare ar fi o schemă pentru informații despre clienți – diferite departamente ar folosi scheme diferite, deoarece ar avea nevoie doar de informații parțiale ale clienților. Cu toate acestea, majoritatea, dacă nu toate, departamentele ar avea nevoie de unele informații specifice despre clienți, cum ar fi numele și informațiile de contact, care ar putea fi încorporate în documentele individuale ale schemei departamentale.

Modularizarea schemei este o „cea mai bună practică”. Prin menținerea unei biblioteci de tipuri și reutilizarea și redefinirea tipurilor din biblioteca de tipuri, vă puteți asigura că documentele cu schema XML nu devin copleșitoare și dificil de citit. Lizibilitatea este importantă, deoarece este posibil să nu fiți singurul care folosește aceste scheme și este important ca alții să vă înțeleagă cu ușurință documentele schemei.

„Alege, dar alege cu înțelepciune…”: Alternative de schemă

Până acum am discutat doar schemele XML așa cum sunt definite de World Wide Web Consortium (W3C). Cu toate acestea, există și alte metode de definire a datelor conținute într-un document cu instanță XML, dar vom menționa doar cele două alternative cele mai populare și cunoscute: Document Type Definition (DTD) și Relax NG Schema.

Vom acoperi DTD-urile în capitolul următor. Schema Relax NG este o schemă mai nouă și are multe dintre aceleași caracteristici pe care le are schema W3C XML; Relax NG pretinde, de asemenea, că este mai simplu și mai ușor de învățat, dar acest lucru este foarte subiectiv.

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

Ghid WordPress pentru începători
Ghid WordPress pentru începători

Descoperă arta gestionării site-urilor web cu WordPress!

Nu a fost votat Interval de prețuri: 13.84 lei până la 25.36 lei Citește mai mult
Ghidul Google SEO
Ghidul Google SEO

O resursă esențială pentru orice proprietar de site, specialist în marketing digital sau antreprenor online.

Nu a fost votat 0.00 lei 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 Interval de prețuri: 13.84 lei până la 24.85 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.


Descoperă mai multe la MultiMedia

Abonează-te ca să primești ultimele articole prin email.

Lasă un răspuns

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