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

Relația unu-la-mulți în XML

postat în: XML 0

Într-o relație unu-la-mulți, un obiect poate face referire la mai multe instanțe ale altuia. Un model este mapat într-o schemă prin care fiecare entitate model de date devine un tip de element complex. Fiecare atribut model de date devine un tip de element simplu, iar relația unu-la-mulți este înregistrată ca o secvență.

Prezentarea 1: Model de date pentru relația 1:m

În capitolul anterior, am introdus o schemă XML simplă, un document XML și o foaie de stil XML pentru un model de date cu o singură entitate. Acum includem mai multe caracteristici ale fiecăruia dintre aspectele cheie ale XML.

Implementarea unei relații unu-la-mulți

Există trei tehnici diferite pentru implementarea unei relații unu-la-mulți:

Relația de izolare: Este definită o structură în care un element este cuprins în altul. Elementul „conținut” încetează să mai existe atunci când elementul „container” este eliminat. De exemplu, în cazul în care un oraș are multe hoteluri, hotelurile sunt „cuprinse” în oraș.

  <cityDetails>
    <cityName>Belmopa</cityName>
    <hotelDetails>
      <hotelName>Bull Frog Inn</hotelName>
    </hotelDetails>
    <hotelDetails>
      <hotelName>Pook's Hill Lodge</hotelName>
    </hotelDetails>
  </cityDetails>
  <cityDetails>
    <cityName>Kuala Lumpur</cityName>
    <hotelDetails>
      <hotelName>Pan Pacific Kuala Lumpur</hotelName>
    </hotelDetails>
    <hotelDetails>
      <hotelName>Mandarin Oriental Kuala Lumpur</hotelName>
    </hotelDetails>
  </cityDetails>

Relații intra-documente: Într-un caz în care aveți un oraș cu multe hoteluri, mai degrabă decât un oraș care conține hoteluri, un hotel va avea o „locație în” relație cu un oraș. Un id de oraș este folosit ca referință pentru elementul hotel. Prin urmare, mai degrabă decât hotelurile care sunt cuprinse în oraș, acum fac doar referință la identitatea orașului prin atributul cityRef. Acest lucru este foarte similar cu o cheie străină dintr-o bază de date relațională.

  <cityDetails>
   <city ID="c1">
    <cityName>Belmopa</cityName>
   </city ID>
   <city ID="c2">
    <cityName>Kuala Lumpur</cityName>
   </city ID>
  </cityDetails>
  <hotelDetails>
    <hotel cityRef="c1">
      <hotelName>Bull Frog Inn</hotelName>
    </hotel>
    <hotel cityRef="c2">
      <hotelName>Pan Pacific Kuala Lumpur</hotelName>
    </hotel>
  </hotelDetails>

Relații inter-documente: Relația inter-documente seamănă mult cu relația intra-document. De asemenea, folosește atributele id și idRef pentru a de un atribut unui atribut părinte. Diferența este că relația inter-document este utilizată atunci când tabelele, cum ar fi tabelele orașului și hotelului, s-ar putea găsi în diferite sisteme de fișiere sau spații de tabele.

  <city id="c1">
    <cityName>Belmopa</cityName>
  </city>
  <city id="c2">
    <cityName>Kuala Lumpur</cityName>
  </city>
  <hotel>
    <city href="cityDetails.xml#c1"/>
    <hotelName>Bull Frog Inn</hotelName>
  </hotel>
  <hotel>
    <city href="cityDetails.xml#c2"/>
    <hotelName>Pan Pacific Kuala Lumpur</hotelName>
  </hotel>

Prezentarea 2: Listă de verificare pentru a decide ce tehnică să utilizați:

Tehnică Transmiterea datelor Flexibilitate Ușurință în utilizare
Izolare Excelent Corect Excelent
Intra-document Bun Bun Bun
Inter-document Corect Excelent Corect

Schema XML

