1

我只想在,需要时添加''

我检查<xsl:when test="$myvar!=''">所以它不会像:

,one,two,three

但会 one,two,three改为

但它说

变量 $myvar 尚未声明;

<xsl:variable name="myvar">
    <xsl:for-each select="$header/Packaging[@type='european']/UPCPackagingLevelCode">
        <xsl:choose>
            <xsl:when test="$myvar!=''">
                <xsl:value-of select="concat(',',.)"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="."/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
</xsl:variable>
4

1 回答 1

2

您确实在尝试在声明变量之前使用它。您指的是变量声明正文中的$myVar$myVar直到最后关闭xsl:variable之后才会真正声明

在这种情况下,您需要解决的问题是使用position函数来确定您是否位于第一个UPCPackagingLevelCode元素上。

所以,而不是这样做......

<xsl:when test="$myvar!=''">

做这个...

<xsl:when test="position() > 1">

实际上,您可以稍微简化一下,使用xsl:if代替xsl:choose

<xsl:if test="position() > 1">
    <xsl:text>,</xsl:text>
</xsl:if>
<xsl:value-of select="." />

如果您使用的是 XSLT2.0,您可以将整个事情简化为

<xsl:variable name="myvar">
   <xsl:value-of select="$header/Packaging[@type='european']/UPCPackagingLevelCode"
       separator="," />
</xsl:variable>
于 2012-11-19T10:02:20.583 回答