2011-08-31 70 views
1

我正在使用舊的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中鏈接的結束?

+0

Icky icky如果這是它的樣子,並且消息字段包含轉義標記。如果是這樣,你就無法可靠地做到這一點。解析所有輸入並在完整樹上執行XSL處理會更好。如果您已使用@xslt標記問題,請不要考慮正則表達式。 –

+0

「消息」字段是Sitecore中的富文本字段。 – iMac

+0

你可以添加一個xsl擴展方法並在那裏進行處理嗎? – marto

回答

0

我的理解是,你想要做一個查找和轉換的URL鏈接

我看到這是你的選擇:。 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轉換渲染輸出之前更換後的消息值。

事情什麼出來:

  1. 爲什麼你有沒有網址顯示爲在消息標記鏈接?是不是所用的所見即所得的內容的情況下?
  2. 如果這似乎是太多的工作,聽起來像是這樣。你可以有一個解決方法,在頁面的末尾添加一個javascript。這將簡單地找到並替換鏈接的URL。確保你沒有加倍。正則表達式是你的朋友。