替换或附加链接

时间:2011-08-31 12:51:51

标签: xslt sitecore

我正在开发一个旧的Sitecore 4解决方案,我需要稍微操作一个字段的输出。我有一个正常的字段(消息),我通过<sc:html field="message"/><xsl:value-of select="sc:fld('Message',.)"/>输出。

要么工作得很好。

我现在必须在“消息”字段中搜索链接,然后我需要将日期附加到链接的末尾,如此“<a href="http://www.thisismydomain.com?utm_campaign=01-01-2011">this is my link</a>

我如何在XSLT 1.0中完成上述操作?

1 个答案:

答案 0 :(得分:0)

我的理解是你想要查找并将网址转换为链接。

我将这些视为您的选项:  1. Xpath 2.0支持使用正则表达式的匹配和替换等函数。请参阅http://www.w3schools.com/xpath/xpath_functions.asp#stringhttp://www.w3.org/TR/xpath-functions/#func-replace。我不确定sitecore是否支持Xpath 2.0。从内存中我不认为它支持Xpath 2.0。如果它确实你很幸运,你可以做类似的事情

<xsl:choose>
            <xsl:when test="contains(., 'http.*')">
              <strong><xsl:value-of select="replace(.,'http.*','REPLACED TEXT')"/></strong>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="."/>
            </xsl:otherwise>
          </xsl:choose>
  1. 在呈现输出之前,在获取XSL转换之前或之后查找并替换Message值。
  2. 出于什么目的:

    1. 为什么您的网址没有显示为Message标记中的链接?是不是你没有使用WYSIWYG的内容?
    2. 如果这似乎是太多的工作,听起来就像是。你可以有一个解决方法,在页面的末尾有一个javascript。这将简单地找到并替换链接的URL。确保你没有加倍。正则表达式是你的朋友。