我试图循环一个数组并将非空值连接到一个变量。不用说我是XSLT的新手。请查看我编写的代码,并让我知道执行此操作的最佳方法。
\将附加在末尾,并且我还必须在值之间添加一个分隔符*。如果*和\在一起,则只有\应该出现,我们可以省略*。我相信逻辑是正确的。语法就是问题。
谢谢, 阿努普
<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/>
答案 0 :(得分:1)
并不是真正的答案,但是太长而无法放入评论中。您会遇到很多语法问题,始于:
<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=". = ''">
您尝试使用$secondsegmentarray.item
在XPath / XSLT中是没有意义的。
此外,您在变量本身的定义中引用了secondsegment
变量(同样,没有必需的$
前缀)。当然,这是行不通的。
可能还有更多,但这些都脱颖而出。