2019. november 13., szerda

XML alapjai

Jegyzettömbben szerkeszthető

Az XML fájlok felépítésük szerint text fájlok, így felmerül az a kérdés, hogy melyik kódlappal, mely karakterkészlettel készülnek.
Az XML fájlok önleíró formátummal rendelkeznek. Az XML dokumentumok első bejegyzése az alkalmazott XML szabvány verziószámát és a kódlapot azonosítja.
Pl.:
<?xml version="1.0" encoding="windows-1250"?>
A ’Windows-1250’-es kódlapot használja a magyar nyelvű és beállítású Windows operációs rendszer. Ezzel a kódlappal érdemes XML fájlokat előállítani, mert ezt akkor pl. a minden gépen elérhető ’jegyzettömb’ alkalmazás azonnal tudja olvasni és írni.

XML jelentése

Az Extensible Markup Language (XML, kiterjeszthető leíró nyelv) a W3C által ajánlott általános célú leíró nyelv speciális célú leíró nyelvek létrehozására. Az SGML egyszerűsített részhalmaza, mely különböző adattípusok leírására képes. Az elsődleges célja strukturált szöveg és információ megosztása az Interneten keresztül. Az XML-en alapuló nyelvek (például RDF, RSS, MathML, XSIL, SVG) formális módon vannak leírva, így lehetővé téve a programok számára a dokumentumok módosítását és validálását a formátum előzetes ismerete nélkül.

A World Wide Web Consortium (W3C) egy konzorcium, mely nyílt szoftver szabványokat -- "ajánlásokat", ahogy ők hívják -- alkot a világhálóra (World Wide Web). A konzorciumot Tim Berners-Lee vezeti, az URL (Uniform Resource Locator, univerzális erőforrás azonosító), a HTTP (HyperText Transfer Protocol) és a HTML (HyperText Markup Language, hipertext leíró nyelv) eredeti megalkotója. Ezek a technológiák alkotják még ma is a Web alapjait.


Elemei

Az XML dokumentumok elemeket tartalmaznak.
Minden elemnek van neve és tartalma. Ez utóbbi lehet üres is. Egy elem tetszőleges számban és mélységben tartalmazhat további elemeket.
Az elemet meg kell nyitni és le kell zárni. Minden elemnek van lezárása!
Pl:
<nev>Buga Jakab</nev>
Ebben a példában definiáltunk egy nev nevű elemet, a ’Buga Jakab’ tartalommal.
<dolgozo>
<nev>Buga Jakab</nev>
<eletkor>20</eletkor>
</dolgozo>
Ebben a példában a dolgozo elem további két elemet tartalmaz. Mindkettőnek van neve és tartalma, és le is vannak zárva.
Amennyiben elemeket egymásba ágyazunk, úgy az nem lehet átfedő!
Pl.: (hibás)
<dolgozo>
<nev>Buga Jakab
</dolgozo>
</nev>
Az üres tartalmú elemet kétféleképpen lehet jelölni:
<dvd></dvd>
vagy
<dvd />

Attribútum

Az XML dokumentumok elemeket tartalmaznak. Minden elemnek van neve és tartalma. Az elemek tartalmazhatnak attribútumokat is. Az attribútumoknak is van nevük és tartalmuk. Ez utóbbit aposztrófok közé kell zárni:
Pl.:
<dolgozo neme=”Ferfi” eletkor=”20”>Buga Jakab</nev>
Ebben a példában definiáltunk egy nev nevű elemet, a ’Buga Jakab’ tartalommal. Két attribútumunk van, a neme és az eletkor.
Gyakori eset, amikor az attribútumokkal mindent leírunk, és az elem tartalma már üres:
<dvd film=”Micimacko” ara=”2500” />
Az üres tartalmú elemet kétféleképpen lehet jelölni:
<dvd></dvd>
vagy
<dvd />

Speciális karakterek

Az XML -ben van néhány karakter, melynek speciális jelentése van. Ezek a karakterek nem kerülhetnek be elem és attribútum tartalomba, helyettesítőket kell alkalmazni:
& &amp;
< &lt;
> &gt;
" &quot;
Vagyis pl.:
<bank>K&H</bank> helyett <bank>K&amp;H</bank> -ot kell írni.

Megjegyzések

