home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / XML Utilities / Professional Programmer XSL IDE / Xselerator25.msi / Data.Cab / F40426_minimum.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2002-02-06  |  2.6 KB  |  67 lines

  1. <xsl:stylesheet version="1.0"
  2. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:xalan="http://xml.apache.org/xalan"
  4. xmlns:minimum-fold-func="minimum-fold-func"
  5. xmlns:minimum-pick-smaller="minimum-pick-smaller"
  6. xmlns:minimum-own-compare="minimum-own-compare"
  7. exclude-result-prefixes="xsl xalan minimum-fold-func minimum-own-compare minimum-pick-smaller"
  8. >
  9.    <xsl:import href="foldl.xsl"/>
  10.  
  11.    <minimum-fold-func:minimum-fold-func/>
  12.    <minimum-pick-smaller:minimum-pick-smaller/>
  13.    <minimum-own-compare:minimum-own-compare/>
  14.  
  15.     <xsl:template name="minimum">
  16.       <xsl:param name="pList" select="/.."/>
  17.       <xsl:param name="pCMPFun" select="/.."/>
  18.  
  19.       <xsl:variable name="vdfCMPFun" select="document('')/*/minimum-own-compare:*[1]"/>
  20.       <xsl:variable name="vFoldFun" select="document('')/*/minimum-pick-smaller:*[1]"/>
  21.       
  22.       <xsl:if test="$pList">
  23.           <xsl:variable name="vCMPFun" select="$pCMPFun | $vdfCMPFun[not($pCMPFun)]"/>
  24.           <xsl:variable name="vFuncList">
  25.             <xsl:copy-of select="$vFoldFun"/> <!-- Pick Smaller -->
  26.             <xsl:copy-of select="$vCMPFun"/>  <!-- Compare -->
  27.           </xsl:variable>
  28.  
  29.           <xsl:call-template name="foldl">
  30.             <xsl:with-param name="pFunc" select="xalan:nodeset($vFuncList)/*"/>
  31.             <xsl:with-param name="pList" select="$pList"/>
  32.             <xsl:with-param name="pA0" select="$pList[1]"/>
  33.           </xsl:call-template>
  34.       </xsl:if>
  35.     </xsl:template>
  36.  
  37.     <xsl:template name="pickSmaller" match="*[namespace-uri() = 'minimum-pick-smaller']">
  38.          <xsl:param name="arg0"/>
  39.          <xsl:param name="arg1"/>
  40.          <xsl:param name="arg2"/>
  41.  
  42.          <xsl:variable name="vIsSmaller">
  43.            <xsl:apply-templates select="$arg0">
  44.              <xsl:with-param name="arg1" select="$arg1"/>
  45.              <xsl:with-param name="arg2" select="$arg2"/>
  46.            </xsl:apply-templates>
  47.          </xsl:variable>
  48.          <xsl:choose>
  49.            <xsl:when test="$vIsSmaller = 1">
  50.              <xsl:copy-of select="$arg1"/>
  51.            </xsl:when>
  52.            <xsl:otherwise>
  53.              <xsl:copy-of select="$arg2"/>
  54.            </xsl:otherwise>
  55.          </xsl:choose>
  56.     </xsl:template>
  57.  
  58.     <xsl:template name="isSmallerDefault" match="*[namespace-uri() = 'minimum-own-compare']">
  59.          <xsl:param name="arg1"/>
  60.          <xsl:param name="arg2"/>
  61.  
  62.          <xsl:choose>
  63.           <xsl:when test="$arg1 < $arg2">1</xsl:when>
  64.           <xsl:otherwise>0</xsl:otherwise>
  65.          </xsl:choose>
  66.     </xsl:template>
  67. </xsl:stylesheet>