[[oktatas:számítástechnika:xml|< XML]] ====== Az XML nyelv ====== * **Szerző:** Sallai András * Copyright (c) 2009, Sallai András * Szerkesztve 2009-2015, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Bevezetés ===== Az **XML** az **Extensible Markup Language** szavak betűiből alkotott rövidítés. Az XML a mesterséges nyelvek között egy dokumentumleíró nyelv, amelyben hierarchikus struktúrában dolgozunk. Kiterjeszthető (extensible) mert a szerkezetet meghatározó jelölő elemek neveit magunk találhatjuk ki. Jelölő nyelv, mert a dokumentum szerkezetét határozzuk meg. ^ Természetes nyelvek ^ Mesterséges nyelvek ^ | magyar | C | | angol | Pascal | | német | Java | | olasz | HTML | | francia | SGML | | orosz | XML | | japán | SVG | | stb. | stb. | Az XML CSS-el egybekötött használatáról a következő helyen található egy példa: [[oktatas:web:html:xml_példák]] ===== SGML ===== Az **IBM**-nél már a 70-es években létezett egy **GML** nevű nyelv, amely dokumentumok leírását szolgálta. Akkoriban minden cégnek saját dokumentumleíró nyelve volt. Szükséges volt egy szabványos leírónyelvre. Az ISO 1986-tól jegyzi **ISO 8879:1986** szabványt, amely az SGML dokumentumleíró nyelv leírását tartalmazza. Az **SGML** szó a **Standard Generalized Markup Language** szavakból alkotott betűszó, amely magyar nyelvre valahogy így fordítható: **Általános Szabványos Kijelölőnyelv** ==== Tag ==== A SGML dokumentum szerkezeti elemeit tagek alkotják. Egy tag "kisebb mint" karakterrel kezdődik, és "nagyobb mint" karakterrel záródik: Minden tagnek adunk egy nevet. A nevet a két jel között helyezzük el. Legyen például egy olyan tag, amely lakcímeket tartalmaz. Ekkor a tag így nézhet ki: A tageknek lehet lezáró részük: Az SGML nem írja elő milyen tag neveket használhatunk, csak annak szerkezeti felépítésére tesz javaslatot. A tagek neveit (címkéit) mi magunk találhatjuk ki. Ezért mondjuk, hogy az SGML csak **általános** leírónyelv. ==== DTD ==== Egy konkrét dokumentumleíró nyelvben használatos tageket neveit, **DTD**-ben írjuk le. Ebben adjuk meg az **alkalmazni kívánt szintaxist**. A DTD a **Document Type Definition** szavakból alkotott betűszó, amely magyar nyelvere valahogy így fordítható: **Dokumentum Típus Definíció** ==== SGML példák ==== piros FFG-828 1985 2GHz 1GB 160GB Ha a tulajdonságok értékeként csak szám van megadva, akkor nem kötelező az idézőjel használata. A tagnek nem kell legyen lezáró tagje. ===== Tim Berners-Lee ===== A londoni születésű **Tim Berners-Lee** (Sir Timothy John) felismerte az SGML nyelvben rejlő lehetőségeket, így ez alapján alkotta meg a HTML nyelvet. Létrehozta a **World Wide Web Consortiumot** (W3C), amely szabványokat, protokollokat, programokat állít elő. A **W3C** konzoricum nevéhez köthető többek között az URL, a HTTP, stb. szabvány. ===== WORLD WIDE WEB Consortium ===== Rövden WWW Consortium, vagy W3C. A Consortium magyarul konzorcium vagy szövetkezés. 1994 – Berners-Lee alapította Massachusetts Institute of Technology-n Röviden MIT, kiejtve:[em-áj-ti], (Massachusetts Műszaki Egyetem). A W3C konzorcium nyílt szoftver szabványokat ("ajánlásokat") alkot a világhálóra. A W3C weboldalai: * http://www.w3.org * http://www.w3c.org * http://www.w3c.hu Néhány példa a W3C szabványaira: * **CSS** * **CGI** * DOM * GRDDL * **HTML** * OWL * RDF * **SVG** * SISR * SOAP * SMIL * SRGS * SSML * VoiceXML * XHTML+Voice * WSDL * XACML * **XML** * XML Events * XForms * XML Information Set * XML Schema * XPath * XQuery * XSLT ===== XML ===== Az **XML** a **Extensible Markup Language** szavakból alkotott betűszó, amely magyarra valahogy így fordítható: **kiterjeszthető leíró nyelv**. Az XML -- mint az SGML is -- egy **általános** célú leírónyelv. Arra találták ki, hogy vele speciális célú leírónyelveket hozhassanak létre. Valójában **az SGML egyszerűsített részhalmaza**. **Tim Bray** (Timothy William Bray) kezdte a fejlesztését. A fejlesztése 1996-ban kezdődött, 1998 februárja óta már hivatalos W3C ajánlás. Az XML fejlesztői vették az SGML legjobb részeit, hozzávéve a HTML-lel kapcsolatos tapasztalataikat, és előállítottak valamit, ami nem hatékonyabb, mint az SGML, ám mégis jóval szabályosabb és egyszerűbben használható. Az XML faszerkezetű hierarchikus struktúrája miatt alkalmas bármilyen adat tárolására. Segítségével létrehozhatjuk saját jelölő nyelvünket, amit DTD ismeretében bárki fel tud használni. Egyszerű szöveges állományokat készítünk, így platformfüggetlen, emberi szem számára könnyen olvasható. A hátránya a megnövekedett tárolási igény. Hiszen minden egyes adatot XML elemek vesznek körül. ==== XML példák ==== Török Péter Kis Katalin Ha csak számok vannak, akkor is kötelező az idézőjel. A tagnek kell legyen lezáró tagje vagy . Nagy József Kis István Szép Lajos Nagy József 27> 870000 Kis István 35> 470000 Szép Lajos 27> 175000 ===== XML ellenőrzés ===== Azt ellenőrizzük, hogy az xml állomány megfelel-e az adott DTD-nek. XML ellenőrző * http://code.google.com/p/xmllint/ (Windows) xmllint jarmu.xml -noout ===== Szintaktikai szabályok ===== ==== Lezárás ==== Minden XML elemnek lennie kell lezáró részének is. A HTML nyelvben néhány elem nem tartalmaz semmit. Mit is tartalmaznak a sortörés, vízszintes vonal vagy egy meta elem, amely az attribútumaiban írja le a tartalmát:

