WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László
XSL K.L. A XML szabvány csak a tartalmat adja meg Nem tartalmaz megjelenítése vonatkozó elemeket XSL - stiluslap leíró nyelv XSLT - XSL átalakító nyelv CSS DSSSL DTD XML XSLT feldolgozó XSL XSLT
XSL K.L. XSL: formázó objektumok együttese XML jellegű formátum A formázás négyszögletes területekre bontottan történik XSL utasítás csoportok: - oldaltördelés, elrendezés - blokkok kezelése - soros elemek - táblázatok - listák - kapcsolatok XSL szabvány névtere: FO
XSL K.L. Előtte valami <fo:inline-sequence text-decoration=”underline” vertical-align=”super” letter-spacing=”1pt” word-spacing=”2pt” text-transformation=”lowercase” text-shadow=”nomal”> Itt a Minta szöveg Utána valami Előtte valami Utána valami itt a minta szöveg Kb. 50 elem és 300 attributum a leírás része
XSLT K.L. XSLT: az XML dokumentumok XSL, HTML formátumra való konverzióját írja le XSLT lehetőségei: - előtagokkal és utótagokkal kiegészíti a tartalmat - elemeket lehet elhagyni, átsorolni, sorba rndezni - új elemek létrehozatala - kijelöli az elemek osztályaira vonatkozó XSL formátumozó elemeket DTD1 XML XSLT feldolgozó stiluslapXML DTD2
XSLT K.L. Anni Anni Az XML dokumnetumban hivatkozni kell az alkalmazandó stiluslapra
XSLT K.L. GYOKER A stiluslap megadja a konverzió menetét
XSLT K.L. XSLT transzformációs elemek A feldolgozó felépíti a dokumentumhoz az elemek hierarchiáját, s s az illeszkedési minták alapján megkeresi mely elemeket hogyan kell átalakítania (átalakítás a gyökér elemmel kezdődik) Ügyelni a rekurzív folytatásra.....
XSLT K.L. XSLT transzformációs elemek Gyerek elemek feldolgozása: Itt a gyoker babak babak
XSLT K.L. XSLT transzformációs elemek A rekurziós feldolgozási lépések szűkítése bizonyos elemekre: A szelekciós feltétel XPATH szabványban adott XPATH feltételek enev enev1/enev2 enev1/*/enev2 enev[felt]
XSLT K.L. XSLT transzformációs elemek Elem értékének kiiratása: Elemek rendezése
XSLT K.L. XSLT transzformációs elemek Új elem létrehozása:...
XSLT K.L. XSLT transzformációs elemek AA
XSLT K.L. XSLT transzformációs elemek AA
XSLT K.L. XSLT transzformációs elemek Feltételes végrehajtás:..... Változó létrehozás: érték
SAX K.L. Az XML dokumentumok feldolgozó felülete SAX = Simple API for XML Az értelmező szekvenciálisan feldolgozza az XML dokumentumot, s minden fontosabb eseményről értesíti a kezelő programot callback mechanizmussal XML SAX feldolgozó Kezelő program startElement endElement
SAX K.L. A feldolgozó biztosít egy osztálykönyvtárt, melyen keresztül lehet definiálni és elérhetővé tenni a callback kezelő függvényeket. Java minta környezet Fontosabb lépések: - dokumentum olvasó létrehozása - tartalomkezelő keret létrehozása - az eseménykezelő metódusok létrehozása - hibakezelő metódusok létrehozása
SAX K.L. SAX kapcsolódási felületei: - Parser - DocumentHandler - AttributeList - ErrorHandler - Entity Resolver - Locator - DTDHandler A Parser az eldődleges felület, rajta keresztül lehet megadni a többi kezelő elemet Előre definiált osztályok
SAX K.L. import org.xml.sax.XMLReader; import org.apache.xerces.parsers.SAXParser ;.. public class SAXERT { public void kezelo(String URI) {... XMLReader parser = new SAXParser(); ….. } public static void main(String[] args) { SAXERT pdemo = new SAXERT(); pdemo.kezelo(”...uri…”); } Dokumentum olvasó létrehozása
SAX K.L. Dokumentum értelmezési folyamatának elindítása import org.xml.sax.SAXException;.. public void kezelo(String URI) { … try { XMLReader parser = new SAXParser(); parser.parse(); } catch (SAXException e) { }
SAX K.L. Tartalom kezelő keret létrehozása import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator;... Class Skezelo implements ContentHandler{ …kezelo metodusok } public void kezelo(String URI) { XMLReader parser = new SAXParser(); Skezelo Shand = new Skezelo(); parser.setContentHandler(Shand); parser.parse(uri); }
SAX K.L. Esemény kezelő metódusok létrehozása Class Skezelo implements ContentHandler{ public void startDocument() {... } throws SAXException (); public void endDocument() {... } throws SAXException (); public void startElement() {... } throws SAXException ();... }
SAX K.L. Esemény kezelő metódusok létrehozása - dokumentumban aktuális pozíció - dokumentum kezdete - dokumentum vége - elem kezdete - elem vége - prefix feldolgozás - karakter rész elérés - entity rész - direktivák - névterek - attributumok void startElement(String name, AttributeList atts)
DOM K.L. Az XML jellegű dokumentumok feldolgozó felülete DOM = Document Object Model Az értelmező előállít egy olyan objektumot, amely az XML dokumentumot tartalmazza. A kezelő ezen objektum tulajdonságain, metódusain keresztül tud dokumentumkezelést végezni XML DOM feldolgozó Kezelő program dokumentum objektum
DOM K.L. A feldolgozó biztosít egy osztálykönyvtárt, melyen keresztül lehet létrehozni és elérhetővé tenni a dokumentum objektumot Java minta környezet Fontosabb lépések: - dokumentum olvasó létrehozása - objektum létrehozása - dokumentum tagelemek elérése - dokumentum metódusok meghívása
DOM K.L. import org.apache.xerces.parsers.DOMParser;.. public class DOMERT { public void kezelo(String URI) {... DOMParser parser = new DOMParser(); ….. } public static void main(String[] args) { DOMERT pdemo = new DOMERT(); pdemo.kezelo(”...uri…”); } Dokumentum olvasó létrehozása
DOM K.L. Dokumentum objektum létrehozása import org.apache.xerces.parsers.DOMParser;.. public void kezelo(String URI) { … DOMparser parser = new DOMParser(); try { parser.parse(uri); Document doc = parser.getDocument() } catch (Exception e) { }
DOM K.L. Dokumentum objektum létrehozása Alap DOM interface: - DocumentFragment - Document - CharaterData- Text - Comment - Attr -Node- Element - DocumentType - Notation - Entity - Entitreference - ProcessingInstruction
DOM K.L. Node elemek metódusai Navigációs műveletek - getFirstChild()- getNodeType() - getLastChild()- getNodeName() - getNextSibling()- getNodeValue() - getPreviousSibling()- getAttributes() - getParentNode()- getChildNodes() - getChildNodes()... Műveletek - removeChild()- createElement() - insertBefore()- createTextNode() - appendChild()- createAttribute() - replaceChild()...
DOM K.L. String name = node.getNodeName(); System.out.print(”<” + name); NamedNodeMape atts = node.getAttributes(); for (int i=0; i<atts.getlength(); i++) { Node cur = atts.item(i); System.out.print (cur.getNodeName() + ”:” + cur.getNodeValue()); } NodeList ch = node.getChildNodes(); If (ch != null) {... ch.item(i)... }
DOM K.L. function ellenoriz(){ var xDoc = new ActiveXObject(”Microsoft.XMLDOM”); xDoc.async = ”false”; xDoc.validateOnParse = ”true”; xDoc.load (this.beolv.xmlurl.value); if (xDoc.parseError.errorCode != 0 ){ document.write(”Feldolgozási hiba”+ xDoc.parseError.ErorCode); } else { window.open(this.beolv.xmlurl.value); }