Unele dintre tipurile de date încorporate pentru o schemă XML au fost introduse în capitolul anterior, dar totuși, există mai multe care sunt foarte utile, cum ar fi anyURI, date, time, year și month. În plus față de tipurile de date încorporate, un tip de date personalizat poate fi definit de către proiectantul schemei pentru a accepta date de intrare specifice. După cum am aflat, datele sunt definite în documente XML folosind etichete de marcare definite într-o schemă XML. Cu toate acestea, este posibil ca unele elemente să nu aibă valori. O etichetă de element goală poate fi utilizată pentru a aborda această situație. O etichetă de element goală (și orice etichetă de marcare personalizată) poate conține atribute care adaugă informații suplimentare despre etichetă fără a adăuga text suplimentar elementului. Un exemplu va fi prezentat în capitol, folosind atribute într-o etichetă de element goală.

Elemente goale cu atribute în document XML

Elementele pot avea diferite tipuri de conținut în funcție de modul în care fiecare element este definit în schema XML. Diferitele tipuri sunt conținutul elementelor, conținutul mixt, conținutul simplu și conținutul gol. Un element XML constă din tot, de la începutul etichetei elementului până la închiderea acelei etichete element.

  • Un element cu conținut de element este elementul rădăcină – totul dintre etichetele de deschidere și de închidere constă numai din elemente.
Exemplu: <tourGuide>
    :
</tourGuide>
  • Un element de conținut mixt este unul care are text și, precum și alte elemente între etichetele sale de deschidere și de închidere.
Exemplu: <restaurant>My favorite restaurant is
<restaurantName>Provino’s Italian Restaurant</restaurantName>
    :
</restaurant>

Un element de conținut simplu este unul care conține doar text între etichetele de deschidere și de închidere.

Exemplu: <restaurantName>Provino’s Italian Restaurant</restaurantName>

