XML
| KOTISIVU | KURSSIKUVAUS | OHJELMA |
Harjoitusesimerkki 7f: XSL ja funktionaalinen ohjelmointi
Seuraava XSL-muunnos laskee luvun kertoman (factorial.xsl). Tutki sen logiikka.
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!-- Defining and Calling the Factorial
Function in XSLT -->
<!-- A separate file factorial-main.xml
provides specific arguments -->
<!-- call factorial on selected integer
argument n -->
<xsl:template match="/arguments/a1">
<html>
<head>
<title>factorial(<xsl:value-of select="."/>)</title>
</head>
<body>
<xsl:call-template name="factorial">
<xsl:with-param name="n" select="."/>
</xsl:call-template>
</body></html>
</xsl:template>
<!-- define factorial(n) recursively using factor variable -->
<xsl:template name="factorial">
<xsl:param name="n"/>
<xsl:choose>
<xsl:when test="$n = 0">1</xsl:when>
<!-- factorial(0) = 1 -->
<xsl:when test="$n > 0"> <!-- factorial(n) = -->
<xsl:variable name="factor">
<xsl:call-template name="factorial">
<xsl:with-param name="n" select="$n - 1"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$n * $factor"/> <!-- n*factorial(n-1) -->
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Kutsuva XML-tiedosto:
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="factorial.xsl" type="text/xsl"?><!-- change integer for different applications -->
<arguments><a1>10</a1>
</arguments>
Kokeile. Mieti, miten ohjelma voidaan muuntaa esim. sellaiseksi, että se laskee monta eri kertomaa, tai vaikka summan. Tai jos keksit, kehitä jokin muu ohjelma, joka soveltuu XSL-kieleen.
| KOTISIVU | KURSSIKUVAUS | OHJELMA |
Päivittänyt: Jaana Holvikivi Muutettu 2.2.2010 |