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

Variables 如何在xsl中的select中使用变量,variables,xslt,Variables,Xslt,现在 我想这样改变 <xsl:for-each select="tm-reg-gaz/trademark/img"> tm reg gaz mp tm reg gaz 我试过这些 <xsl:variable name="tag_name"> <xsl:if test="tm-reg-gaz">tm-reg-gaz</xsl:if> <xsl:if test="mp

现在


我想这样改变

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

tm reg gaz
mp tm reg gaz
我试过这些

<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">

这是我的建议,请随意否决:

<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="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>

(但详细信息取决于这两个元素是否可以出现或它们是否相互排斥)。

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

一个更好的方法可能是

<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>


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

两种解决方案都很有效。现在我使用你推荐的方法。谢谢。两种解决方案都很有效。现在我使用你推荐的方法。非常感谢。