1 / 24

XSLT

XSLT. Jakub Wojciechowski. Plan prezentacji. XPath Podstawy XSLT Ogólna budowa Zastosowanie XPath w szablonach Elementy. Xpath - wprowadzenie. Służy do znajdywania elementów dokumentu XML spełniających określony warunek

fiona-cash
Download Presentation

XSLT

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. XSLT Jakub Wojciechowski Jakub Wojciechowski PJWSTK 2002

  2. Plan prezentacji • XPath • Podstawy • XSLT • Ogólna budowa • Zastosowanie XPath w szablonach • Elementy Jakub Wojciechowski PJWSTK 2002

  3. Xpath - wprowadzenie • Służy do znajdywania elementów dokumentu XML spełniających określony warunek • Składnia zbliżona do nazw w systemie plików (przykład: /samochody/fiat/ ) Jakub Wojciechowski PJWSTK 2002

  4. XPath cz. 1 XML: <AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> Wyrażenie XPath: /AAA/BBB ścieżka bezwzględna Jakub Wojciechowski PJWSTK 2002

  5. XPath cz. 2 XML: <AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> Wyrażenie XPath: //BBB Wszystkie wystąpienia wzorca w dokumencie XML Jakub Wojciechowski PJWSTK 2002

  6. XPath cz. 3 XML: <AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> <CCC/> </DDD> <CCC/> </AAA> Wyrażenie XPath: /AAA/DDD/* Wszystkie elemnty leżące „głębiej” Jakub Wojciechowski PJWSTK 2002

  7. XPath cz. 4 atrybuty XML: <AAA> <BBB id=”1”/> <CCC/> <BBB id=”2”/> <BBB name=”bb”/> <DDD> <BBB/> </DDD> <CCC/> </AAA> Wyrażenie XPath: //BBB[@id=‘2’] //AAA/BBB[@id=‘2’] Wyrażenie wybierające element BBB z atrybutem id o wartości 2 Jakub Wojciechowski PJWSTK 2002

  8. XPath cz. 5 XML: <AAA> <BBB id=”1/> <BBB id=”2”/> <BBB id=”3”/> <BBB/> <BBB/> <BBB id=”6”/> <BBB name=”bb”/> </AAA> Wyrażenie XPath: //BBB[position() mod 2 =0] Wybierz parzyste elemety BBB Jakub Wojciechowski PJWSTK 2002

  9. XSLT • Przetwarzanie dokumentów XML na inne dokumenty XML (w szczególności na HTML) • Zbiór szablonów przekształcających elementy pasujące do wzorca na np. kod HTML Jakub Wojciechowski PJWSTK 2002

  10. XSLT budowa <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="/"> ... </xsl:template> <xsl:template match="/AAA"> ... </xsl:template> </xsl:stylesheet> Jakub Wojciechowski PJWSTK 2002

  11. Zastosowanie XPath w XSLT <xsl:template match="/"> <html> <xsl:apply-templates match=”/AA/BB[@color=‘blue’]”/> </html> </xsl:template> <xsl:template match="BB"> <b><xsl:value-of select=”@name”/></b><br/> </xsl:template> Jakub Wojciechowski PJWSTK 2002

  12. <xsl:template match="/"> <html> <xsl:apply-templates match=”/AA/BB[@color=‘blue’]”/> </html> </xsl:template> <xsl:template match="/AAA"> <b><xsl:value-of select=”@name”/></b><br/> </xsl:template> <AA> <BB color="red" name="aaaa"/> <BB color="blue" name="nazwa"/> <BB color="red" name="bbbb"/> <BB color="red" name="inny"/> <BB color="blue" name="numer"/> </AA> <html> <b>nazwa</b><br/> <b>numer</b><br/> </html> Jakub Wojciechowski PJWSTK 2002

  13. Element <xsl:template> • Atrybuty: • name – określa nazwę szablonu • match – określa do jakich elementów XML ma zostać użyty • mode – określa który w szablonów o tej samej nazwie zostanie użyty <xsl:template name=”lista”> </xsl: ...> <xsl:template match=”BB” mode=”wersja1”> </xsl:template> Jakub Wojciechowski PJWSTK 2002

  14. Wywoływanie szablonów • <xsl:apply-templates match=”/scieżka/”/> Wywołanie pasującego szablonu dla wszystkich wystąpień danego elementu. Dla każdego elementu oddzielne wywołanie szablonu. Możliwe jest posortowanie elementów przed wywołaniem szablonu. <xsl:apply-templates match=”/AA/BB”> <xsl:sort order = "descending" /> </xsl:apply-templates> Jakub Wojciechowski PJWSTK 2002

  15. Wywoływanie szablonów cz. 2 • <xsl:call-template name=”NazwaSzablonu”> Pojedyncze wywołanie szablonu. W przeciwieństwie do xsl:apply-templates, xsl:call-template nie zmienia aktualnej pozycji w dokumencie XML. Jakub Wojciechowski PJWSTK 2002

  16. Wypisywanie wartości <xsl:value-of select=”/scieżka”/> Wypisuje wartość znajdującą się pod podaną ścieżką Xpath np.: <xsl:value-of select=”/BBB/CCC/@id”/> Jakub Wojciechowski PJWSTK 2002

  17. Instrukcje warunkowe cz. 1 • <xsl:if test=”warunek”> </xsl:if> W waruku można podać wyrażenie boolowskie (np. @attr==‘2’) lub ścieżkę Xpath. Istnienie elementu pod podaną ścieżką jest równoznaczne z wartością TRUE; brak elementu => FALSE. Instrukcja <xsl:if > nie posiada ELSE! Znaki ‘<‘ i ‘>’ nie mogą być użyte do porównywania wartości. Zamiast nich wprowadzono oznaczenie &gt; dla > i &lt; dla <. Jakub Wojciechowski PJWSTK 2002

  18. Instrukcje warunkowe cz. 2 • <xsl:choose>(odpowiednik switch z Java, C) <xsl:when test=”warunek1”> ... </xsl:when> <xsl:when test=”warunek2”> ... </xsl:when> <xsl:otherwise> ... </xsl:otherwise> </xsl:choose> Jakub Wojciechowski PJWSTK 2002

  19. Pętla • <xsl:for-each select=”/scieżka”> ... </xsl:for-each> Przejście po wszystkich elementach leżących na danej ścieżce. Możliwe jest sortowanie jak przy xsl:apply-templates: <xsl:for-each select=”/scieżka”> <xsl:sort> </xsl:for-each> Jakub Wojciechowski PJWSTK 2002

  20. Parametry • Istnieje możliwość przekazania parametrów podczas wywoływania szablonu. <xsl:template name=”szab1”> <xsl:param name=”SIZE”/> <xsl:param name=”TYT” select=”brak”/> <xsl:value-of select=”$SIZE”/> </xsl:template> Wywołanie: <xsl:call-template name=”szab1”> <xsl:with-param name=”SIZE”>40</xsl:with-param> <xsl:with-param name=”TYT”><xsl:value-of select=”/BB/@tytul”/> </xsl:with-param> </xsl:call-template> Jakub Wojciechowski PJWSTK 2002

  21. Wszystko razem czyli przykład <nasdaq> <company> <name>MSTF</name> <price>57.69</price> <change>0.02</price> <vol>31,952,100</vol> <link>http://www.microsoft.com</link> </company> <company> <name>ORACLE</name> <price>11.90</price> <change>-2.06</price> <vol>46,174,700</vol> <link>http://www.oracle.com</link> </company> <company> <name>SUNW</name> <price>4.14</price> <change>-3.52</price> <vol>82,635,500</vol> <link>http://www.sun.com</link> </company> </nasdaq> Dokument XML z kursami akcji spółek giełdowych: Jakub Wojciechowski PJWSTK 2002

  22. Przykład XSLT <xsl:template match=”/”> <html> <table border=”1”> <tr><td>Nazwa</td> <td>cena</td> <td>zmiana</td> <td>obrót</td> </tr> <xsl:for-each select=”//company”> <tr> <td><a href="{./link}"><xsl:value-of select=”./name”/></a></td> <td><xsl:value-of select=”./price”/></td> <td> <xsl:choose> <xsl:when test="./change &gt; 0"> <font color="blue"><xsl:value-of select="./change"/>%</font> </xsl:when> <xsl:otherwise> <font color="red"><xsl:value-of select="./change"/>%</font> </xsl:otherwise> </xsl:choose> </td> <td><xsl:value-of select="./vol"/></td> </tr> </xsl:for-each> </table> </html> </xsl:template> Jakub Wojciechowski PJWSTK 2002

  23. Wynik transformacji <html> <table border="1"> <tr><td>Nazwa</td> <td>cena</td> <td>zmiana</td> <td>obrót</td> </tr> <tr><td><a href="www.microsoft.com">MSFT</a></td> <td>57.69</td> <td><font color="blue">0.02%</font></td> <td>31,952,100</td> </tr> <tr><td><a href="www.oracle.com">ORACLE</a></td> <td>11.90</td> <td><font color="red">-2.06%</font></td> <td>46,174,700</td> </tr> <tr><td><a href="www.sun.com">SUNW</a></td> <td>4.14</td> <td><font color="red">-3.52%</font></td> <td>82,635,500</td> </tr> </table> </html> Jakub Wojciechowski PJWSTK 2002

  24. Dziękuje ??? Pytania ??? Jakub Wojciechowski PJWSTK 2002

More Related