Un element de conținut gol, care este un element gol, este unul care nu conține nimic între etichetele sale de deschidere și de închidere (sau eticheta de element este deschisă și încheiată cu o singură etichetă, utilizând / înainte de închiderea etichetei de deschidere.

Exemplu: <hotelPicture filename=”pan_pacific.jpg” size=”80″
        value=”Image of Pan Pacific”/>

Un element gol este util atunci când nu este nevoie să-i specificăm conținutul sau când informațiile care descriu elementul sunt corecte. Două exemple au ilustrat acest concept. În primul rând, un element de imagine care face referire la sursa unei imagini cu atributele sale, dar nu are nevoie să precizeze conținutul textului. În al doilea rând, numele proprietarului este fixat pentru o companie, astfel că poate specifica informațiile aferente din eticheta proprietarului utilizând atribute. Un atribut este metainformația, informație care descrie conținutul elementului.

Utilizarea XML de către Banca Centrală Europeană

<?xml version="1.0" encoding="UTF-8"?>
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" 
xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
    <gesmes:subject>Reference rates</gesmes:subject>
    <gesmes:Sender>
        <gesmes:name>European Central Bank</gesmes:name>
    </gesmes:Sender>
    <Cube>
        <Cube time="2004-05-28">
            <Cube currency="USD" rate="1.2246"/>
            <Cube currency="JPY" rate="135.77"/>
            <Cube currency="DKK" rate="7.4380"/>
            <Cube currency="GBP" rate="0.66730"/>
            <Cube currency="SEK" rate="9.1150"/>
            <Cube currency="CHF" rate="1.5304"/>
            <Cube currency="ISK" rate="87.72"/>
            <Cube currency="NOK" rate="8.2120"/>
        </Cube>
    </Cube>

<!--For the sake of illustration, some of the currencies are omitted 
in the preceding code.Banks, consultants, currency traders, 
and firms involved in international trade are the major users 
of this information.-->

</gesmes:Envelope>

Tipuri de date pentru schema XML

Unele dintre tipurile de date utilizate în mod obișnuit, cum ar fi șir, zecimal, întreg și boolean, sunt introduse în capitolul 2. Următoarele sunt câteva alte tipuri de date care sunt utile.

Prezentarea 3: Alte tipuri de date:

Tip Format Exemplu Cometariu
year YYYY 1999
month YYYY-MM 1999-03 Tipul lunii este utilizat atunci când ziua este irelevantă pentru elementul de date
time hh:mm:ss.sss cu indicator opțional de fus orar 20:14:05 Z pentru UTC sau unul dintre –hh:mm sau +hh:mm pentru a indica diferența față de UTC. Acest tip de oră este utilizat atunci când doriți ca conținutul să reprezinte o anumită oră a zilei care reapare în fiecare zi, cum ar fi 16:15.
date YYYY-MM-DD 1999-03-14
anyURI Numele de domeniu specificat începând cu http:// http://www.panpacific.com

Mai multe tipuri de date

Pe lângă tipurile de date încorporate, pot fi create tipuri de date personalizate, după cum este necesar. Un tip de date personalizat poate fi un tip simplu sau un tip complex. Pentru simplitate, creăm un tip de date personalizat, care este un tip simplu, ceea ce înseamnă că elementul nu conține alte elemente sau atribute. Conține numai text. Crearea unui tip simplu personalizat începe de la utilizarea unui tip simplu încorporat și aplicarea acestuia cu restricții sau fațete, pentru a limita valorile acceptabile ale etichetei. Un tip simplu personalizat poate fi fără nume sau cu nume. Dacă tipul simplu personalizat trebuie să fie utilizat o singură dată, atunci are sens să nu-l numim; astfel, acel tip personalizat va fi utilizat numai acolo unde este definit. Deoarece un tip personalizat cu nume poate fi menționat (după numele său), acel tip personalizat poate fi utilizat ori de câte ori este necesar.

Un tipar poate fi folosit pentru a specifica exact cum ar trebui să arate conținutul elementului. De exemplu, s-ar putea dori să specificați formatul unui număr de telefon, al unui cod poștal sau al unui cod de produs. Având un model definit pentru anumite elemente, datele schimbate vor fi uniforme, iar valorile vor fi consistente atunci când sunt stocate într-o bază de date. O modalitate utilă de a seta modele este prin Regex, care va fi discutat în capitolele ulterioare.

Exemple de schemă

Următorul exemplu este o schemă care extinde schema introdusă în capitolul anterior pentru a include o relație de la unul la mulți dintre oraș și hoteluri, cu două exemple de tipuri de date personalizate.

Prezentarea 1: Model de date pentru relația 1:m

Important, acesta este un exemplu continuu, așa că noul cod este adăugat la exemplul ultimului capitol!

Exemplu de izolare

 <?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="city" type="cityDetails" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <!--This will contain the City details-->

  <xsd:complexType name="cityDetails">
    <xsd:sequence>
      <xsd:element name="cityName" type="xsd:string"/>
      <xsd:element name="adminUnit" type="xsd:string"/>
      <xsd:element name="country" type="xsd:string"/>

      <!--The element Continent uses a Nameless Custom Simple Type-->

      <xsd:element name="continent">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Asia"/>
            <xsd:enumeration value="Africa"/>
            <xsd:enumeration value="Australia"/>
            <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="population" type="xsd:integer"/>
      <xsd:element name="area" type="xsd:integer"/>
      <xsd:element name="elevation" type="xsd:integer"/>
      <xsd:element name="longitude" type="xsd:decimal"/>
      <xsd:element name="latitude" type="xsd:decimal"/>
      <xsd:element name="description" type="xsd:string"/>
      <xsd:element name="history" type="xsd:string"/>
      <xsd:element name="hotel" type="hotelDetails" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <!-- This will contain the Hotel details-->

  <xsd:complexType name="hotelDetails">
    <xsd:sequence>
      <xsd:element name="hotelName" type="xsd:string"/>
      <xsd:element name="hotelPicture"/>
      <xsd:element name="streetAddress" type="xsd:string"/>
      <xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="phone" type="xsd:string"/>
      <xsd:element name="emailAddress" type="emailAddressType" minOccurs="0"/>

      <!-- The custom simple type, emailAddressType, defined in the xsd:complexType, 
           is used as the type of the emailAddress element. -->

      <xsd:element name="websiteURL" type="xsd:anyURI" minOccurs="0"/>
      <xsd:element name="hotelRating" type="xsd:integer"/>
    </xsd:sequence>
  </xsd:complexType>

  <!-- NOTE: Since postalCode, emailAddress, and websiteURL are not standard elements that
          must be provided, the minOccurs=”0” indicates that they are optional -->

  <!--This is a Named Custom SimpleType that is called from Hotel whenever someone types in an 
      email address-->

  <xsd:simpleType name="emailAddressType">
    <xsd:restriction base="xsd:string">

      <!--You can learn more about this pattern by reading the Regex section.-->

      <xsd:pattern value="\w+\W*\w*@{1}\w+\W*\w+.\w+.*\w*"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

Exemplu intra-document

 <?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="city" type="cityDetails" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <!--This will contain the City details-->

  <xsd:complexType name="cityDetails">
    <xsd:sequence>
      <xsd:element name="cityID" type="xsd:ID"/>
      <xsd:element name="cityName" type="xsd:string"/>
      <xsd:element name="adminUnit" type="xsd:string"/>
      <xsd:element name="country" type="xsd:string"/>

      <!--The element Continent uses a Nameless Custom Simple Type-->

      <xsd:element name="continent">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Asia"/>
            <xsd:enumeration value="Africa"/>
            <xsd:enumeration value="Australia"/>
            <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="population" type="xsd:integer"/>
      <xsd:element name="area" type="xsd:integer"/>
      <xsd:element name="elevation" type="xsd:integer"/>
      <xsd:element name="longitude" type="xsd:decimal"/>
      <xsd:element name="latitude" type="xsd:decimal"/>
      <xsd:element name="description" type="xsd:string"/>
      <xsd:element name="history" type="xsd:string"/>
     </xsd:sequence>
  </xsd:complexType>

  <!-- This will contain the Hotel details-->

  <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="hotel" type="hotelDetails" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  <xsd:complexType name="hotelDetails">
    <xsd:sequence>
      <xsd:element name="cityRef" type="xsd:IDRef"/>
      <xsd:element name="hotelName" type="xsd:string"/>
      <xsd:element name="hotelPicture"/>
      <xsd:element name="streetAddress" type="xsd:string"/>
      <xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="phone" type="xsd:string"/>
      <xsd:element name="emailAddress" type="emailAddressType" minOccurs="0"/>

      <!-- The custom simple type, emailAddressType, defined in the xsd:complexType, 
           is used as the type of the emailAddress element. -->

      <xsd:element name="websiteURL" type="xsd:anyURI" minOccurs="0"/>
      <xsd:element name="hotelRating" type="xsd:integer"/>
    </xsd:sequence>
  </xsd:complexType>

  <!-- NOTE: Since postalCode, emailAddress, and websiteURL are not standard elements that
          must be provided, the minOccurs=”0” indicates that they are optional -->

  <!--This is a Named Custom SimpleType that is called from Hotel whenever someone types in an 
      email address-->

  <xsd:simpleType name="emailAddressType">
    <xsd:restriction base="xsd:string">

      <!--You can learn more about this pattern by reading the Regex section.-->

      <xsd:pattern value="\w+\W*\w*@{1}\w+\W*\w+.\w+.*\w*"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

Exemplu inter-document

<?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="city" type="cityDetails" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <!--This will contain the City details-->

  <xsd:complexType name="cityDetails">
    <xsd:sequence>
      <xsd:element name="cityID" type="xsd:ID"/>
      <xsd:element name="cityName" type="xsd:string"/>
      <xsd:element name="adminUnit" type="xsd:string"/>
      <xsd:element name="country" type="xsd:string"/>

      <!--The element Continent uses a Nameless Custom Simple Type-->

      <xsd:element name="continent">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Asia"/>
            <xsd:enumeration value="Africa"/>
            <xsd:enumeration value="Australia"/>
            <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="population" type="xsd:integer"/>
      <xsd:element name="area" type="xsd:integer"/>
      <xsd:element name="elevation" type="xsd:integer"/>
      <xsd:element name="longitude" type="xsd:decimal"/>
      <xsd:element name="latitude" type="xsd:decimal"/>
      <xsd:element name="description" type="xsd:string"/>
      <xsd:element name="history" type="xsd:string"/>
     </xsd:sequence>
  </xsd:complexType>
  <!-- This will contain the Hotel details-->

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

  <!--Tour Guide 2-->

  <xsd:element name="tourGuide2">
  <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="hotel" type="hotelDetails" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  <xsd:complexType name="hotelDetails">
    <xsd:sequence>
      <xsd:element name="cityRef" type="xsd:IDRef"/>
      <xsd:element name="hotelName" type="xsd:string"/>
      <xsd:element name="hotelPicture"/>
      <xsd:element name="streetAddress" type="xsd:string"/>
      <xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="phone" type="xsd:string"/>
      <xsd:element name="emailAddress" type="emailAddressType" minOccurs="0"/>

      <!-- The custom simple type, emailAddressType, defined in the xsd:complexType, 
           is used as the type of the emailAddress element. -->

      <xsd:element name="websiteURL" type="xsd:anyURI" minOccurs="0"/>
      <xsd:element name="hotelRating" type="xsd:integer"/>
    </xsd:sequence>
  </xsd:complexType>

  <!-- NOTE: Since postalCode, emailAddress, and websiteURL are not standard elements that
          must be provided, the minOccurs=”0” indicates that they are optional -->

  <!--This is a Named Custom SimpleType that is called from Hotel whenever someone types in an 
      email address-->

  <xsd:simpleType name="emailAddressType">
    <xsd:restriction base="xsd:string">

      <!--You can learn more about this pattern by reading the Regex section.-->

      <xsd:pattern value="\w+\W*\w*@{1}\w+\W*\w+.\w+.*\w*"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

Referire la Capitolul 2 – O singură entitate pentru pași în utilizarea NetBeans pentru a crea schema XML de mai sus.

Document XML

Atribute

  • Structura validă de denumire a elementelor se aplică și pentru numele atributelor
  • Într-un anumit element, numele tuturor atributelor trebuie să fie unice
  • Un atribut nu poate conține simbolul „<” Șirul de caractere „&lt;” poate fi folosit pentru a-l reprezenta
  • Fiecare atribut trebuie să aibă un nume și o valoare. (adică <hotelPicture filename=“pan_pacific.jpg” />, filename este numele și pan_pacific.jpg este valoarea)
  • Dacă valoarea atribuită în sine conține un șir citat, tipul ghilimelelor trebuie să difere de cele utilizate pentru a cuprinde întreaga valoare. (De exemplu, dacă se utilizează ghilimele duble pentru a cuprinde întreaga valoare, atunci utilizați ghilimele simple pentru șir: <name familiar=”’Jack’”>John Smith</name>)
  <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="city_hotel.xsl"?>
<tourGuide xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="TourGuide3.xsd">

    <!--This is where you define the first city and all its attributes-->

    <city>
        <cityName>Belmopa</cityName>
        <adminUnit>Cayo</adminUnit>
        <country>Belize</country>

        <!--The content of the element “continent” must be one of the values specified in the set of 
            acceptable values in the XML schema for the element “continent”-->

        <continent>South America</continent>
        <population>11100</population>
        <area>5</area>
        <elevation>130</elevation>
        <longitude>12.3</longitude>
        <latitude>123.4</latitude>
        <description>Belmopan is the capital of Belize</description>
        <history>Belmopan was established following devastation of the former capitol, Belize City ,
            by Hurricane Hattie in 1965. High ground and open space influenced the choice and
            ground-breaking began in 1966. By 1970 most government offices and operations had
            already moved to the new location. </history>

        <!--This is where you would store the name of the Hotel and its attributes-->

        <!--Notice that the hotelDetails elements did not contain the postalCode entity. The document is 
            still valid, because postalCode is optional-->

        <hotel>
            <hotelName>Bull Frog Inn</hotelName>

            <!--The empty element, hotelPicture, contains attributes: “filename”, “size”, and “value”, to 
                                indicate the name and location of the image file, the desired size, and 
                                the description of the empty element, hotelPicture-->

            <hotelPicture filename="bull_frog_inn.jpg" size="80" value="Image of Bull Frog Inn"
                imageURL="http://www.bullfroginn.com"/>
            <streetAddress>25 Half Moon Avenue</streetAddress>
            <phone>501-822-3425</phone>

            <!--The emailAddress elements must match the pattern specified in the schema to be valid -->

            <emailAddress>bullfrog@btl.net</emailAddress>
            <websiteURL>http://www.bullfroginn.com/</websiteURL>
            <hotelRating>4</hotelRating>
        </hotel>

        <!--This is where you put the information for another Hotel-->

        <hotel>
            <hotelName>Pook's Hill Lodge</hotelName>
            <hotelPicture filename="pook_hill_lodge.jpg" size="80" value="Image of Pook's Hill
                Lodge" imageURL="http://www.global-travel.co.uk/pook1.htm"/>
            <streetAddress>Roaring River</streetAddress>
            <phone>440-126-854-1732</phone>
            <emailAddress>info@global-travel.co.uk</emailAddress>
            <websiteURL>http://www.global-travel.co.uk/pook1.htm</websiteURL>
            <hotelRating>3</hotelRating>
        </hotel>
    </city>

    <!--This is where you define another city and its attributes-->

    <city>
        <cityName>Kuala Lumpur</cityName>
        <adminUnit>Selangor</adminUnit>
        <country>Malaysia</country>
        <continent>Asia</continent>
        <population>1448600</population>
        <area>243</area>
        <elevation>111</elevation>
        <longitude>101.71</longitude>
        <latitude>3.16</latitude>
        <description>Kuala Lumpur is the capital of Malaysia and is the largest city in the nation.
        </description>
        <history>The city was founded in 1857 by Chinese tin miners and superseded Klang. In 1880
            the British government transferred their headquarters from Klang to Kuala Lumpur , and
            in 1896 it became the capital of Malaysia. </history>

        <!--This is where you put the information for a Hotel-->

        <hotel>
            <hotelName>Pan Pacific Kuala Lumpur </hotelName>
            <hotelPicture filename="pan_pacific.jpg" size="80" value="Image of Pan Pacific"
             imageURL="http://www.malaysia-hotels-discount.com/hotels/kualalumpur/pan_pacific_hotel/index.shtml"/>
            <streetAddress>Jalan Putra</streetAddress>
            <postalCode>50746</postalCode>
            <phone>1-866-260-0402</phone>
            <emailAddress>president@panpacific.com</emailAddress>
            <websiteURL>http://www.panpacific.com</websiteURL>
            <hotelRating>5</hotelRating>
        </hotel>

        <!--This is where you put the information for another Hotel-->

        <hotel>
            <hotelName>Mandarin Oriental Kuala Lumpur </hotelName>
            <hotelPicture filename="mandarin_oriental.jpg" size="80" value="Image of Mandarin
                Oriental" imageURL="http://www.mandarinoriental.com/kualalumpur"/>
            <streetAddress>Kuala Lumpur City Centre</streetAddress>
            <postalCode>50088</postalCode>
            <phone>011-603-2380-8888</phone>
            <emailAddress>mokul-sales@mohg.com</emailAddress>
            <websiteURL>http://www.mandarinoriental.com/kualalumpur/</websiteURL>
            <hotelRating>5</hotelRating>
        </hotel>
    </city>
</tourGuide>

Referire la Capitolul 2 – O singură entitate pentru pașii utilizării NetBeans pentru a crea documentul XML de mai sus.

Foaie de stil XML

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>    
        <xsl:template match="/">
            <html>
                <head>
                    <title>Tour Guide</title>
                </head>
                <body>
                    <h2>Cities</h2>
                    <xsl:apply-templates select="tourGuide"/>
                </body>
            </html>
        </xsl:template>
        <xsl:template match="tourGuide">
            <xsl:for-each select="city">
                <xsl:text>City: </xsl:text>
                <xsl:value-of select="cityName"/>
                <br/>
                <xsl:text>Population: </xsl:text>
                <xsl:value-of select="population"/>
                <br/>
                <xsl:text>Country: </xsl:text>
                <xsl:value-of select="country"/>
                <br/>
                
                <xsl:for-each select="hotel">
                    <xsl:text>Hotel: </xsl:text>
                    <xsl:value-of select="hotelName"/>
                    <br/>
                </xsl:for-each>
               
               <br/>
            </xsl:for-each>     
        </xsl:template>    
  </xsl:stylesheet>

Rezumat

Pe lângă tipurile simple de date încorporate (de exemplu, year, month, time, anyURI și date) proiectanții de scheme pot crea tipuri de date personalizate pentru a se potrivi nevoilor lor. Un tip de date personalizat simplu poate fi creat dintr-unul dintre tipurile de date încorporate prin aplicarea unor restricții, fațete (enumerări care specifică un set de valori acceptabile) sau modele specifice.Un element gol nu conține niciun text, cu toate acestea, poate conține atribute pentru a furniza informații suplimentare despre acel element.

Aspectul de prezentare pentru afișarea unei pagini HTML poate include cod pentru etichetele de stil, culoarea de fundal, dimensiunea fontului, greutatea fontului și alinierea. Etichetele de tabel pot fi utilizate pentru a organiza aspectul conținutului într-o pagină HTML, iar imaginile pot fi afișate și folosind o etichetă de imagine.

Include texte traduse și adaptate din Wikibooks de Nicolae Sfetcu

Telelucru (Telework)
Telelucru (Telework)

Telelucrul, ca un nou mod de a lucra prin efectuarea unei activităţi (forme de muncă) flexibile în timp şi la distanţă, utilizând tehnologia informaţională şi comunicaţiile avansate, se concretizează în teleactivităţi şi teleservicii. În ultimii ani, s-au dezvoltat rapid noi … Citeşte mai mult

Nu a fost votat $0,00 Selectează opțiunile
Lucrul cu baze de date
Lucrul cu baze de date

Colecția ȘTIINȚA INFORMAȚIEI Lucrul cu bazele de date este astăzi printre cele mai căutate abilități IT. Acum puteți obține o bază de plecare în proiectarea și implementarea bazelor de date cu o abordare practică, ușor de înțeles. ”Lucrul cu baze … Citeşte mai mult

Nu a fost votat $3,99$7,18 Selectează opțiunile
Big Data
Big Data

Odată cu creșterea volumului de date pe Internet, în media socială, cloud computing, dispozitive mobile și date guvernamentale, Big Data devine în același timp o amenințare și o oportunitate în ceea ce privește gestionarea și utilizarea acestor date, menținând în … Citeşte mai mult

Nu a fost votat $2,99$6,99 Selectează opțiunile

Faci un comentariu sau dai un răspuns?

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