E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj spletnih aplikacij > XML > Lastnosti

Prijava

Lastnosti

Označevalni jeziki (Markup Languages)

 

Prednik označevalnih jezikov je GML (General Markup Language), ki ga je razvil IBM. Ta jezik je bil osnova za nastanek SGML (Standard General Markup Language), ki se uporablja za delo z množico dokumentov in drugimi besedili.

Tudi HTML (Hyper Text Markup Language) temelji na jeziku SGML.

XML (Extensive Markup Language) ali razširljiv označevalni jezik je univerzalen standard za zapis podatkov. Jezik XML ponuja enostaven, nazoren, a kljub temu izčrpen opis strukturiranih podatkov za poljubno aplikacijo na standarden in skladen način.

 

Dodatni viri za XML

 

Poglejte si še dodatne vire za učenje XML:

XML: http://www.w3schools.com/xml/default.asp

XML DOM: http://www.w3schools.com/dom/dom_parser.asp

XSL: http://www.w3schools.com/xsl/xsl_languages.asp

XSL-FO: http://www.w3schools.com/xslfo/default.asp

XPath: http://www.w3schools.com/xpath/default.asp

XQuery: http://www.w3schools.com/xquery/default.asp

Xlink: http://www.w3schools.com/xlink/default.asp

DTD:  http://www.w3schools.com/dtd/default.asp

XML Shema: http://www.w3schools.com/schema/default.asp

XForms: http://www.w3schools.com/xforms/default.asp

SOAP: http://www.w3schools.com/soap/default.asp

WSDL: http://www.w3schools.com/wsdl/default.asp

Spletne storitve: http://www.w3schools.com/webservices/default.asp

 

Standard XML najdete na:

            http://www.w3.org/XML/

Standard DOM najdete na:

            http://www.w3.org/DOM/

 

Primer XML


<prireditev>

  <naziv>Glasbeni september</naziv>

  <termin>18.09.2000 do 29.09.2000</termin>

  <lokacija>Območje mesta Maribor</lokacija>

  <organizator>SNG Maribor</organizator>

  <zvrst>koncert</zvrst>

</prireditev>

 

Format RSS (Rich Site Summary) - XML format za izmenjavo novic

 

 

Primer RSS formata najdete na: http://www.feri.uni-mb.si/rss/novice.xml

 

Lastnosti XML

 

Ločevanje oblike od vsebine. Vsebino, predstavljeno v jeziku XML, lahko predstavimo s pomočjo slogovnih predlog (stylesheets). Te so lahko določene s CSS (Cascading Style Sheets) ali XSL (Extensible Style Language).

Samoopisnost. Vsebina, zapisana v formatu XML, je razumljiva brez posebnega znanja. Taki zbirki rečemo, da je pravilno oblikovana (well-formed). Ko vsebina ustreza še definiciji podatkov, pa rečemo, da je veljavna (valid). Podatke lahko definiramo z DTD (Document Type Definition), ki opiše organizacijo podatkov. Še več, podatkom lahko določimo tudi tipe. To nam omogočajo sheme XML (schemes).

Javne specifikacije. Specifikacije so dobro dokumentirane in dostopne vsem. Na voljo so na spletni strani.

Nima lastnika. Podobno kot Internet tudi XML nima lastnika in se lahko prosto uporablja. Zato se mu obeta velik razmah.

Združevanje iz različnih podatkovnih virov. XML omogoča združevanje podatkov na odjemalčevi strani. Te podatke pa lahko tudi poljubno razvrščamo in določene dele skrijemo glede na dejavnosti uporabnika.

Napredne povezave. Jezik HTML omogoča le enosmerne povezave na točno določene zbirke, oziroma na posebej označena mesta v zbirkah.

Standard Unicode. Dokumenti XML lahko vsebujejo znake poljubne svetovne pisave, če želimo, pa se lahko omejimo na določeno kodno skupino. Najbolj pomembno pri vsem pa je, da jezik XML podpira tudi šumnike.

XML je znakovni jezik.

XML je bil zasnovan za opisovanje podatkov.

XML nima predpisanih značk (ustvarimo si lahko svoje značke).

W3C je XML sprejel kot standard.

 

Razlike med XML in HTML

 

