Web programozás és haladó fejlesztési technikák XML SAX vs DOM DTD vs Schema JSON
XML
eXtensible Markup Language Strukturált adatok tárolása szöveges formátumban Jelölő-nyelv Az ember és a gép számára is olvasható hierarchikus formátum
XML példa <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <price>29.99</price> <book category="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> <book category="web" cover="paperback"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <price>39.95</price> </bookstore>
XML dokumentum Az XML dokumentum az alábbi elemekből áll: Címke (tag) Nyitó (<author>) vagy záró (</author>) címke Üres címke (<author />) Elem (element) Nyitó és záró tagek valamint a közöttük levő tartalmak Attribútum (attribute) Minden elemhez tartozhat, a nyitó tagben vagy az üres tagben definiálandó kulcs="érték" felépítés
XML példa Tag <?xml version="1.0" encoding="UTF-8"?> <book category="web"> <bookstore> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <book category="cooking"> <author>Per Bothner</author> <title lang="en">Everyday Italian</title> <author>Kurt Cagle</author> <author>Giada De Laurentiis</author> <author>James Linn</author> <year>2005</year> <author>Vaidyanathan Nagarajan</author> <price>30.00</price> <year>2003</year> </book> <price>49.99</price> <book category="children"> <title lang="en">Harry Potter</title> <book category="web" cover="paperback"> <author>J K. Rowling</author> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <price>29.99</price> <price>39.95</price> </bookstore>
XML példa Elem <?xml version="1.0" encoding="UTF-8"?> <book category="web"> <bookstore> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <book category="cooking"> <author>Per Bothner</author> <title lang="en">Everyday Italian</title> <author>Kurt Cagle</author> <author>Giada De Laurentiis</author> <author>James Linn</author> <year>2005</year> <author>Vaidyanathan Nagarajan</author> <price>30.00</price> <year>2003</year> </book> <price>49.99</price> <book category="children"> <title lang="en">Harry Potter</title> <book category="web" cover="paperback"> <author>J K. Rowling</author> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <price>29.99</price> <price>39.95</price> </bookstore>
XML példa Attribútum <?xml version="1.0" encoding="UTF-8"?> <book category="web"> <bookstore> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <book category="cooking"> <author>Per Bothner</author> <title lang="en">Everyday Italian</title> <author>Kurt Cagle</author> <author>Giada De Laurentiis</author> <author>James Linn</author> <year>2005</year> <author>Vaidyanathan Nagarajan</author> <price>30.00</price> <year>2003</year> </book> <price>49.99</price> <book category="children"> <title lang="en">Harry Potter</title> <book category="web" cover="paperback"> <author>J K. Rowling</author> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <price>29.99</price> <price>39.95</price> </bookstore>
XML Szintaxis A tagek kisbetű-nagybetű érzékenyek Kötelezően egy gyökérelem Minden nyitó taghez kell hogy tartozzon záró tag Proper nesting (helyes beágyazás): a beágyazott elemek záró tagje meg kell előzze a szülő záró tagjét A < karakter nem használható a tartalmakban XML prolog opcionálisan az első sorban: <?xml version="1.0" encoding="UTF-8"?> Helyes szintaxis: well-formed XML
Névterek Névütközés ellen Prefix
Feldolgozás XML dokumentum értelmezése két módon történhet SAX (Simple API for XML) DOM (Document Object Model)
SAX Esemény-alapú soros feldolgozás A dokumentum feldolgozása során észlelt tagekről értesítést küld Alacsony memóriaigény Nem lehet összetett lekérdezést készíteni
DOM A teljes dokumentumot betölti mint fa-szerkezetet a memóriába A fa bejárható, keresés és módosítás, visszaírás is lehetséges Nagy memóriaigény Nagyméretű dokumentumok esetén nem alkalmazható
XML fa Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat bookstore book book book book … … … title author year price Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat Testvér kapcsolat
XML fa Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat bookstore book book book book … … … title author year price Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat Testvér kapcsolat
XML fa Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat bookstore book book book book … … … title author year price Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat Testvér kapcsolat
XML fa Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat bookstore book book book book … … … title author year price Gyermek-szülő kapcsolat Szülő-gyermek kapcsolat Testvér kapcsolat
Validálás Attól hogy az XML szintaktikailag helyes, azaz well-formed csak annyit jelent hogy nem sérült A feldolgozónak azonban az is fontos, hogy a dokumentumban tárolt információ számára értelmezhető, használható legyen Ehhez validálni szükséges
XML validálás Validálásra két módszer terjedt el: DTD (Document Type Definition) Schema
DTD Elfogadott elemek és attribútumok, értékek meghatározása Sajátos leíró nyelv
Schema Az XML Schema ugyanazt írja le amit a DTD Azonban az XML struktúrája nagyban segíti az átláthatóságot XSD: XML Schema Definition
DTD vs Schema DTD: XSD:
DTD vs Schema DTD: XSD:
XML alkalmazásai
HTML
XAML
JSON
JSON JavaScript Object Notation Strukturált adatok tárolására szolgál Épp, mint az XML Mivel a JavaScriptben ez a formátum szolgál az objektumok leírására, ezért a böngészőkben alapból támogatott De más technológiák esetén is gond nélkül alkalmazható
JSON XML: JSON:
JSON vs XML A JSONben Nincs zárótag: rövidebb Lehet benne tömböt definiálni Nem lehet ciklikus / rekurzív adatszerkezetet tárolni
Webszolgáltatások
A filozófus-fordító-titkárnő architektúra
A filozófus-fordító-titkárnő architektúra A filozófusok a kommunikáló alkalmazások A küldő fordítója XML-t állít elő az üzenetből, a fogadó fordítója az XML-t alakítja a filozófus számára érthető üzenetté A titkárnők felelnek az XML dokumentumok hálózati továbbításáért
Web szolgáltatások üzenetváltásai
Wikipedia MediaWiki API
Waze live map
Források W3schools.com MediaWiki API Waze.com