Sharepoint XSL - 将字符串分解为组件部分

时间:2010-12-13 17:15:40

标签: sharepoint sharepoint-2007 xslt

我正在使用“选择”网站列并启用了多项检查选项,以便用户可以使用该列中的多个选项标记列表项。

然后,此列为内容查询webpart中的设计功能提供支持 - 其中附加列选项以创建图像文件名。

  • 选择1
  • 选择2
  • Choice3
  • Choice4

变为

<img src="http://mysite/content-Choice1.jpg />

我遇到的问题是XSL解析器被输入一个字符串,该字符串用分号(;)和散列(#)分隔选择值。如果勾选了所有4个选项,则输入XSLT解析器的字符串将为:

;#Choice1;#Choice2;#Choice3;#Choice4

如何处理字符串并将每个选项分成自己的XSL变量?

我已尝试过各种substring-before函数,但我无法正常工作。

2 个答案:

答案 0 :(得分:2)

我建议使用JavaScript来解析字符串,然后使用JavaScript显示图像。

答案 1 :(得分:2)

由于XPath 1.0不支持tokenize()功能,因此您必须自己完成所有工作。例如,您可以从选项中递归生成<img>元素:

<xsl:template name="RecurseConvertChoicesToImages">
    <xsl:param name="choices" />

    <xsl:variable name="token"
        select="substring-before($choices, ';#')" />
    <xsl:variable name="nextToken"
        select="substring-after($choices, ';#')" />

    <xsl:if test="$token">
        <img src="http://mysite/content-{$token}.jpg" />
    </xsl:if>
    <xsl:if test="$nextToken">
        <xsl:call-template name="RecurseConvertChoicesToImages">
            <xsl:with-param name="choices" select="$nextToken" />
        </xsl:call-template>
    </xsl:if>
</xsl:template>