De vannak olyan HTML elemek, amelyeket nem szoktak lezárni ha a Transitional verzióban hozzuk létre a weblapjainkat.

  • Az XML nyelvben ez illegális. Az elemet le kell zárni. Ha egy elem nem tartalmaz semmit, akkor a lezárás így történik:

    ==== Kisbetű-nagybetű érzékenység ==== Az XML tagek kis és nagybetű érzékenyek. A és a különböző tagek. A nyitó és záró tageket ugyanazzal névvel adjuk meg: Ez helytelen Helyes ==== Egymásba ágyazás ==== Az XML elemek egymása ágyazhatók, de nem fedhetik egymást át. Átfedésre példa a HTML Transitional verzióban: A szöveg félkövér és dőlt Az XML nyelven csak így használhatjuk: A szöveg félkövér és dőlt Ha "i" nyitottuk utoljára meg, akkor azt is kell előbb lezárni! ==== Gyökérelem ==== Az XML dokumentumban lenni kell egy gyökérelemnek. Ez fogja tartalmazni a többi gyermekelemet. Angolosan root elemnek hívjuk. A HTML nyelvben például **html** a root elem neve, de saját leírónyelvünkben lehet akár a **root** szó is. ..... ==== Tulajdonságok ==== Az XML tulajdonságok értékét mindig idézőjelbe kell tenni. Például helytelen ez: Tove Jani Helyes ez: Tove Jani ==== Entitások ==== Az XML nyelvben néhány karakternek speciális jelentése van. Ilyen a "<" karakter. Ezért hibás az alábbi minta: ha ár < 1000 akkor Ezeket ki kell cserélni a neki megfelelő entitásra: ha ár < 1000 akkor Az alábbi táblázatban 5 előre definiált entitást látunk: ^ Entitás ^ Karakter ^ Jelentés ^ | < | < | kisebb mint | | > | > | nagyob mint | | & | & | ampersand | | ' | ' | aposztróf | | " | " | idézújel | ==== Megjegyzés ==== Az XML nyelvben a megjegyzéseket a következő módon készítjük: ==== White-space ==== Az XML a white-space karaktereket nem veszi figyelembe. Az XML a sortöréseket LF-ként kezeli. Ne feledjük, hogy a Windows CR+LF párost használja. A Unix alapú rendszerek LF-et.