1<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> 2 3<!DOCTYPE xsl:stylesheet [ 4 5<!-- namespace for SVG --> 6<!ENTITY svgns "http://www.w3.org/2000/svg"> 7<!-- namespace for XSLT --> 8<!ENTITY xsltns "http://www.w3.org/1999/XSL/Transform"> 9 10<!-- namespaces for several EXSLT extension modules (see 11 http://www.exslt.org for description) --> 12<!ENTITY cns "http://exslt.org/common"> <!-- EXSLT-Common --> 13<!ENTITY fns "http://exslt.org/functions"> <!-- EXSLT-Functions --> 14<!ENTITY mns "http://exslt.org/math"> <!-- EXSLT-Math --> 15 16<!ENTITY foons "http://www.foo.org/bar"> 17 18]> 19 20<xsl:stylesheet version="1.0" 21 xmlns="&svgns;" 22 xmlns:xsl="&xsltns;" 23 xmlns:exsl="&cns;" 24 xmlns:func="&fns;" 25 xmlns:math="&mns;" 26 xmlns:foo="&foons;" 27 extension-element-prefixes="exsl func math foo" 28 exclude-result-prefixes="xsl exsl func math"> 29 30<xsl:output method="xml" indent="yes" encoding="iso-8859-1" standalone="yes"/> 31 32<xsl:template match="/"> 33 34 <xsl:text>Largest number value: </xsl:text> 35 <xsl:value-of 36 select="math:max(rootelement/childelement/@val[string(number(.)) != 'NaN'])"/> 37 <xsl:text> 38Largest number value (computed by function foo:getMaxVal): </xsl:text> 39 <xsl:value-of select="foo:getMaxVal(rootelement/childelement)"/> 40 <xsl:text> 41Largest number value (computed by function foo:getMaxVal2): </xsl:text> 42 <xsl:value-of select="foo:getMaxVal2(rootelement/childelement)"/> 43</xsl:template> 44 45<func:function name="foo:getMaxVal"> 46 <xsl:param name="nodes"/> 47 48 <xsl:variable name="resNodes"> 49 <xsl:for-each select="$nodes"> 50 <xsl:if test="@val and string(number(@val)) != 'NaN'"> 51 <dummynode> 52 <xsl:value-of select="@val"/> 53 </dummynode> 54 </xsl:if> 55 </xsl:for-each> 56 </xsl:variable> 57 58 <xsl:variable name="resNodeSet" select="exsl:node-set($resNodes)"/> 59 60 <func:result select="math:max($resNodeSet/*)"/> 61</func:function> 62 63<func:function name="foo:getMaxVal2"> 64 <xsl:param name="nodes"/> 65 66 <xsl:variable name="resNodes"> 67 <xsl:for-each select="$nodes"> 68 <xsl:if test="@val and string(number(@val)) != 'NaN'"> 69 <dummynode> 70 <xsl:value-of select="@val"/> 71 </dummynode> 72 </xsl:if> 73 </xsl:for-each> 74 </xsl:variable> 75 76 <func:result select="math:max(exsl:node-set($resNodes)/*)"/> 77</func:function> 78 79</xsl:stylesheet> 80 81