added test case for math functions on nodesets generated by exslt:node-set
authorWilliam M. Brack <wbrack@src.gnome.org>
Wed, 14 Jan 2004 08:55:52 +0000 (08:55 +0000)
committerWilliam M. Brack <wbrack@src.gnome.org>
Wed, 14 Jan 2004 08:55:52 +0000 (08:55 +0000)
* tests/exslt/math/max.3.xsl, tests/exslt/math/max.3.xml,
  tests/exslt/math/max.3.out, tests/exslt/math/Makefile.am:
  added test case for math functions on nodesets generated by
  exslt:node-set

tests/exslt/math/max.3.out [new file with mode: 0644]
tests/exslt/math/max.3.xml [new file with mode: 0644]
tests/exslt/math/max.3.xsl [new file with mode: 0644]

diff --git a/tests/exslt/math/max.3.out b/tests/exslt/math/max.3.out
new file mode 100644 (file)
index 0000000..d23881c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
+Largest number value: 500
+Largest number value (computed by function foo:getMaxVal): 500
+Largest number value (computed by function foo:getMaxVal2): 500
diff --git a/tests/exslt/math/max.3.xml b/tests/exslt/math/max.3.xml
new file mode 100644 (file)
index 0000000..79a00e1
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<rootelement>
+  <childelement val="100"/>
+  <childelement val="200"/>
+  <childelement val="500"/>
+  <childelement val="300"/>
+  <childelement val="nothing"/>
+</rootelement>
+
diff --git a/tests/exslt/math/max.3.xsl b/tests/exslt/math/max.3.xsl
new file mode 100644 (file)
index 0000000..b3410f6
--- /dev/null
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+
+<!DOCTYPE xsl:stylesheet [
+
+<!-- namespace for SVG -->
+<!ENTITY svgns "http://www.w3.org/2000/svg">
+<!-- namespace for XSLT -->
+<!ENTITY xsltns "http://www.w3.org/1999/XSL/Transform">
+
+<!-- namespaces for several EXSLT extension modules (see
+     http://www.exslt.org for description) -->
+<!ENTITY cns   "http://exslt.org/common"> <!-- EXSLT-Common -->
+<!ENTITY fns   "http://exslt.org/functions"> <!-- EXSLT-Functions -->
+<!ENTITY mns   "http://exslt.org/math"> <!-- EXSLT-Math -->
+
+<!ENTITY foons "http://www.foo.org/bar">
+
+]>
+
+<xsl:stylesheet version="1.0" 
+                xmlns="&svgns;" 
+                xmlns:xsl="&xsltns;"
+                xmlns:exsl="&cns;"
+                xmlns:func="&fns;"
+                xmlns:math="&mns;"
+                xmlns:foo="&foons;"
+                extension-element-prefixes="exsl func math foo"
+                exclude-result-prefixes="xsl exsl func math">
+
+<xsl:output method="xml" indent="yes" encoding="iso-8859-1" standalone="yes"/>
+
+<xsl:template match="/">
+
+    <xsl:text>Largest number value: </xsl:text>
+    <xsl:value-of 
+  select="math:max(rootelement/childelement/@val[string(number(.)) != 'NaN'])"/>
+    <xsl:text>
+Largest number value (computed by function foo:getMaxVal): </xsl:text>
+    <xsl:value-of select="foo:getMaxVal(rootelement/childelement)"/>
+    <xsl:text>
+Largest number value (computed by function foo:getMaxVal2): </xsl:text>
+    <xsl:value-of select="foo:getMaxVal2(rootelement/childelement)"/>
+</xsl:template>            
+
+<func:function name="foo:getMaxVal">
+  <xsl:param name="nodes"/>
+
+  <xsl:variable name="resNodes">
+    <xsl:for-each select="$nodes">
+      <xsl:if test="@val and string(number(@val)) != 'NaN'">
+        <dummynode>
+          <xsl:value-of select="@val"/>
+        </dummynode>
+      </xsl:if>
+    </xsl:for-each>
+  </xsl:variable>
+
+  <xsl:variable name="resNodeSet" select="exsl:node-set($resNodes)"/>
+  
+  <func:result select="math:max($resNodeSet/*)"/>
+</func:function>
+
+<func:function name="foo:getMaxVal2">
+  <xsl:param name="nodes"/>
+
+  <xsl:variable name="resNodes">
+    <xsl:for-each select="$nodes">
+      <xsl:if test="@val and string(number(@val)) != 'NaN'">
+        <dummynode>
+          <xsl:value-of select="@val"/>
+        </dummynode>
+      </xsl:if>
+    </xsl:for-each>
+  </xsl:variable>
+  
+  <func:result select="math:max(exsl:node-set($resNodes)/*)"/>
+</func:function>
+
+</xsl:stylesheet>
+