我有一个奇怪的问题,匹配xml节点的特定属性。 示例代码不起作用:
<xsl:for-each select="../../unit/service/price/season[@name=$period_name]">
<xsl:attribute name="std_bed_price">
<xsl:value-of select="../@amount"/>
</xsl:attribute>
</xsl:for-each>
可行的示例代码,但我不太喜欢这种方式:
<xsl:for-each select="../../unit/service/price/season">
<xsl:if test="@name = $period_name">
<xsl:attribute name="std_bed_price">
<xsl:value-of select="../@amount"/>
</xsl:attribute>
</xsl:if>
</xsl:for-each>
如果在第一个例子中我用一些像'A'这样的值替换变量名,它可以工作, 我还测试了选择了什么变量名称,并且里面有正确的数据(所以'A','B','C'......)
以前有人遇到过这个问题吗?
TNX
答案 0 :(得分:3)
您可以尝试将其更改为apply-templates而不是foreach。以下内容应该有效。
<xsl:template match="price">
<xsl:attribute name="std_bed_price">
<xsl:value-of select="@amount" />
</xsl:attribute>
</xsl:template>
然后称之为:
<xsl:apply-template select="../../unit/service/price/[season/@name=$period_name]" />
答案 1 :(得分:0)
之前没见过。它可能是一个模糊的@name属性。因此,请尝试像下面一样访问它?
select="../../unit/service/price/season[./@name=$period_name]
除此之外,对不起,对我来说,它看起来应该完全兼顾。