XML ni bil nikoli namenjen kot nadomestilo za HTML.

XML je bil zasnovan za opis podatkov in vrsto podatkov.

HTML je bil zasnovan za prikaz in izgled podatkov.

 

Zgradba XML dokumenta

 

 

Slovnica XML

 

1. Vsi elementi morajo biti zaključeni

 

Napačno:       <element>tekst

Pravilno:        <element>tekst</element>

                                   <element /> (element naenkrat ustvarimo in zapremo)‏

 

2. XML loči male in velike črke v imenih elementov

 

Napačno:                   <Element>tekst</element>

Pravilno:                    <element>tekst</element>


3. Elementi morajo biti pravilno gnezdeni

 

Napačno:       <el1><el2>tekst</el1></el2>

Pravilno:       <el1><el2>tekst</el2></el1>

 

4. XML dokument mora imeti korenski (root) element

 

<koren>

                        <otrok>

        ...

        </otrok>

</koren>

 

5. Lastnosti elementov morajo biti podane v narekovajih

 

Napačno:       <element lastnost=vrednost>

Pravilno:        <element lastnost="vrednost">

 

6. XML ignorira prazne znake

 

Primer:                                  <element>To bo         ignorirano</element>

Je enako kot:             <element>To bo ignorirano</element>

 

Slovnica XML – komentarji

 

Tako kot HTML tudi XML pozna komentarje

 

Komentarji so enaki kot pri HTML, začnejo se z <!-- in končajo z -->, lahko so večvrstični

 

Primer:

 

<!-- To je XML komentar -->

 

Elementi XML (razširljivost)

 

Elemeni so lahko razširjeni tako da vsebujejo več podatkov

Za primer imamo naprimer program, ki prebere iz elementa obvestilo elemente od, za in besedilo 

 

<obvestilo>

            <za>Ime Priimek</za>

            <od>Ime2 Priimek2</od>

            <besedilo>

                        To je besedilo

            </besedilo>

</obvestilo>   

 

<obvestilo>

            <za>Ime Priimek</za>

            <od>Ime2 Priimek2</od>

            <naslov>naslov obvestila</naslov>

            <besedilo>To je besedilo</besedilo>

</obvestilo>   

Tudi če dodamo nove elemente bo

program še vedno deloval

 

Elementi XML (vsebina)

 

XML je celoten dokument od začetne do končne značke.

 

Elementi lahko vsebujejo:

Druge elemente.

Mešano vsebino.

Preprosto vsebino.

Brez vsebine.

Lahko imajo tudi argumente.

 

Elementi XML (poimenovaje)

 

Imena elementov se morajo držati teh pravil:

Imena lahko vsebujejo črke, številke in druge znake.

Imena se ne smejo začeti s številom ali ločilom.

Ime se ne sme začeti z besedo xml (ali XML, Xml ipd.).

Imena ne smejo vsebovati presledkov.

 

Poimenovanje v praksi:

Besede ločite z  znakom _, znak – ni priporočljiv (lahko se interpretira kot minus).

Tudi znaki kot naprimer éòá so lahko uporabljeni a se jim izogibajte.

Znaka “:” ni dobro uporabljati ker se uporabljaza imenske prostore.

 

Argumenti značk XML

 

Argumenti dodajo elementom dodatne lastnosti:

Argumenti morajo biti znotraj dvojnega (“) ali enojnega (‘) narekovaja.

Nasvet: ne pretiravajte z dodajanjem argumentov posameznim elementom.

Slabost: niso razširljivi za bodoče spremembe (elementi so).

 

Primer:

<slika tip="png">OSS.gif</slika>


Preverjanje dokumentov XML

 

Dokument XML mora imeti korenski element.

Vsi elementi morajo biti zaključeni.

Elementi morajo biti pravilno gnezdeni.

Vsebina argumentov mora biti vedno v narekovajih.

DTD – definira strukturo dokumenta XML.

Shema XML – bolj napredna alternativa DTD-ju.

 

Slovarji – Namespace

 

