如何在xsl中的select中使用变量



现在

<xsl:for-each select="tm-reg-gaz/trademark/img">

想要这样改变。

<xsl:variable name="tag_name">
<xsl:if test="tm-reg-gaz">tm-reg-gaz</xsl:if>
<xsl:if test="mp-tm-reg-gaz">mp-tm-reg-gaz</xsl:if>
</xsl:variable>
<xsl:for-each select="$tag_name/trademark/img">
</xsl:for-each>

我试过这些

<xsl:for-each select="$tag_name/trademark/img">
<xsl:for-each select="path[$tag_name]/trademark/img">
<xsl:for-each select="{$tag_name}/trademark/img">

如果可以的话,请告诉我。非常感谢。

您可以使用select="*[name()=$tagname]/trademark/img"

更好的方法可能是

<xsl:variable name="selection" select="tm-reg-gaz|mp-tm-reg-gaz">
<xsl:for-each select="$selection/trademark/img">
</xsl:for-each>

(但细节取决于这两个元素是否可以出现,或者它们是否相互排斥(。

这是我的提议,可以随意否决:

<xsl:variable name="variable" as="node()*">
<xsl:choose>
<xsl:when test="$testme = 'something'">
<xsl:copy-of select="//tm-reg-gaz/trademark/img"/>               
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="//mp-tm-reg-gaz/trademark/img"/>  
</xsl:otherwise>
</xsl:choose>
</xsl:variable>        
<xsl:for-each select="$variable">
<!-- do something -->
</xsl:for-each>

最新更新