Az XML fájlban lehetőség van megjegyzések elhelyezésére. Ezek nem kerülnek feldolgozásra, de szerkesztés közben néha jól jönnek.
A megjegyzéseket <!-- és --> jelek közé kell zárni.
Pl.:
<!-- ez egy XML megjegyzés -->

Jól formázott

Egy XML fájl jól formázott (well-formed), ha mindenben megfelel a szabályoknak (csak a legfontosabbak):

az első XML verzió és kódlap leíró speciális elemen kívül legfeljebb még egy elemet tartalmaz
ezen még egy elem tetszőleges számú egyéb elemet tartalmazhat tetszőleges mélységben
az elemek nem kerülhetnek egymással átlapoló állapotba
az elemek belsejében a speciális karakterek kódolt formában vannak
az elemek belsejében csakis a megadott kódlapon engedélyezett karakterek fordulnak elő
Az XML fájlok helyes formázottságát legegyszerűbben úgy ellenőrizhetjük le, ha betöltjük őket az Internet Explorer-be. Amennyiben minden rendben van az XML fájllal, akkor az IE megjeleníti a benne lévő adatokat fa-struktúrában. Ellenkező esetben kiírja, hogy melyik részen van a probléma.

Mivel írjunk XML file-t

XML fájlt bármilyen text editorral írhatunk, erre a célra kiválóan alkalmas a jegyzettömb is.
Professzionálisabb eszköz erre a célra maga a Visual Studio, de az interneten rengeteg ingyenes és fizetős XML editor program található. Ezek több-kevesebb extra szolgáltatást is nyújtanak, mint pl. hibaellenőrzés (well-formed), extra karakterek mentéskori kódolása, többfajta kódlap támogatása, stb.

Mivel olvassunk XML file-t

Az XML fájlt bármilyen text editorral beolvashatjuk, erre a célra kiválóan alkalmas a jegyzettömb is, bár a jegyzettömb nem kezel minden kódlapot és kódolási formát, így a nem Windows-os kódlappal írt XML fájlokat problémásan jeleníti meg.
Professzionálisabb eszköz erre a célra maga a Visual Studio, de az interneten rengeteg ingyenes és fizetős XML editor program található.
Szintén alkalmas eszköz a minden Windows-os gépen megtalálható Internet Explorer, mely képes XML fájlokat beolvasni és megjeleníteni. Amennyiben az XML fájl hibás, még a hiba helyét is azonosítja.

Adatbázis kezelése

https://www.inf.u-szeged.hu/~pbalazs/teaching/xml.pdf

XML séma meghívása<HTML>
  <HEAD><TITLE>Érvényesség-ellenorzo (Sema)</TITLE>
  <SCRIPT LANGUAGE="JavaScript">
  function XML_SEMA_ellenor(dok_URL, sema_URL, nevter_neve)
  {
    var XMLDocument = new ActiveXObject("Msxml2.DOMDocument.4.0"),
        XMLSemaCache = new ActiveXObject("Msxml2.XMLSchemaCache.4.0");
    XMLSemaCache.add(nevter_neve, sema_URL);
    XMLDocument.schemas = XMLSemaCache;
    XMLDocument.async = false;
    XMLDocument.load(dok_URL);
    if(XMLDocument.parseError.errorCode != 0)
      {
       var msg;
       msg = "Hibaszám: "     + XMLDocument.parseError.errorCode + "\n"
          + "fájlpozíció: "   + XMLDocument.parseError.filepos   + "\n"
          + "sor: "           + XMLDocument.parseError.line      + "\n"
          + "karakter: "      + XMLDocument.parseError.linepos   + "\n"
          + "leírás: "        + XMLDocument.parseError.reason    + "\n"
          + "forrás szöveg: " + XMLDocument.parseError.srcText   + "\n"
          + "URL: "           + XMLDocument.parseError.url;     
       return alert(msg);
      }else alert("OK");
  }
  </SCRIPT>
  </HEAD>
  <BODY onLoad="XML_SEMA_ellenor('Leltar Elofordulas.xml', 'Leltar Sema.xsd', '')">
  <H2>Sémát használó érvényesség-ellenorzo</H2>
  </BODY>
  </HTML>



Nincsenek megjegyzések:

Megjegyzés küldése