2014-11-21 141 views
-1

不同的参数,我能够使用这个代码做一个while循环,在我的xsl:while循环与查询

<!-- recursive named template --> 
<template name="while"> 
    <variable name="VALUE"> 
     <!-- your evaluation --> 
    </variable> 
    <!-- evaluate and recurse --> 
    <if test="$VALUE=0"> 
     <call-template name="while"/> 
    </if> 
</template> 

现在我想我的查询参数的变化,每当我打电话“而”模板。

我第一次打电话//dbquery[@id='pers']/rows/row我有一个参数pOrg ='HR'。结果我得到一些数据。我想在回忆模板时使用这些数据,但随后参数pOrg等于我在上一个查询中获得的数据。

<?xml version="1.0" encoding="UTF-8" ?> 
<dbqueries> 
    <dbquery id="pers"> 
    <descriptor> 
     <database>xxx</database> 
     <originalquery>SELECT distinct ORG_NUM,POST_NUM FROM tablename where org_num='pOrg'</originalquery> 
     <parameters> 
     <param name="pOrg" value="HR" /> 
     </parameters> 
     <querystring>SELECT distinct ORG_NUM,POST_NUM FROM tablename where org_num='HR';</querystring> 
    </descriptor> 
    <columns> 
     <column name="ORG_NUM" type="VARCHAR" /> 
     <column name="POST_NUM" type="VARCHAR" /> 
    </columns> 
    <rows> 
     <row ORG_NUM="HR" POST_NUM="MR" /> 
    </rows> 
    </dbquery> 
</dbqueries> 

在这个例子中我想的是,pOrg参数等于“MR”我第二次调用而模板。

+0

嗯,我很困惑。我已经阅读了这三次,我不知道你的问题是什么。 – 2014-11-21 09:54:07

+0

对于我的XML中的每个我想用post_num – Bigjo 2014-11-21 13:24:28

+0

中的值重做我的sql,换句话说,我怎样才能调用// dbquery [@ id ='pers']/rows/row参数pOrg等于特定我选择的价值。 – Bigjo 2014-11-21 13:26:09

回答

0

虽然不知道想要的输出,只是举个例子,如情况下,建议我理解的要求权:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output omit-xml-declaration="yes" indent="yes"/> 
    <xsl:template match="dbqueries"> 
    <xsl:apply-templates select=".//row" mode="while"> 
     <xsl:with-param name="rowParam" select="'HR'"/> 
    </xsl:apply-templates> 
    </xsl:template> 
    <xsl:template match="row" mode="while"> 
    <xsl:param name="rowParam"/> 
    <xsl:param name="post_num" select="false()"/> 
    <xsl:variable name="VALUE">0</xsl:variable> 
    <xsl:copy> 
     <xsl:attribute name="param" select="$rowParam"/> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    <xsl:if test="$VALUE = 0 and not($post_num)"> 
     <xsl:apply-templates select="." mode="while"> 
     <xsl:with-param name="rowParam" select="@POST_NUM"/> 
     <xsl:with-param name="post_num" select="true()"/> 
     </xsl:apply-templates> 
    </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 

输出:

<row param="HR">HRMR</row> 
<row param="MR">HRMR</row> 

第一次模板应用到row的参数HR被使用,我猜你已经在你当前的XSLT中检索了,所以我刚刚在示例中用它作为静态参数。模板匹配row有两个参数:rowParampost_numpost_numfalse()模板被调用时的第一次,当第二次调用当前行的值POST_NUM时,将模板设置为true()