1 / 25

METAJĘZYKI 5

METAJĘZYKI 5. dr inż. Robert Berezowski e-mail: robert.berezowski@ie.tu.koszalin.pl Ul. Śniadeckich 2 Pokój 223A. Politechnika Koszalińska Wydział Elektroniki i Informatyki Katedra Inżynierii Komputerowej. kantor. notowanie. notowanie. wydarzenie. data. kursy. dzien. rok. korona.

prisca
Download Presentation

METAJĘZYKI 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. METAJĘZYKI5 dr inż. Robert Berezowski e-mail: robert.berezowski@ie.tu.koszalin.pl Ul. Śniadeckich 2 Pokój 223A Politechnika Koszalińska Wydział Elektroniki i Informatyki Katedra Inżynierii Komputerowej METAJĘZYKI

  2. kantor notowanie notowanie wydarzenie data kursy dzien rok korona miesiac hrywna dolar euro funt Dokument kantor.xml METAJĘZYKI

  3. Zmienne - xsl:variable • Deklaracja zmiennych • <xsl:variable name=„xx” select=”wartość”/> • <xsl:variable name=„xx”>wartość</xsl:variable> • Użycie: • <xsl:value-of select=„$xx”/> • Zmienna w XML – • raz zapisać, wielokrotnie odczytać. • nie ma możliwości modyfikacji • żywotność ograniczona do elementu wewnątrz którego została zadeklarowana <xsl:template match="/"> <HTML><BODY> <H1>Kantorek! </H1> <xsl:for-each select="kantor/notowanie[1]/kursy/*"> <xsl:variable name="nazwa"> <xsl:value-of select="name()"/> </xsl:variable> <xsl:value-of select="$nazwa"/><BR/> </xsl:for-each> </BODY></HTML> </xsl:template> METAJĘZYKI

  4. Zmienne - xsl:variable • Przykład <xsl:variable name="data"> <xsl:value-of select="data/dzien"/>/ <xsl:value-of select="data/miesiac"/>/ <xsl:value-of select="data/rok"/> </xsl:variable> . . . <td><xsl:value-of select="$data"/></td> METAJĘZYKI

  5. Zmienne – przykłady tekstów <xsl:value-of select=„text()"/> <xsl:value-of select="substring(name(),1,3)"/> <xsl:value-of select="substring-after(text(),'.')"/> <xsl:value-of select="translate(text(),'.',',')"/> METAJĘZYKI

  6. <xsl:template match="/"> <HTML> <BODY bgcolor="lime"> <H1>Kantorek! </H1> <xsl:for-each select="kantor/notowanie"> <xsl:variable name="nazwa" select="."/> ... <xsl:value-of select="$nazwa/kursy/funt"/> ... <BR/> </xsl:for-each> </BODY></HTML> </xsl:template> Zmienne – przykłady drzew <xsl:template match="/"> <HTML> <BODY bgcolor="lime"> <H1>Kantorek! </H1> <xsl:for-each select="kantor/notowanie"> <xsl:variable name="nazwa" select="."/> ... <xsl:value-of select="$nazwa/data[rok=2004]"/> ... <BR/> </xsl:for-each> </BODY></HTML> </xsl:template> METAJĘZYKI

  7. Zmienna globalna i lokalna <xsl:template match="/"> <HTML> <BODY bgcolor="lime"> <H1>Kantorek! </H1> <xsl:variable name="nazwa">... <xsl:for-each select="kantor/notowanie"> <xsl:value-of select="data/miesiac"/>, </xsl:for-each>... </xsl:variable> <xsl:value-of select="$nazwa"/> </BODY></HTML> </xsl:template> Zmienna lokalna wewnątrz reguły „/” <xsl:variable name="nazwa">... <xsl:for-each select="/kantor/notowanie"> <xsl:value-of select="data/miesiac"/>, </xsl:for-each>... </xsl:variable> <xsl:template match="/"> <HTML> <BODY bgcolor="lime"> <H1>Kantorek! </H1> <xsl:value-of select="$nazwa"/> </BODY></HTML> </xsl:template> Zmienna globalna wewnątrz elementu <xsl:stylesheet...> METAJĘZYKI

  8. <xsl:variablename="imie">Jacek</xsl:variable> <xsl:templatematch="audycja"> <xsl:iftest="@osoba=$imie"> <table border="1" width="100%"> <tr> <td width="60"><xsl:value-of select="@osoba"/></td> <td width="80"><xsl:value-of select="text()"/></td> <td width="50"><xsl:value-of select="@data"/></td> <td width="40"><xsl:value-of select="@godz"/></td> <td width="30"><xsl:value-of select="@czas"/></td> </tr> </table> </xsl:if> </xsl:template> METAJĘZYKI

  9. <xsl:templatematch="/program"> <html><body> <table border="1"> <xsl:for-eachselect="//audycja[not(@osoba=preceding::*/@osoba)]"> <xsl:variablename="kto" select="@osoba"/> <tr> <td><xsl:value-ofselect="$kto"/></td> <td> <table border="1" width="100%"> <xsl:for-eachselect="//audycja[@osoba=$kto]"> <tr> <td><xsl:value-ofselect="../@nazwa"/></td> <td><xsl:value-ofselect="text()"/></td> <td><xsl:value-ofselect="@data"/></td> </tr> </xsl:for-each> </table> </td> </tr> </xsl:for-each> </table> </body></html> </xsl:template> METAJĘZYKI

  10. document() • Funkcja document() • pozwala pobierać dane z innych źródeł XML, zamiast ze źródła podanego w wywołaniu procesora. • Użycie: document(url), document(‘jakis_plik’) <xsl:variable name="kantor2" select="document('kantor2.xml')"/> <xsl:template match="/"> <table border="1"><tr><td>data</td><td>funt</td><td>euro</td></tr> <xsl:for-each select="kantor/notowanie"> <tr><td><xsl:value-of select="data"/></td> <td><xsl:value-of select="kursy/funt"/></td> <td><xsl:value-of select="kursy/euro"/></td></tr> </xsl:for-each> <tr><td>data</td><td>funt</td><td>euro</td></tr> <xsl:for-each select="$kantor2/kantor/notowanie"> <tr><td><xsl:value-of select="data"/></td> <td><xsl:value-of select="kursy/funt"/></td> <td><xsl:value-of select="kursy/euro"/></td></tr> </xsl:for-each></table></xsl:template> METAJĘZYKI

  11. METAJĘZYKI

  12. Parametry – xsl:param • Parametry pozwalają dynamicznie zmienić postać wyniku • Rodzaje: • Globalne – pobierające dane z poza arkusza, deklarowane w elemencie <xsl:stylesheet...> • Lokalne – używane wewnątrz reguł do pobierania danych z reguły wywołującej. • Deklaracja: • <xsl:param name=„nazwa” select=„wartość”/> • <xsl:param name=„nazwa”>wartość</xsl:param> • Wywołanie reguły z parametrami: <xsl:call-template name=„max”> <xsl:with-param name=„liczba1” select=„notowanie[1]/kursy/funt”/> <xsl:with-param name=„liczba2” select=„notowanie[2]/kursy/funt”/> </xsl:call-template> METAJĘZYKI

  13. <xsl:templatematch="/program"> <h1> <xsl:call-templatename="naglowek"/> <xsl:call-templatename="spis"> <xsl:with-paramname="drzewo" select="."/> </xsl:call-template> <xsl:apply-templates/> </h1> </xsl:template> <xsl:templatematch="kanal"> <a name="{@nazwa}"> <h2> <xsl:value-ofselect="@nazwa"/> </h2></a> <table border=„1”><tr><td> <xsl:apply-templates/> </td></tr></table> </xsl:template> <xsl:templatename="spis"> <xsl:paramname="drzewo"/> <xsl:for-eachselect="$drzewo/kanal"> --| <a href="#{@nazwa}"><xsl:value-ofselect="@nazwa"/></a> |-- </xsl:for-each> </xsl:template> METAJĘZYKI

  14. <xsl:template match="/"> <HTML><BODY bgcolor="lime"> <TABLE border="1"> <xsl:call-template name="tabela"> <xsl:with-param name="plik" select="."/> </xsl:call-template> <xsl:call-template name="tabela"> <xsl:with-param name="plik" select="document('kantor2.xml')"/> </xsl:call-template> </TABLE></BODY></HTML> </xsl:template> Przykład użycia parametrów lokalnych <xsl:template name="tabela"> <xsl:param name="plik"/> <tr><td>data</td><td>funt</td><td>euro</td></tr> <xsl:for-each select="$plik/kantor/notowanie"> <tr><td><xsl:value-of select="data"/></td> <td><xsl:value-of select="kursy/funt"/></td> <td><xsl:value-of select="kursy/euro"/></td></tr> </xsl:for-each> </xsl:template> METAJĘZYKI

  15. <xsl:param name="waluta”>euro</xsl:param> <xsl:template match="/"> <HTML><BODY bgcolor="lime"><H1>Kantorek! </H1> <TABLE border="1"> <xsl:call-template name="tabela"> <xsl:with-param name="plik" select="."/> </xsl:call-template> <xsl:call-template name="tabela"> <xsl:with-param name="plik" select="document('kantor2.xml')"/> </xsl:call-template></TABLE></BODY></HTML> </xsl:template> Przykład użycia parametrów globalnych <xsl:template name="tabela"> <xsl:param name="plik"/> <tr><td>data</td><td>cena</td></tr> <xsl:for-each select="$plik/kantor/notowanie"> <tr><td><xsl:value-of select="data"/></td> <td><xsl:value-of select="kursy/*[name()=$waluta]"/></td></tr> </xsl:for-each> </xsl:template> METAJĘZYKI

  16. Wywołanie parametrów globalnych Plik kantor.html część body <BODY onload="init();" style="margin-top: '0'"> <button onclick="show('funt')">funty</button> <button onclick="show('dolar')">dolary</button> <button onclick="show('euro')">euro</button> <button onclick="show('hrywna')">hrywna</button> <button onclick="show('korona')">korona</button> <div id="ekran">wyniki</div> </BODY> METAJĘZYKI

  17. Plik kantor.html część head <SCRIPT language="jscript"> Wywołanie parametrów globalnych var xml, xsl, xsltmp; function init() {xml = new ActiveXObject('MSXML2.DOMDocument.4.0'); xml.async = false; xml.load('kantor.xml'); xsl=new ActiveXObject('MSXML2.FreeThreadedDOMDocument.4.0'); xsl.async = false; xsl.load('kantor-5.xsl'); xsltmp = new ActiveXObject("Msxml2.XSLTemplate.4.0"); xsltmp.stylesheet = xsl; } Wczytanie pliku xml Wczytanie pliku xsl function show(waluta) { var xslProc = xsltmp.createProcessor(); xslProc.input = xml; xslProc.addParameter("waluta", waluta, ""); xslProc.transform(); ekran.innerHTML = xslProc.output; } </SCRIPT> Dodanie parametru do pliku xsl Umieszczenie rezultatu w obiekcie ‘ekran’ METAJĘZYKI

  18. <xsl:template match="/program"> <xsl:call-template name="naglowek"/> <xsl:call-template name="spis"> <xsl:with-param name="drzewo" select="."/> </xsl:call-template> <xsl:apply-templates/> <xsl:call-template name="stopka"/> </xsl:template> <xsl:template match="kanal"> <a name="{@nazwa}"> <xsl:value-of select="@nazwa"/> </a> </xsl:template> <xsl:template name="naglowek"> <br/>Program telewizyjny - wybrane audycje<br/> </xsl:template> <xsl:template name="spis"> <xsl:param name="drzewo"/> <xsl:for-each select="$drzewo/kanal"> --| <a href="#{@nazwa}"> <xsl:value-of select="@nazwa"/></a> |-- </xsl:for-each> </xsl:template> Parametry i hiperłącza METAJĘZYKI

  19. function tr(program){ xmlFile = "tv.xml”; xslFile = "1x.xsl"; … objXSLTProc.addParameter("data", program, ""); … parent.pl1.innerHTML = objXSLTProc.output;} … <FORM> <INPUT TYPE="button" VALUE="TVP1" onClick="tr('TVP1');"> <INPUT TYPE="button" VALUE="TVP2" onClick="tr('TVP2');"> <INPUT TYPE="button" VALUE="TVN" onClick="tr('TVN');"> <INPUT TYPE="button" VALUE="POLSAT" onClick="tr('POLSAT');"> </FORM><hr> <div ID="pl1">pokaz</div> <xsl:paramname="data">*</xsl:param> <xsl:templatematch="/program"> <xsl:apply-templatesselect="kanal[@nazwa=$data]"/> </xsl:template> <xsl:templatematch="kanal"> <xsl:variablename="opis" select="document('tvopis.xml')"/> … <xsl:apply-templates> <xsl:sortselect="@osoba"/> </xsl:apply-templates> </xsl:template> METAJĘZYKI

  20. function tr(program){ xmlFile = "tv.xml”; xslFile = "2x.xsl"; … objXSLTProc.addParameter("data", program, ""); … parent.pl1.innerHTML = objXSLTProc.output;} <FORM> <INPUT TYPE="button" VALUE="Justyna" onClick="tr('Justyna');"> <INPUT TYPE="button" VALUE="Jacek" onClick="tr('Jacek');"> <INPUT TYPE="button" VALUE="Grzesiek" onClick="tr('Grzesiek');"> </FORM> <hr> <div ID="pl1">pokaz</div> <xsl:paramname="data">*</xsl:param> <xsl:templatematch="/program"> <xsl:apply-templatesselect="kanal"/> </xsl:template> <xsl:templatematch="kanal"> <xsl:apply-templatesselect="audycja[@osoba=$data]"> <xsl:sortselect="@osoba"/> </xsl:apply-templates> </xsl:template> <xsl:templatematch="audycja"> <table border="1" width="100%„> METAJĘZYKI

  21. <xsl:param name="obiekt1">*</xsl:param> <xsl:param name="obiekt2">*</xsl:param> <xsl:template match="/program"> function tr(pr1,pr2){ xmlFile = "tv.xml”; xslFile = "tv.xsl"; objXSLTProc.addParameter("obiekt1", pr1, ""); objXSLTProc.addParameter("obiekt2", pr2, ""); document.body.innerHTML = objXSLTProc.output;} … <FORM> <INPUT TYPE="text" id="pole1" /> <INPUT TYPE="text" id="pole2" /> <INPUT TYPE="button" value="szukaj" onClick="tr(document.getElementById('pole1').value, document.getElementById('pole2').value)"/> </FORM><hr/> szukane: <div id=„pokaz">brak</div> <xsl:apply-templates select="kanal"> <xsl:sort select="audycja/@czas"/> </xsl:apply-templates> </xsl:template> <xsl:template match="kanal"> <xsl:apply-templates select="audycja[(@*=$obiekt1) or (@*=$obiekt2) or (.=$obiekt1) or (.=$obiekt2)]"> </xsl:apply-templates> </xsl:template> METAJĘZYKI

  22. <xsl:stylesheet … xmlns:msxsl="urn:schemas-microsoft-com:xslt"> <xsl:param name="sort1">osoba</xsl:param> <xsl:variable name="tylko.audycje"> <element> <xsl:for-each select="/program/kanal„> <xsl:for-each select="audycja"> <xsl:copy-of select="."/> </xsl:for-each> </xsl:for-each> </element> </xsl:variable> <xsl:template match="/program"> function tr(pr3){xmlFile = "tv.xml”; xslFile = "tv.xsl"; objXSLTProc.addParameter("sort1", pr3, ""); document.body.innerHTML = objXSLTProc.output; parent.pokaz.innerHTML= " sort: "+pr3;} … <FORM><INPUT TYPE="text" id="pole3" /> <INPUT TYPE="button" value="szukaj" onClick="tr(document.getElementById('pole3').value)"/> </FORM><hr/> szukane: <div id="pokaz">brak</div> <xsl:call-template name="wypisz"> <xsl:with-param name="wszystkie" select="$tylko.audycje"/> </xsl:call-template> … <xsl:template name="wypisz„> <xsl:param name="wszystkie"/> <xsl:for-each select="msxsl:node-set($wszystkie)/element/audycja"> <xsl:sort select="@*[name()=$sort1]"/> <table border="1" width="100%„><tr> <td width="60"><xsl:value-of select="@osoba"/></td> </xsl:template> METAJĘZYKI

  23. WYSPY XML w HTML • Pozwalają umieścić treści z dokumentu xml wewnątrz dokumentu html <HTML><BODY bgcolor=„lime”> <XML ID="wyspa" src="kantor3.xml"></XML> <table border="1" datasrc="#wyspa"> <thead><th colspan="3">data</th><th>euro</th> <th>dolar</th><th>funt</th><th>hrywna</th> <th>korona</th></thead> <tr><td><span datafld="dzien"/></td><td> <span datafld="miesiac"/></td><td> <span datafld="rok"/></td> <td><span datafld="dolar"/></td> <td><span datafld="euro"/></td> <td><span datafld="funt"/></td> <td><span datafld="hrywna"/></td> <td><span datafld="korona"/></td> </tr></table></BODY></HTML> METAJĘZYKI

  24. SVG – Scalable Vector Graphics • Język opisu grafiki dwuwymiarowej • Grafika jest opisywana za pomocą równań matematycznych przez co zajmuje mniej pamięci niż pliki graficzne typu gif, jpg. • Kilka linków • www.w3.org/TR/SVG - specyfikacja SVG • www.w3.org/Graphics/SVG - strona domowa W3C SVG • www.irt.org/articles/js176 - troche linków i artykułów • www.adobe.com/svg - strona Adobe o SVG, kilka tutoriali METAJĘZYKI

  25. Przykłady svg • Linia od punktu (x1=10,y1=100) do punktu (x2=222,y2=234) w kolorze czerwonym <line x1="10" y1="100" x2="222" y2="234" style="fill:red"/> • Prostokąt od punktu (x=0,y=0) o wysokości 10 (height) i długości 100 (width) w wypełniony kolorem czerwonym <rect x="0" y="0" height="10" width="100" style="fill:red"/> • Koło o środku w punkcie (cx=150,cy=150) i promieniu r=50 wypełniony kolorem zielonym, ze stopniem przeźroczystości 0.5 <circle cx="150" cy="150" r="50„ style="fill:green; fill-opacity: 0.5"/> • tekst z określonymi atrybutami: <text style = "fill: red; font-size: 24pt" x = "25" y = "250"> juz niedlugo majowka</text> • Animacja elementów – obrót o kąt od 0 do 360 stopni w czasie 4s nieskończoną ilość razy <animateTransform attributeName="transform" type="rotate" dur="4s" from="0" to="360„ repeatCount = "indefinite"/> METAJĘZYKI

More Related