xsl:variable name="osoba"
Transkrypt
xsl:variable name="osoba"
XML – eXtensible Markup Language część 6 XSL transformations (XSLT) XSLT (ang. eXtensible Stylesheet Language Transformations) jest opartym na XML językiem transformacji dokumentów XML XSLT umożliwia „przetłumaczenie” dokumentów z jednego formatu XML na inny format XML, ale również na HTML, PDF i inne. Arkusze XSLT określają w jaki sposób przekształcić poszczególne elementy wejściowe pliku XML. dokument XML procesor XSLT arkusz XSLT plik wyjściowy (XML, HTML, PDF etc.) Element nie istnieje? Przykład <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="application/xml" href="arkusz.xsl"?> <spis_osob> <osoba> <imie>Marek</imie> <nazwisko>Nowak</nazwisko> <wiek>23</wiek> </osoba> <osoba> <imie>Tomasz</imie> <nazwisko>Pawlak</nazwisko> <wiek>33</wiek> </osoba> <osoba> <imie>Piotr</imie> <nazwisko>Kaczkowski</nazwisko> </osoba> </spis_osob> Element nie istnieje? Przykład (cd) <table border="1"> <tr> <th>First name</th> <th>Last name</th> <th>Age</th> </tr> <xsl:for-each select="spis_osob/osoba"> <tr> <td><xsl:value-of select="imie"/></td> <td><xsl:value-of select="nazwisko"/></td> <xsl:choose> <xsl:when test="wiek"> <td><xsl:value-of select="wiek"/></td> </xsl:when> <xsl:otherwise> <td><xsl:text>brak danych</xsl:text></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> <xsl:variable> Deklaracja lokalnej bądź globalnej zmiennej. Zmienna jest loklana jeżeli jest zadeklarowana w elemencie template. Składnia: <xsl:variable name="name" select="expression"> <!-- Content:template --> </xsl:variable> <xsl:variable> Nadanie wartości zmiennej przez atrybut. Przykład <xsl:variable name="osoba" select="'Przemek'"/> <xsl:template match="/"> <html><body> <h3>Spis</h3> <xsl:copy-of select="$osoba" /> </body></html> </xsl:template> W przeglądarce: <xsl:variable> Nadanie wartości zmiennej przez zawartość elementu. Przykład <xsl:variable name="osoba"> <osoba> <imie>Przemek</imie> <nazwisko>Kowal</nazwisko> <wiek>42</wiek> W przeglądarce: </osoba> </xsl:variable> <xsl:template match="/"> <html><body> <h3>Spis</h3> <xsl:copy-of select="$osoba"/> </body></html> </xsl:template> <xsl:variable> Nadanie wartości zmiennej przez atrybut. Przykład <xsl:variable name="osoba" select="'Przemek'"/> <xsl:template match="/"> <html><body> <h3>Spis</h3> <xsl:copy-of select="$osoba" /> </body> </html> </xsl:template> <xsl:variable name="osoba" select="'Agata'"/> W przeglądarce: <xsl:variable> Nadanie wartości zmiennej przez wyrażenie XPath. Przykład Dokument XML. <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="arkusz4.xsl"?> <tabela start="3" stop="11"> <nazwa>Tabela testowa</nazwa> </tabela> <xsl:variable> Przykład (cd) <xsl:variable name="start" select="/tabela/@start"/> <xsl:variable name="stop" select="/tabela/@stop"/> <xsl:variable name="nazwa" select="/tabela/nazwa"/> <xsl:template match="/"> <html> <body> <h3><xsl:value-of select="$nazwa"/></h3> <p>start = <xsl:value-of select="$start"/></p> <p>stop = <xsl:value-of select="$stop"/></p> </body> </html> </xsl:template> W przeglądarce: <xsl:variable> Przykład <xsl:variable name="start" select="/tabela/@start"/> <xsl:variable name="stop" select="/tabela/@stop"/> <xsl:variable name="zm1" select="$start + $stop"/> <xsl:variable name="zm2" select="$start + $stop + 10"/> <xsl:template match="/"> <html> <body> <p>zmienna 1 = <xsl:value-of select="$zm1"/></p> <p>zmienna 2 = <xsl:value-of select="$zm2"/></p> </body> </html> </xsl:template> W przeglądarce: <xsl:param> Deklaracja lokalnego bądź globalnego parametru. Parametr jest loklany jeżeli jest zadeklarowany w elemencie template. Składnia: <xsl:param name="name" select="expression"> <!-- Content:template --> </xsl:param> Atrybuty: • name – określa nazwę parametru (wymagany) • select – wartość w postaci wyrażenia XPath (opcjonalny) <xsl:param> Nadanie wartości zmiennej przez wyrażenie XPath. Przykład Dokument XML. <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="arkusz4.xsl"?> <tabela start="3" stop="11"> <nazwa>Tabela testowa</nazwa> </tabela> <xsl:param> Przykład (cd) <xsl:variable name="start" select="/tabela/@start"/> <xsl:variable name="stop" select="/tabela/@stop"/> <xsl:template match="/"> <html> <body> <h3>Wypisujemy liczby</h3> <xsl:call-template name="liczby"/> </body> </html> </xsl:template> . . . <xsl:param> Przykład (cd) <xsl:template name="liczby"> <xsl:param name="index" select="$start"/> <xsl:if test="$index < $stop+1"> <span><xsl:value-of select="$index"/></span> <xsl:call-template name="liczby"> <xsl:with-param name="index" select="$index + 1"/> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet> W przeglądarce: