我正在尝试在xslt的循环中打印变量值但不显示 这是我的代码
<xsl:for-each select="CampaignData/Mailer/CustomerInfo/CustInfFld/Coupons/Cust_Sel_Coupons">
<xsl:sort select="@CouponPosition"/>
<xsl:variable name="CouponID">
<xsl:value-of select="@CouponID"/>
</xsl:variable>
<xsl:for-each select="CampaignData/Mailer/Coupons/Cntr_Sel_Coupons">
<div style='color:red;'><xsl:value-of select='$CouponID'/></div>
</xsl:for-each>
</xsl:for-each>
答案 0 :(得分:2)
我认为一个潜在的问题是外部for-each
更改了上下文节点,因此内部for-each
需要考虑到这一点:
<xsl:for-each select="CampaignData/Mailer/CustomerInfo/CustInfFld/Coupons/Cust_Sel_Coupons">
<xsl:sort select="@CouponPosition"/>
<xsl:variable name="CouponID" select="@CouponID"/>
<xsl:for-each select="ancestor::CampaignData/Mailer/Coupons/Cntr_Sel_Coupons">
<div style='color:red;'><xsl:value-of select='$CouponID'/></div>
</xsl:for-each>
</xsl:for-each>
我还更改了变量的代码,只需在select属性中编写要选择的表达式,而不是嵌套value-of
。
如果您仍有问题,请发布您要处理的XML样本。
答案 1 :(得分:1)
嵌套select
的{{1}}属性不会选择任何内容,这就是为什么它的主体甚至不会被执行。
在内部xsl:for-each
内部,当前节点的格式为:
xsl:for-each
内部CampaignData/Mailer/CustomerInfo/CustInfFld/Coupons/Cust_Sel_Coupons
的select属性指定:
xsl:for-each
这是相对 XPath表达式,它从当前节点解析。因此,内部CampaignData/Mailer/Coupons/Cntr_Sel_Coupons
的指定select
实际上是(来自外部xsl:for-each
之外):
xsl:for-each
源XML文档中很可能没有显示任何此类节点。
如果没有源XML,就无法确定相对表达式应该是什么 - 最有可能:
变化:
CampaignData/Mailer/CustomerInfo/CustInfFld/Coupons/Cust_Sel_Coupons
/CampaignData/Mailer/Coupons/Cntr_Sel_Coupons
为:
<xsl:for-each select=
"CampaignData/Mailer/Coupons/Cntr_Sel_Coupons">