2010-03-11 69 views
3

以下是'PrimarySubject'的XSLT新增功能我需要將'&'字符替換爲%26以及包含它的%20的字符。XSLT字符串解析

<xsl:template name="BuildLink"> 
    <xsl:param name="PrimarySubject" /> 
    <xsl:text>?PrimarySubject=</xsl:text> 
    <xsl:value-of select="$PrimarySubject" /> 
</xsl:template> 

是否有字符串替換函數我可以在xslt版本1中使用? 謝謝,

+0

啊,我看,你試試我的建議,在XSLT中實現URI編碼器;-) – Boldewyn 2010-03-11 15:33:23

回答

3

這可以很容易地使用FXSL Library,多的電子來完成xactly其str-map模板。

這裏是一個簡單的例子

這種轉變:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:testmap="testmap" 
exclude-result-prefixes="xsl testmap" 
> 
    <xsl:import href="str-map.xsl"/> 

    <!-- to be applied on any xml source --> 

    <testmap:testmap/> 

    <xsl:output omit-xml-declaration="yes" indent="yes"/> 

    <xsl:template match="/"> 
    <xsl:variable name="vTestMap" select="document('')/*/testmap:*[1]"/> 
    <xsl:call-template name="str-map"> 
     <xsl:with-param name="pFun" select="$vTestMap"/> 
     <xsl:with-param name="pStr" select="'abc&amp;d f'"/> 
    </xsl:call-template> 
    </xsl:template> 

    <xsl:template match="testmap:*"> 
     <xsl:param name="arg1"/> 

     <xsl:choose> 
     <xsl:when test="$arg1 = '&amp;'">%26</xsl:when> 
     <xsl:when test="$arg1 = ' '">%20</xsl:when> 
     <xsl:otherwise><xsl:value-of select="$arg1"/></xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 

</xsl:stylesheet> 

當任何XML文檔(未使用)應用時產生通緝的結果:

abc%26d%20f

+1

更好地使用其他人編寫的庫,在「我沒有想到這種情況」中省了點時間。 – Nat 2010-03-12 06:16:08

+0

@Nat,當然,FXSL的用戶很少(如果有的話)需要自己實現遞歸。 – 2010-03-12 13:39:28

+1

不錯的文章+1 [15個字符] – 2010-03-12 13:46:15

0

several substring功能在XSLT:

  • 字符串的子串-之前(字符串,字符串)
  • 字符串的子串 - 後(字符串,字符串)
  • 字符串的子串(字符串,數字,數?)