310 likes | 417 Views
WEB Technológiák. WEB-DB és XML. dr. Kovács László. ME Általános Informatikai Tsz. XSL. 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. XSL. XSLT feldolgozó. XSLT.
E N D
WEB Technológiák WEB-DB és XML dr. Kovács László ME Általános Informatikai Tsz.
XSL 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 XSL XSLT feldolgozó XSLT K.L.
XSL XSL: formázó objektumok együttese XML jellegű formátum A formázás négyszögletes területekre bontottan történik http://www.w3.org/TR/NOTE-XSL 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 K.L.
XSL 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 </fo:inline-sequence> Utána valami itt a minta szöveg Előtte valami Utána valami Kb. 50 elem és 300 attributum a leírás része K.L.
XSLT 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 DTD2 XML XSLT feldolgozó stiluslap XML K.L.
XSLT <?xml version="1.0" ?> <?xml-stylesheet href="x1.xsl" type="text/xsl"?> <babak> <baba> <nev>Anni</nev> </baba> <baba> <nev>Anni</nev> </baba> </babak> Az XML dokumnetumban hivatkozni kell az alkalmazandó stiluslapra K.L.
XSLT <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <I>GYOKER</I> </xsl:template> </xsl:stylesheet> A stiluslap megadja a konverzió menetét K.L.
XSLT 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 <xsl:template match=feltétel > ..... </xsl:template> <xsl:template match=”/”> <xsl:template match=”*”> <xsl:template match=”auto”> <xsl:template match=”auto/tulaj”> K.L.
XSLT XSLT transzformációs elemek Gyerek elemek feldolgozása: <xsl:apply-templates/> <xsl:template match=”/”> <H1>Itt a gyoker</H1><BR> <xsl:apply-templates/> </xsl:template> <xsl:template match=”babak”> <H2>babak</H2><BR> <xsl:apply-templates/> </xsl:template> <xsl:template match=”baba”> <H3>babak</H3><BR> </xsl:template> K.L.
XSLT XSLT transzformációs elemek A rekurziós feldolgozási lépések szűkítése bizonyos elemekre: <xsl:apply-templates select=”szelekciós feltétel” > A szelekciós feltétel XPATH szabványban adott XPATH feltételek enev enev1/enev2 enev1/*/enev2 enev[felt] enev[@a=e] K.L.
XSLT XSLT transzformációs elemek Elem értékének kiiratása: <xsl:value-of/> Elemek rendezése <xsl:sort select=”ertek” /> <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"><xsl:apply-templates/> </xsl:template> <xsl:template match="babak"> <xsl:apply-templates><xsl:sort/> </xsl:apply-templates> </xsl:template> <xsl:template match="baba"> <xsl:value-of/><BR/> </xsl:template> </xsl:stylesheet> K.L.
XSLT XSLT transzformációs elemek Új elem létrehozása: <xsl:element namespace=”ns” name=”nm”> ... </xsl:element> <xsl:template match=”babak”> <xsl:element name=”kor” > <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match=”babak”> <xsl:element name=”kor” > </xsl:element> <xsl:apply-templates/> </xsl:template> K.L.
XSLT XSLT transzformációs elemek <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="babak"> <xsl:element name="I"> AA </xsl:element> <xsl:apply-templates/> </xsl:template> <xsl:template match="baba"> <xsl:value-of/><BR/> </xsl:template> </xsl:stylesheet> K.L.
XSLT XSLT transzformációs elemek <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="babak"> <xsl:element name="I"> AA <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="baba"> <xsl:value-of/><BR/> </xsl:template> </xsl:stylesheet> K.L.
XSLT XSLT transzformációs elemek Feltételes végrehajtás: <xsl:if test=”kif”>.....</xsl:if> Változó létrehozás: <xsl:variable name=”nv”>érték</xsl:variable> <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="bab"><xsl:apply-templates/></xsl:template> <xsl:template match="baba"> <xsl:if test=" @tip='1' "> <HR/> </xsl:if> <xsl:value-of/><BR/></xsl:template> </xsl:stylesheet> K.L.
SAX 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 startElement Kezelő program SAX feldolgozó endElement K.L.
SAX 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 K.L.
SAX 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 K.L.
SAX Dokumentum olvasó létrehozása 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…”); } } K.L.
SAX 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) { } } K.L.
SAX 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); } K.L.
SAX 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 (); ... } K.L.
SAX 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) K.L.
DOM 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 dokumentum objektum Kezelő program DOM feldolgozó K.L.
DOM 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 K.L.
DOM Dokumentum olvasó létrehozása 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…”); } } K.L.
DOM 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) { } } K.L.
DOM Dokumentum objektum létrehozása Alap DOM interface: - DocumentFragment - Document - CharaterData - Text - Comment - Attr -Node - Element - DocumentType - Notation - Entity - Entitreference - ProcessingInstruction K.L.
DOM 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() ... K.L.
DOM 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) ... } K.L.
DOM <html> <body> <script language=”JavaScript”> 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); } } </script> K.L.