2014-11-21 136 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()