我试图循环一个数组并将非空值连接到一个变量。不用说我是XSLT的新手。请查看我编写的代码,并告诉我最好的方法。
\将被添加到最后,我还必须在值之间添加分隔符*。如果*和\在一起,那么只有\应该来,我们可以省略*。我相信逻辑是正确的。语法是问题。
谢谢,Anoop
<xsl:variable name="secondsegmentarray">
<item>Data/Attribute1</item>
<item>Data/Attribute2</item>
<item>Data/Attribute3</item>
<item>Data/Attribute4</item>
<item>Data/Attribute5</item>
<item>Data/Attribute6</item>
<item>Data/Attribute7</item>
</xsl:variable>
<xsl:variable name="secondsegment">
<xsl:value-of select="'\'">
<xsl:for-each select="secondsegmentarray/item">
<xsl:choose>
<xsl:when test="$secondsegmentarray.item = '' and secondsegment='\'"/>
</xsl:when>
<xsl:when test="$secondsegmentarray.item = not('') and secondsegment='\'"/>
<xsl:value-of select="concat($secondsegmentarray.item,secondsegment)"/>
</xsl:when>
<xsl:when test="$secondsegmentarray.item = not('') and secondsegment!='\'"/>
<xsl:value-of select="concat($secondsegmentarray.item,'*',secondsegment)"/>
</xsl:when>
<xsl:when test="$secondsegmentarray.item = '' and secondsegment!='\'"/>
<xsl:value-of select="concat('*',secondsegment)"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
<xsl:variable/>
不是一个真正的答案,但太长,不适合评论。您有许多语法问题,从以下开始:
<xsl:for-each select="secondsegmentarray/item">
这是:
$
字符来识别变量,并且:正确的语法是:
<xsl:for-each select="exsl:node-set($secondsegmentarray)/item">
宣布后:
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl"
在标题中。
接下来,在xsl:for-each
指令中,你是在item
的背景下。这意味着与当前item
相关的任何测试都需要引用当前节点,例如:
<xsl:when test=". = ''">
在XPath / XSLT中,您尝试使用$secondsegmentarray.item
毫无意义。
此外,您在变量本身的定义中引用了secondsegment
变量(同样,没有必需的$
前缀)。当然,这不起作用。
可能会有更多,但这些突出。