您好,我已經應用模板的數據應該是填充只有一次,這裏的問題是它是在重複兩次任何一個可以建議停止repeatation找到下面的xsl我的示例代碼爲什麼應用模板重複兩次
這裏是我的XSL:
<xsl:param name="PackageId" />
<xsl:template match="/">
<xsl:apply-templates mode="SequenceB" select="NewDataSet/Table[CTD_CTD_PKG_ID =$PackageId]"/>
<xsl:apply-templates mode="sequenceC" select="NewDataSet/Table[CTD_CTD_PKG_ID =$PackageId][position()=1]"/>
</xsl:template>
<xsl:template mode ="SequenceB" match="NewDataSet/Table">
<xsl:choose >
<xsl:when test ="substring(./MSG_TYPE_CODE,2,3)= '102'" >
<xsl:if test ="./CTD_SEQ_NUM" >
<xsl:if test=" position() > 1"></xsl:if>
<xsl:value-of select= "concat(':21:',./CTD_SEQ_NUM)" />
<xsl:text> </xsl:text >
</xsl:if>
<xsl:if test ="./CURRENCY_CODE" >
<xsl:if test=" position() > 1"></xsl:if>
<xsl:text/><xsl:value-of select= "concat(':32B:',./CURRENCY_CODE)"/>
</xsl:if>
<xsl:if test ="./CTD_SETLD_TRAN_AMT" >
<xsl:if test=" position() > 1"></xsl:if>
<xsl:text/><xsl:value-of select= "translate(./CTD_SETLD_TRAN_AMT ,'.',',')"/>
<xsl:text> </xsl:text >
</xsl:if>
</xsl:when>
<xsl:when test ="substring(./MSG_TYPE_CODE,2,3)= '103'">
<xsl:if test ="./TRAN_TYPE_CODE" >
<xsl:text/><xsl:value-of select= "concat(':26T:',./TRAN_TYPE_CODE)" /><xsl:text/>
</xsl:if>
<xsl:if test ="./CTD_VALUE_DATE" >
<xsl:text/><xsl:value-of select= "concat(':32A:',./CTD_VALUE_DATE)"/><xsl:text/>
</xsl:if>
<xsl:if test ="./CURRENCY_CODE" >
<xsl:text/><xsl:value-of select= "./CURRENCY_CODE"/><xsl:text/>
</xsl:if>
<xsl:if test ="./CTD_SETLD_TRAN_AMT" >
<xsl:text/><xsl:value-of select= "translate(./CTD_SETLD_TRAN_AMT,'.',',')"/><xsl:text/>
</xsl:if>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template mode="sequenceC" match="NewDataSet/Table">
<xsl:if test ="substring(./MSG_TYPE_CODE,2,3)= '102'">
<xsl:if test ="./CTD_VALUE_DATE" >
<xsl:text/><xsl:value-of select= "concat(':32A:',./CTD_VALUE_DATE)"/><xsl:text/>
</xsl:if>
<xsl:if test ="./CURRENCY_CODE" >
<xsl:text/><xsl:value-of select= "./CURRENCY_CODE"/><xsl:text/>
</xsl:if>
<xsl:if test ="./CTD_SETLD_TRAN_AMT" >
<xsl:text/><xsl:value-of select= "translate(./CTD_SETLD_TRAN_AMT,'.',',')"/>
<xsl:text> </xsl:text >
</xsl:if>
</xsl:template>
這裏是我的XML:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<RECORD_TYPE_CODE>CTD</RECORD_TYPE_CODE>
<MSG_TYPE_CODE>O102N</MSG_TYPE_CODE>
<CTD_SEQ_NUM>000001</CTD_SEQ_NUM>
<CTD_BEN_INS_ID>ABNAAEAD</CTD_BEN_INS_ID>
<TRAN_TYPE_CODE>MIS</TRAN_TYPE_CODE>
<CTD_VALUE_DATE>110911</CTD_VALUE_DATE>
<CURRENCY_CODE>AED</CURRENCY_CODE>
<CTD_SETLD_TRAN_AMT>42404.00</CTD_SETLD_TRAN_AMT>
<CTD_INS_AMT>42404.00</CTD_INS_AMT>
<CTD_CTD_PKG_ID>2</CTD_CTD_PKG_ID>
</Table>
<Table>
<RECORD_TYPE_CODE>CTD</RECORD_TYPE_CODE>
<MSG_TYPE_CODE>O102N</MSG_TYPE_CODE>
<CTD_SEQ_NUM>000002</CTD_SEQ_NUM>
<CTD_BEN_INS_ID>ABNAAEAD</CTD_BEN_INS_ID>
<TRAN_TYPE_CODE>MIS</TRAN_TYPE_CODE>
<CTD_VALUE_DATE>110911</CTD_VALUE_DATE>
<CURRENCY_CODE>AED</CURRENCY_CODE>
<CTD_SETLD_TRAN_AMT>154776.75</CTD_SETLD_TRAN_AMT>
<CTD_INS_AMT>154776.75</CTD_INS_AMT>
<CTD_CTD_PKG_ID>2</CTD_CTD_PKG_ID>
</Table>
<Table>
<RECORD_TYPE_CODE>CTD</RECORD_TYPE_CODE>
<MSG_TYPE_CODE>O102N</MSG_TYPE_CODE>
<CTD_SEQ_NUM>000003</CTD_SEQ_NUM>
<CTD_BEN_INS_ID>ABNAAEAD</CTD_BEN_INS_ID>
<TRAN_TYPE_CODE>MIS</TRAN_TYPE_CODE>
<CTD_VALUE_DATE>110911</CTD_VALUE_DATE>
<CURRENCY_CODE>AED</CURRENCY_CODE>
<CTD_SETLD_TRAN_AMT>1800.00</CTD_SETLD_TRAN_AMT>
<CTD_INS_AMT>1800.00</CTD_INS_AMT>
<CTD_CTD_PKG_ID>2</CTD_CTD_PKG_ID>
</Table>
</NewDataSet>
輸出:
:21:000001 :32B:AED42404,00 :21:000001 :32B:AED42404,00 :21:000002 :32B:AED154776,75 :21:000002 :32B:AED154776,75 :21:000003 :32B:AED1800,00 :21:000003 :32B:AED1800,00 :32A:110911AED42404,00
所需的輸出爲:
:21:000001 :32B:AED42404,00 :21:000002 :32B:AED154776,75 :21:000003 :32B:AED1800,00 :32A:110911AED42404,00
XSLT示例目前不是格式良好的。它看起來像在最終模板中缺少** xsl:if ** end-tag。你能否糾正這一點,所以沒有混淆。此外,XSLT在應用模板時引用** CTD_CTD_PKG_ID **元素,但實際上並不存在於示例XML中。你能糾正這個嗎?謝謝! –
任何一個請給出一些建議,以避免重複 – pravz
爲什麼標籤重複,請給我一些建議,以阻止它 – pravz