Avtorji dokumentov (ali razvijalci programske opreme, ki sestavlja dokumenteXML) imajo pri poimenovanju tipov elementov vso svobodo, kar lahko v nekaterih primerih privede do težav. Te se pojavijo, ko avtorji dokumentov dvema ali večim elementom z različnimi pomeni dodelijo enaka imena. Aplikacije, ki procesirajo tako zgrajene dokumente, brez dodatnih informacij ne morejo ločiti med enako poimenovanimi elementi.

 

Opisana problematika je naslovljena v ločeni specifikaciji (Namespaces in XML), ki uvaja pojem domene oziroma slovarja (“namespace”). Dvoumnim interpretacijam dokumentov XML se izognemo, če ob vsakem imenu podamo tudi ime pripadajoče domene. Aplikacije, ki procesirajo dokumente XML,lahko za vsak element preverijo, ali pripada ustrezni domeni, in tako razlikujejo med relevantnimi in nerelevantnimi elementi. Mehanizem za označevanje domen predvideva uporabo oznak URI, kar zagotavlja, da pri pravilnem izbiranju oznak ne bo prišlo do podvajanj oziroma konfliktov med oznakami različnih domen.

 

Primer uporabe slovarja


Vsebina datoteke izdelki.xml

<?xml version="1.0"?>

<!DOCTYPE izdelki [

<!ENTITY izdelek_1 SYSTEM "diamondback686.xml">

<!ENTITY izdelek_2 SYSTEM "dam540.xml">

]>

       <iz:izdelki xmlns:iz="http://chp.uni-mb.si/izdelki">

               &izdelek_1;

               &izdelek_2;

       </iz:izdelki>

Vsebina datoteke diamondback686.xml

 

<?xml version="1.0" encoding="UTF-8"?>

       <palica xmlns="http://chp.uni-mb.si/izdelek">

               <ime>DiamondBack 686</ime>

               <dolzina>260</dolzina>

               <vrvica>6</vrvica>

       </palica>

 

 Vsebina datoteke dam540.xml

 

<?xml version="1.0" encoding="UTF-8"?>

       <i:kolesce xmlns:i="http://chp.uni-mb.si/izdelek">

               <i:ime>DAM 540</i:ime>

               <i:vrvica>6</i:vrvica>

               <i:kapaciteta>

                       <i:vrvica>40</i:vrvica>

                       <i:podaljsek>70</i:podaljsek>

               </i:kapaciteta>

       </i:kolesce>

 

XML razpoznavalniki

 

Preverjajo slovnico XML dokumentov

- Document Object Model (DOM)

     –     Gradi drevesno strukturo podatkov, ki sestavljajo XML dokument

- Simple API for XML (SAX)

     –     Procesira dokumente in generira dogodke

www.xml.com/xml/pub/Guide/XML_Parsers

 

 


Primer obdelave datoteke prireditve.xml

 

<?xml version="1.0" encoding="Windows-1250"?>

<prireditve>

               <prireditev>

                         <naziv>Festival Lent</naziv>

                         <termin>25.06.2007 do 09.07.2007</termin>

                         <lokacija>Lent in ostala prizorišèa v Mariboru</lokacija>

                         <organizator>Narodni dom Maribor</organizator>

                         <zvrst>festival</zvrst>

               </prireditev>

         <prireditev>

                 <naziv>Glasbeni september</naziv>

                 <termin>18.09.2007 do 29.09.2007</termin>

                 <lokacija>SNG Maribor</lokacija>

                 <organizator>SNG Maribor</organizator>

                 <zvrst>festival</zvrst>

       </prireditev>

       <prireditev>

                 <naziv>Zlata lisica</naziv>

                 <termin>12.01.2008 do 13.01.2008</termin>

                 <lokacija>Snežni stadion pod Pohorjem</lokacija>

                 <organizator>Smuèarski klub Branik</organizator>

                 <zvrst>športna prireditev</zvrst>

       </prireditev>

</prireditve>

 

Nalaganje datoteke XML

 

<html>

       <head>

       <script type="text/javascript">

       var xmlDoc;

       function naloziXML()

       {

       //naloži datoreko XML

       // nalaganje v IE

       if (window.ActiveXObject)

         {

         xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

         xmlDoc.async=false;

         xmlDoc.load("prireditve.xml");

         izpisi();

         }

       // nalaganje v Mozilla, Firefox, Opera, ...

       else if (document.implementation && document.implementation.createDocument)

         {

         xmlDoc=document.implementation.createDocument("","",null);

         xmlDoc.load("prireditve.xml");

         xmlDoc.onload=izpisi;

         }

       else

         { alert('Vaš brskalnik ne more obdelati te skripte'); }

       } // konec naloziXML

              

