在XSLT 2.0中,我使用 xsl:for-each
循环生成一系列html <a>
元素,这些循环基于从 tokenize()
派生的字符串序列, <a>
元素的序列存储在变量_25719中:
<xsl:variable name="tokenparam" select="tokenize($paramCorrespdocs,'~')"/>
<xsl:variable name="corresp">
<xsl:for-each select="$tokenparam">
<xsl:if test="string(.) != $currdoc">
<xsl:if test="someXPATH">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="someXPATH"/>
</xsl:attribute>
<xsl:value-of select="someXPATH"/>
</xsl:element>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:variable>
这可能是构造一系列分隔HTML元素的错误方法,但我的目标是输出由 ,
分隔的 <a>
元素的序列,如下所示:
<a href="somelink">content</a>, <a href="somelink">content</a>, <a href="somelink">content</a>, <a href="somelink">content</a>
但我找不到与Xquery map !相当的XSLT . 通常 <xsl:if test="position() > 1">
似乎不起作用,因为测试不能保证这个位置: <xsl:if test="string(.) != $currdoc">
.
我应该因为我不一定把它变成变量 corresp
. 我只是认为这将是一种以分隔形式输出最终结果的方法 .
提前谢谢了 .
编辑:我试过这个
<xsl:variable name="tokenparam" select="tokenize($paramCorrespdocs,'~')"/>
<xsl:for-each select="$tokenparam[not(. = $currdoc)]">
<xsl:if test="someXPATH">
<xsl:if test="position()>1">, </xsl:if>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="someXPATH"/>
</xsl:attribute>
<xsl:value-of select="someXPATH"/>
</xsl:element>
</xsl:if>
</xsl:for-each>
虽然它假设一个完美的世界,但测试 <xsl:if test="someXPATH">
的负面结果可能会在两个逗号之间产生一个空白......