Fejlett Programozási Technikák 2. 7/3
A mai előadás tartalma: CSS XML DTD XPath XSLT WEBdav SyncML WAP WML
Problémák Tartalom, formázás egyveleg HTML formázó készlet szegényes HTML a dokumentum szerkezetét adja A böngészőre volt bízva a megjelenítés Netscape, IE, új elemek Egységes megoldás CSS
A CSS Előnyei Tartalom, formázás elkülönül Nyílt szabvány Sok böngésző támogatja Stílust definiál Megkönnyíti a munkát
Definiálható HTML elemen belül HTML dokumentum fejrészében Külső css fájlban Több külső css fájlban
Érvényesítési sorrend Böngésző alapértelmezett css Külső css Fejrész css Egyes elemekben definiált
A CSS bejegyzés felépítése Választó Tulajdonság Érték
Példa Body { color:yellow } p { font-family:”sans serif” } P text-align: center; color: black; font-family: arial h1, h2, h3, h4, h5, h6 { color: green}
Hivatkozások: Class p.jobb {text-align: right} p.kozep {text-align: center} … <p class=”jobb”>Ez a bekezdés jobbra lesz igazítva<p> <p class=”bal”>Ez a bekezdés jobbra lesz igazítva<p>
Hivatkozások: Általános .kozep {text-align: center} <input type=”text” class=”kozep”> <p class=”kozep”>Középre igazítva</p>
Hivatkozások: id #intro { font-size:110%; font-weight:bold; color:#0000ff; background-color:transparent } p#intro
Definiálás Külső oldal: Fejrészben: Az adott elemnél: <head> <link rel="stylesheet" type="text/css" href="minta.css" /> </head> Fejrészben: <style type="text/css"> hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")} </style> Az adott elemnél: <p style="color: sienna; margin-left: 20px"> Ez egy bekezdés</p>
Formázási lehetőségek Háttér Szöveg Betű Keretvonal Margó Listák …
Dokumentum leíró nyelvek SGML (bonyolult) HTML Előre definiált elemkészlet Csak megjelenítés Hibakezelés (<li>, 30%)
Megoldás: XML Nincs nyelvtana Nincs elemkészlete Tetszőleges nyelvtan Tetszőleges elemkészlet Nagyon rugalmas Saját jelölő nyelv
7 indok az XML használatára Meta nyelv Szöveg alapú Ideális struktúrált dokumentumaink számára Megjelenítés semleges Többnyelvű Segít az üzleti alkalmazások integrálásában Nyitott szabvány XML is a meta language! XML can define and describe any kind of information. XML is, by definition, extensible. Users, user groups and standardization bodies use XML as a type of a platform-independent grammar to define markup languages for specific purposes and schemas for all kinds of data models. XML bridges the gap between document-oriented and record-oriented processing. 2 XML is text-based and easy to read! Documents can be read by applications and humans. By definition, XML document content is marked up with tags. Tags such as <ProductNo> or <Price> clearly specify which type of information a document element contains. As these tags are contained in each document, XML documents can be understood without the application that created them. Humans can read XML, too, because XML documents are plain ASCII (or UNICODE) text, a fact that makes maintenance easy. 3 XML is ideal for structured documents! XML documents are hierarchically structured! XML document elements can be nested to build complex information structures. In principle, converting complex XML documents for use with relational technology is possible, but this is far from being optimal. Mapping XML elements to and from relational tables is a slow process and most certainly requires a great deal of normalization and optimization effort before an XML document can be stored properly. 4 XML is presentation neutral! XML separates document content from presentation. Stylesheets define how the document elements are formatted for output on a variety of display or other devices. Stylesheets can be applied to any given XML document. XML and associated co-standards allow to personalization of a given piece of information without the need to modify the original document content. 5 XML is multilingual! XML is based on Unicode. The ability to represent characters in almost all the world's languages - including Chinese and Japanese - facilitates document and data interchange in a multilingual community.XML tools do not generally have to be re-written to support text authored in Far Eastern languages, making most Western XML products immediately useful worldwide. 6 XML helps integration of businesses! XML lowers the barriers of worlwide e-business networks. Current Electronic Data Interchange (EDI) solutions are difficult and expensive to implement and maintain. With XML's flexibility in defining industry-specific vocabularies, it is even possible for small and medium-sized businesses to access EDI networks using simple, off-the-shelf Internet standards. 7 XML is open! Standards are supported by all major vendors. Large IT companies such as IBM, Microsoft, Oracle, Software AG, Sun Microsystems, and others have all heavily invested in XML and are actively contributing to the standardization process.
Feladatok melyeket XML-el érdemes megoldani Adatok elosztása cégen belül Konfigurációs állományok Ideiglenes adatok átvitele (EDI, B2B) Adatgyűjtés, feldolgozás Kliensfüggő kimenet
Feladatok melyekre nem az XML a legalkalmasabb Nagy mennyiségű adat tárolása a merevlemezen Olyan adatok kezelése egy alkalmazáson belül melyek nem kerülnek ki Függvény hívásnál paraméterként
XML nyelvcsalád XML Adatleíró nyelv DTD XML Shema XSL, XSLT Xpath XQL XML/EDI XML-RPC …
XML Feladata az adatok strukturált leírása. XML az ASCII a 21. század számára Minimális formai követelmények <Feladat sorszam="14"> <vegrahajto>Kardos Katalin</vegrahajto> <megbizo>Nagy Emese</megbizo> <hatarido>2002.05.01</hatarido> </Feladat>
DTD Document Type Definition Definiálja a dokumentum: Szintaktikáját Szemantikáját Ipari DTD <!ELEMENT ul (li)+> <!ELEMENT ol (li)+> <!ELEMENT li (#PCDATA)>
Együttműködés adatbázisokkal XML Shema XML szintaxist használ A legismertebb adattípusokat támogatja Saját adattípusokat definiálhatunk XML névteret használ Együttműködés adatbázisokkal <?xml version = "1.0" ?> <schema xmlns = "http://www.w3.org/2001/XMLSchema"> <element name = "Customer"> <complexType> <sequence> <element name = "FirstName" type = "string" /> <element name = "MiddleInitial" type = "string" /> <element name = "LastName" type = "string" /> </sequence> </complexType> </element> </schema>
XSL XML alapú sablon XSLFO (Formatting Objects) Papír kimenet A kimenet lehet pl.: pdf XSLT (XSL Transformations) Programozási módszer Beépített vezérlési struktúrák
XSLFO példa <xsl:template match="chapter"> <fo:flow> <xsl:apply-templates/> </fo:flow> </xsl:template> <xsl:template match="chapter/title"> <fo:block font-size="18pt" font-weight="bold" text-align="centered"> </fo:block> <xsl:template match="para"> <fo:block font-size="12pt" space-before="1pc" text-align="justified"> <xsl:template match="emphasis"> <fo:inline font-style="italic"> </fo:inline>
XSLT péda <?xml version="1.0" encoding="ISO-8859-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <body> <xsl:value-of select="."/> </body> </html> </xsl:template> </xsl:stylesheet>
XPath Az XML dokumentum részeinek címzésére szolgál <AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA> XPath kifejezés: //BBB
XQL XML Query Language Az XSL kiterjesztése Csomópontok azonosítása szűrése front/author/address/@type='email'
XML/EDI EDI az e-commerce nagyapja XML/EDI Elektronikus üzenetcsere (nem manuális) Struktúrált adatok cseréje Dokumentum csere automatizálása Változások nehéz követése (párhuzamos rendszerek) Költséges XML/EDI Rugalmas környezet Számítógép számára is értelmezhető Olcsó
EDI
XML/EDI
XML-RPC Távoli eljárás hívás HTTP protokoll mint átviteli közeg XML formátum Egyszerű Perl, Java, Python, C, C++, PHP nyelveken használható
Példa python> import xmlrpclib python> server = xmlrpclib.Server("http://betty.userland.com/RPC2") python> server.examples.getStateName(41) <methodCall> <methodName>examples.getStateName </methodName> <params> <param> <value> <int>41</int> </value> </param> </params> </methodCall>
XML Szabályok Jelölőelemeket használ Minden kezdőelemhez tartozik záró Az elemek egymásba ágyazhatóak Nem metszhetik egymást az elem párok Kötelező a gyökér elem US-ASCII kódolás, ha nem azt jelezni kell Érzékeny a kis és nagy betűkre Nem kötelező de jó ha van hozzá DTD és azt betartja Jól formázott Érvényes
Szerkezet PI DTD Fejléc Törzs <?xml version="1.0"?> <!DOCTYPE Feladat SYSTEM "DTD\feladat.dtd"> <Feladat sorszam="14"> <vegrahajto>Kardos Katalin</vegrahajto> <megbizo>Nagy Emese</megbizo> <hatarido>2002.05.01</hatarido> <megoldva v=”i”/> </Feladat> DTD Fejléc Gyökér elem Törzs
Elemek <elem tulajdonság=”valami”> érték </elem> Nyitó elem Záró elem Záróelem nélküli elem
Elemek tulajdonságai 1) 2) <személy nem=”nő"> <személy> <keresztnév>Anna</keresztnév> <vezetéknév>Smith</vezetéknév> </személy> 2) <személy> <nem>nő</nem> <keresztnév>Anna</keresztnév> <vezetéknév>Smith</vezetéknév> </személy> A tulajdonságok nem tartalmazhatnak egyszerre több adatot (a gyermek elemek igen). A tulajdonságok nem bővíthetők olyan egyszerűen, mint a gyermek elemek. A tulajdonságok adatai nem rendezhetők struktúrákba (a gyermek elemek adatai igen) A tulajdonságokat nehezebb kezelni a programokban. A tulajdonságok helyességet nehezebb ellenőrizni Tulajdonságot akkor érdemes használni ha az a feldolgozás szempontjából jelent plusz információt
Karakterek megkülönbözteti a kis és nagy betűket XML értelmezők nem veszik ki az adatokból a többszörös kihagyás jellegű (white space) karaktereket. Elemek nevei tartalmazhatnak bármilyen karaktert, a következő szabályok figyelembevételével: Elem név nem tartalmazhat kihagyást (space). Elem név nem kezdődhet számmal valamint aláhúzás karakterrel. Elem név nem kezdődhet az XML karakter sorozattal Elem névben nem ajánlott a mínusz (-) és a pont (.) karakter valamint a szintén nem ajánlott a kettőspont (:) mert speciális jelentése van. Nincs fenntartott szó Az elemek értéke nem tartalmazhatja a következő karaktereket: &, ”, ’, >, < helyettük : &, ", &apos, >, < CDATA segítségével bármilyen szöveget tartalmazhat: <minta> <![CDATA[ <aaa>bb&cc<<<]] </minta>
Névtér Probléma: Megoldás előtétel: <Dokumentum> <méret>4 adat</méret> <típus>XML</típus> <doc> <ruha> <típus>póló</típus> <szín>sárga</szín> <méret>XXL</méret> <forma>hagyományos</forma> </ruha> </doc> </Dokumentum> <doc:Dokumentum> <doc:méret>4 adat</doc:méret> <doc:típus>XML</doc:típus> <doc:doc> <adat:ruha> <adat:típus>póló</adat:típus> <adat:szín>sárga</adat:szín> <adat:méret>XXL</adat:méret> <adat:forma>hagyományos</adat:forma> </adat:ruha> </doc:doc> </doc:Dokumentum>
Névtér URI xmlns <?xml version="1.0"?> <!DOCTYPE Feladat SYSTEM "DTD\feladat.dtd"> <Pelda1:Feladat xmlns:Pelda1="http://wilma.cab.u-szeged.hu :8080/cocoon/pelda1.xml"> <Pelda1:vegrahajto>Kardos Katalin</Pelda1:vegrahajto> <Pelda1:megbizo>Nagy Emese</Pelda1:megbizo> <Pelda1:hatarido>2002.05.01</Pelda1:hatarido> </Pelda1:Feladat>
XML értelmezése DOM (Document Object Modell) alapú Memóriában tárolt fa SAX (Simple API for XML) alapú elemzők Csak az aktuális elemet látjuk Események generálódnak Eseménykezelő metódusok
DTD Öndokumentálás Nyelvtan Elemkészlet Hibadetektálás (B2B)
Példa <!ELEMENT Pelda1:Feladat (Pelda1:vegrehajto, Pelda1:megbizo, Pelda1:hatarido)> <!ELEMENT Pelda1:vegrehajto (#PCDATA)> <!ELEMENT Pelda1:megbizo (#PCDATA)> <!ELEMENT Pelda1:hatarido (#PCDATA)>
Ismétlődés operátorok Nincs Pontosan egyszer kell szerepelnie ? Egyszer vagy egyszer sem + Legalább egyszer * Akárhányszor (0 is) <!ELEMENT Pelda1:Feladat ((Pelda1:vegrehajto, Pelda1:hatarido))+, Pelda1:megbizo)>
Tulajdonságok <!ATTLIST feladat munkahely (irinyi|arpadter)> Módosító: #IMPLIED -- Nem feltétlenül szükséges. #REQUIRED -- Szükséges. #FIXED -- Kötelező a jelenléte és az értéke egyaránt. ”alapértelmezett érték”
XML Schema XML elemkészletet és nyelvtant definiál XML szintaxist használ (SAX,DOM) A legtöbb programnyelvben használt adattípusokat használhatjuk A névterek használata lehetővé teszi több séma egybeolvasztását
XPath Segítségével megcímezhető egy XML dokumentum egy adott része Szintakszisa nem XML alapú Az XPath értelmezésében egy XML dokumentum 7 féle részből állhat, ezek: Gyökér csomópontok (root nodes) csomópontok (element nodes) szöveges csomópontok (text nodes) tulajdonságok (attribute nodes) névterek(namespace nodes) vezérlési utasítások (processing instruction nodes) megjegyzések (comment nodes) Eredmény: csomópontok egy csoportja logikai érték (igen vagy nem) szám vagy szöveg.
XPath szintaxis / Hasonlít a fájlrendszer elérési útvonlához / az abszolút útvonal az adott elemig Példa: /AAA/CCC <AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>
//, * Minden elemet kijelöl mely teljesíti a feltételeket: pl.: //BBB //DDD/BBB /AAA/DDD/* /*/*/BBB <AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA> <AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB> <EEE/> <BBB/> </DDD> </CCC> </AAA> <AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB> <EEE/> <BBB/> </DDD> </CCC> </AAA> <AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB> <EEE/> <BBB/> </DDD> </CCC> </AAA>
[],@ A []-be beírt szám megadja az elem pozicióját a last() az utolsót válsztja ki. Tulajdonságokat specifikálhatunk a @ segítségével /AAA/BBB[1] /AAA/BBB[last()] //@id //BBB[@id] <AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA> <AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA> <AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA> <AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA>
count(),name(),contains() count() megszámolja az elemeket name() a nevét adja vissza contains() tartalmazást ellenőriz pl: //*[count(*)=2] //*[contains(name(),'C')] <AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> <AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>
parent::, ancestor::, following-sibling::, following:: parent:: a szomszédokat jelöli ki ancestor:: az ősöket jelöl ki following-sibling:: az utána következő testvéreket jelöli ki Following:: az utána következő csomópontokat jelöli ki Pl: //DDD/parent::* /AAA/BBB/DDD/CCC/EEE/ancestor::* /AAA/BBB/following-sibling::* /AAA/XXX/following::* <AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> <AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> <AAA> <BBB> <CCC/> <DDD/> </BBB> <XXX> <DDD> <EEE/> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA> <AAA> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>
XML megjelenítése CSS XSL/XSLT Egyszerű Nincs transzformáció Transzformációs nyelv XSLT Stílusleíró nyelv XSL
XSLT
Eszközök IE 6.0 Cocoon Java Servlet XML formátum XSLT feldolgozó Utófeldolgozó HTML, XHTML, WML, PDF, XSL:FO
Felépítése XSLT egy XML dokumentum; melynek névtere (http://www.w3.org/TR/REC-xml-names) A legtöbb stíluslap önálló Gyökere <xsl:stylesheet> vagy <xsl:transform>
Példa <xsl:stylesheet xmlns:xsl="http://www.w3c.org/1999/XSL/Transform" xmlns:Pelda1="http://wilma.cab.u-szeged.hu:8080/ cocoon/xslp1.xml"> <xsl:template match="Pelda1:Feladat"> ez kerül az adott elem helyére </xsl:template> </xsl:stylesheet>
Példa(XML) <?xml version="1.0" encoding="ISO-8859-2"?> <oldal> <cim>Hello</cim> <tartalom> <para>Ez egy bekezdés</para> </tartalom> </oldal>
Példa(XSLT) <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="oldal"> <html> <head> <title><xsl:value-of select="cim" /></title> </head> <body> <xsl:apply-templates /> </body> </html> </xsl:template> </xsl:stylesheet>
For-each <?xml version="1.0" encoding="ISO-8859-2"?> <oldal> <munkatársak> <név> <vezetéknév>Nagy</vezetéknév> <keresztnév>Tamás</keresztnév> </név> <vezetéknév>Szép</vezetéknév> <keresztnév>Ilona</keresztnév> <vezetéknév>Kiss</vezetéknév> <keresztnév>Tihamér</keresztnév> </munkatársak> </oldal>
For-each <?xml version="1.0" encoding="ISO-8859-2"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="munkatársak"> <html> <head> </head> <body> <table border="1" cellspacing="0" cellpadding="8"> <tr> <td><b>Vezetéknév</b></td> <td><b>Keresztnév</b></td> </tr> <xsl:for-each select="név" > <td><xsl:value-of select="vezetéknév" /></td> <td><xsl:value-of select="keresztnév" /></td> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Eredmény
Sorbarendezés <?xml version="1.0" encoding="ISO-8859-2"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="munkatársak"> <ul> <xsl:apply-templates select="név"> <xsl:sort select="vezetéknév"/> <xsl:sort select="keresztnév"/> </xsl:apply-templates> </ul> </xsl:template> <xsl:template match="név"> <li> <xsl:value-of select="vezetéknév"/> <xsl:text> </xsl:text> <xsl:value-of select="keresztnév"/> </li> </xsl:stylesheet>
Sorszámozás <?xml version="1.0" encoding="ISO-8859-2"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="munkatársak"> <xsl:for-each select="név"> <xsl:sort select="vezetéknév"/> <xsl:sort select="keresztnév"/> <p> <xsl:number value="position()" format="1. "/> <xsl:value-of select="."/> </p> </xsl:for-each> </xsl:template> </xsl:stylesheet>
if <?xml version="1.0" encoding="ISO-8859-2"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="oldal"> <table> <xsl:apply-templates/> </table> </xsl:template> <xsl:template match="név"> <tr> <td> <xsl:if test="keresztnév='Ilona'">---></xsl:if> </td> </tr> </xsl:stylesheet>
WEBdav Közös munka elősegítése Kompatíbilis a HTTP-vel Azonosítás Zárolás Tulajdonság kezelés Hierarchia kezelés Kompatíbilis a HTTP-vel
Metódusok PROPFIND -- lekérdezi az URI segítségével megcímezett erőforrás általunk megadott paramétereit. PROPPATCH -- manipulálja URI segítségével megcímezett erőforrás általunk megadott paramétereit. MKCOL -- segítségével tudunk új erőforrásokat, erőforráshalmazokat létrehozni GET, HEAD -- változatlan POST -- változatlan DELETE -- erőforrások, vagy erőforrások halmazának törlése, ha egyszerre többet szeretnénk törölni és egyet vagy többet nem tudunk törölni akkor egyet sem fog törölni. PUT -- erőforrásokat tölthetünk fel a szerverre, ha a megfelelő hierarchia már lére van hozva a MKCOL által COPY -- erőforrások, erőforráshalmazok másolását biztosítja beállítható mélységben MOVE -- hasonló mint a COPY csak törli az erőforrást LOCK – zárolás UNLOCK -- zárolás feloldása
Zárolás Shared Exclusive XML kód Paraméter továbbítás
Példa PROPPATCH /bar.html HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset="utf-8„ Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:propertyupdate xmlns:D="DAV:" xmlns:Z="http://www.w3.com/standards/z39.50/"> <D:set> <D:prop> <Z:authors> <Z:Author>Jim Whitehead</Z:Author> <Z:Author>Roy Fielding</Z:Author> </Z:authors> </D:prop> </D:set> <D:remove> <D:prop><Z:Copyright-Owner/></D:prop> </D:remove> </D:propertyupdate>
SyncML Tartalom szinkronizálás HTTP protokollra épül XML alapú Kliens-szerver Nyitott szabvány Mobile computing has an Achilles heel - data synchronization. All the popular mobile devices - handheld computers, mobile phones, pagers, laptops - synchronize their data with network applications, desktop calendars, and other locations where information is stored. This ability to access and update information on the fly is key to the pervasive nature of mobile computing. Yet, today, almost every device uses a different technology for performing data synchronization. By definition, mobile users are not always connected to a network and its stored data. Users retrieve data from the network and store it on the mobile device, where they access and manipulate the local copy of the data. Periodically, users reconnect with the network to send any local changes back to the networked data repository. Users also have the opportunity to learn about updates made to the networked data while the device was disconnected. Occasionally, they need to resolve conflicts among the updates made to the networked data. This reconciliation operation - where updates are exchanged and conflicts are resolved -is known as data synchronization. Data synchronization, then, is the process of making two sets of data look identical. For a mobile device, synchronization applies to the data that the mobile device stores locally. A data synchronization protocol defines the workflow for communication during a data synchronization session when the mobile device is connected to the network. The protocol must support naming and identification of records, common protocol commands to synchronize local and network data, and it can support identification and resolution of synchronization conflicts.
Függvények <Add> adat hozzáadás <Alert> értesíti a célt <Atomic> együtt kell végrehajtani <Copy> adatok másolása <Delete> adat törlése <Exec> program futtatása <Get> adat letöltése <Map>két adatkészlet közötti kapcsolat frissítése <Put> felmásolás <Replace> felülírás <Search> keresés <Sequence> a programok sorban hajtódjonak végre <Sync> két adathalmazt szinkronizál
Mobil rendszerek 530 millió előfizető 2001.ben 1000 millió 2004-ben A készülékek többsége alkalmas lesz multimédia befogadására (email,push,pull) A fejlesztések összefogása -> WAP fórum www.wapforum.org (a résztvevők rendelkeznek gyártókapacitás 90%-ával) WAP Wireless Application Protocol de-facto szabvány mely leírja a multimédiás adatok prezentálását és átvitelét
A siker titka ‘Killer’ alkalmazások Helyhez kötött: Válalati: Valós idejű közlekedési információk Esemény, étterem ajánlók Személyre szabott szolgáltatások …. Válalati: Email elérés Adatbázis elérés Információ frissítés (push) Pénzügyi szolgáltatások: Pénzügyi tranzakciók Számla fizetés … Utazási szolgáltatások: Menetrendek Foglalások Játékok
Problémák Eszköz: Hálózat: gyengébb CPU kisebb ROM, RAM korlátozott energia kicsi kijelző különböző beviteli eszközök Hálózat: kisebb sávszélesség nagyobb késleltetés kisseb kapcsolat stabilitás kevésbé megjósolható rendelkezésre állás Más a WAP felhasználók igénye mint az asztali számítógép használóké (ár, elérhetőség, feladatok) Ezek a tulajdonságok nem fognak jelentősen megváltozni a közeljövőben
WAP alkalmazás váz WAE User agent Push Multimedia Messaging Content Formats
WAP architektúra Felhasználja az eddigi technológiákat (HTTP -> WAP Gateway) Az átviteli réteg fölé épül így elfedi az átviteli technológiák közötti különbséget (SMS, GSM, USSD) UDP -> WDP TCP -> WTP TLS -> WTLS Micro Browser Hypermedia transfer Streaming Message Transfer
WAP architektúra
WAP rétegek
WML Kártyacsomag (Deck) Kártya (Card) <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN” "http://www.wapforum.org/DTD/wml\_1.1.xml"> <wml> <card id="FC" title="Első Kártya"> <p> Helló Világ ! </p> </card> </wml>
Megjelenítés Nokia Mobile Internet Toolkit Cocoon
Formázás <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="Formázás"> <p> egyszeru<br/> <em>kiemelt</em><br/> <strong>eros</strong><br/> <b>vastag</b><br/> <i>dolt</i><br/> <u>aláhúzott</u><br/> <big>nagy</big><br/> <small>kicsi</small> </p> </card> </wml>
Hivatkozások anchor elem go prev refresh <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="elso" title="Elso"> <p> Az elso kártya <br/> <anchor title="Link">A másodikra! <go href="#masodik"/> </anchor></p> </card> <card id="masodik" title="Második"> <p>A második kártya. <anchor title="Link">Az előző! <go href="#elso"/> </wml>
Felhasználói bevitel input név érték típus (text,passwd) formátum cím sorrend
Formátum NNNNN\-NNN A -- minden nagybetűt engedélyez a -- minden kisbetűt engedélyez N -- minden számot engedélyez X -- minden nagybetűt és számot engedélyez x -- minden kisbetűt és számot engedélyez M -- mindent engedélyez *f -- bármennyi f típusú karaktert engedélyez (itt f a fenti értékeket veheti fel) nf -- n f típusú karaktert engedélyez (itt f a fenti értékeket veheti fel) \C -- a C vagy bármely más karaktert beilleszti az adott helyre NNNNN\-NNN
Select Select Options Optogroup <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="elso" title="Első"> <p> <select name="csoport"> <option value="1">Elso csoport</option> <option value="2">Második csoport</option> </select> </p> </card> </wml>
Timer <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card ontimer="wml1.wml"><timer value="30"/> <p>Ez 30 másodpecig látható utána a legelsö példának megfelelö oldal töltodik be</p> </card> </wml>
Változók <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="c1"> <p> <select name="evfolyam"> <option value="3">Harmad éves</option> <option value="4">Negyed éves</option> </select> <a href="#c2" title="Tovább">Tovább</a> </p> </card> <card id="c2"> Az elözö oldalon a $evfolyam. évfolyamot választottad ki</p> </wml>