Nalaganje datotek XML in izpis podatkov s pomočjo Javascripta - nadaljevanje

 

function izpisi()

      {

      document.getElementById("naziv").innerHTML=xmlDoc.getElementsByTagName("naziv")[0].childNodes[0].nodeValue;

      document.getElementById("termin").innerHTML=xmlDoc.getElementsByTagName("termin")[0].childNodes[0].nodeValue;

      document.getElementById("lokacija").innerHTML=xmlDoc.getElementsByTagName("lokacija")[0].childNodes[0].nodeValue;

      document.getElementById("organizator").innerHTML=xmlDoc.getElementsByTagName("organizator")[0].childNodes[0].nodeValue;

      document.getElementById("zvrst").innerHTML=xmlDoc.getElementsByTagName("zvrst")[0].childNodes[0].nodeValue;

      } // konec izpisi

       </script>

       </head>

            <body onload="naloziXML()">

               <h1>Festival Lent</h1>

               <p>     <b>Naziv:</b> <span id="naziv"></span>.<br />

                       <b>Kdaj je bil nazadnje:</b> <span id="termin"></span>.<br />

                       <b>Kje se dogaja:</b> <span id="lokacija"></span>.<br />

                       <b>Kdo ga organizira:</b> <span id="organizator"></span>.<br />

                       <b>To je najveèji <span id="zvrst"></span>&nbsp; v Sloveniji.</b><br />

               </p>

       </body>

</html>

 


Razpoznavanje niza znakov, ki je XML in izpis teh podatkov

 

<html>

       </head>

       <script type="text/javascript">

                   function obdelajNiz()

               {      //XML kot niz znakov

                       var text="<prireditev>";

                       text=text+"  <naziv>Festival Lent</naziv>";

                       text=text+"<termin>25.06.2007 do 09.07.2007</termin>";

                       text=text+"  <lokacija>Lent in ostala prizorišèa v Mariboru</lokacija>";

                       text=text+"<organizator>Narodni dom Maribor</organizator>";

                       text=text+"<zvrst>festival</zvrst>";

                       text=text+"</prireditev>";

                       var xmltext;

                       //Obdelava z IE

                       if (window.ActiveXObject)

                         {

                         var xmltext=new ActiveXObject("Microsoft.XMLDOM");

                         xmltext.async="false";

                         xmltext.loadXML(text);

                         }

                       // obdelava za Mozilla, Firefox, Opera, itd

                       else

                         {

                         var parser=new DOMParser();

                         var xmltext=parser.parseFromString(text,"text/xml");

                         }

 

Razpoznavanje niza znakov, ki je XML in izpis teh podatkov-nadaljevanje

 

          document.getElementById("naziv").innerHTML=xmltext.getElementsByTagName("naziv")[0].childNodes[0].nodeValue;

          document.getElementById("termin").innerHTML=xmltext.getElementsByTagName("termin")[0].childNodes[0].nodeValue;

          document.getElementById("lokacija").innerHTML=xmltext.getElementsByTagName("lokacija")[0].childNodes[0].nodeValue;                            document.getElementById("organizator").innerHTML=xmltext.getElementsByTagName("organizator")[0].childNodes[0].nodeValue;

         document.getElementById("zvrst").innerHTML=xmltext.getElementsByTagName("zvrst")[0].childNodes[0].nodeValue;

             } // konec obdelajNiz()      

       </script>

       </head>

       <body onload="obdelajNiz()">

               <h1>Festival Lent</h1>

               <p>     <b>Naziv:</b> <span id="naziv"></span>.<br />

                       <b>Kdaj je bil nazadnje:</b> <span id="termin"></span>.<br />

                       <b>Kje se dogaja:</b> <span id="lokacija"></span>.<br />

                       <b>Kdo ga organizira:</b> <span id="organizator"></span>.<br />

                       <b>To je najveèji <span id="zvrst"></span>&nbsp; v Sloveniji.</b><br />

               </p>

       </body>

</html>