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 &lt; $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:

Podobne dokumenty