2012-12-20 49 views
0

我已經在下面創建了這個XSLT模板來解析要轉換爲HTML頁面的文本塊。該模板用於多個位置,但是,它不能成功轉換我一直指定的字符。一個例子如下:遞歸xslt模板不能代替所有發現的字符

我想「兩個」有「幫助」,我繼續看「四個」更多,但我發現的是「空虛」。

結果是: 我想「兩個」有「幫助」,我繼續尋找「更多」,但我發現的只是「空虛」。

有什麼想法?

<xsl:template name="PreserveQuotations"> 
    <xsl:param name="text"/> 
    <xsl:choose> 
    <xsl:when test="contains($text,'&#8220;')"> 
     <xsl:value-of select="substring-before($text,'&#8220;')"/> 
     <xsl:text>"</xsl:text> 
     <xsl:call-template name="PreserveQuotations"> 
     <xsl:with-param name="text"> 
      <xsl:value-of select="substring-after($text,'&#8220;')"/> 
     </xsl:with-param> 
     </xsl:call-template> 
    </xsl:when> 
    <xsl:when test="contains($text,'&#8221;')"> 
     <xsl:value-of select="substring-before($text,'&#8221;')"/> 
     <xsl:text>"</xsl:text> 
     <xsl:call-template name="PreserveQuotations"> 
     <xsl:with-param name="text"> 
      <xsl:value-of select="substring-after($text,'&#8221;')"/> 
     </xsl:with-param> 
     </xsl:call-template> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="$text"/> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

回答

0

如果你想一想形式的字符串的情況下

aaa &#8221; bbb &#8220; ccc 

有兩個明顯的解決方案的問題應該成爲你清楚:(1)檢查的情況下字符串包含兩個特殊字符然後處理髮生的第一個字符;或者(2)爲每個字符傳遞一個字符串。 (將模板分成兩個模板或指定要在參數中查找哪個字符。)