我正在進行XSL 1.0轉換,以在Firefox中顯示XML時獲取HTML可視化。 我在原來的XML,我有這樣XSL中的特殊字符
é è ‘...
字符我需要將它們轉換成
é, è, ‘...
我已經使用這個模板:
<xsl:template name="string-replace-all">
<xsl:param name="text" />
<xsl:param name="replace" />
<xsl:param name="by" />
<xsl:choose>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text,$replace)" />
<xsl:value-of select="$by" />
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="substring-after($text,$replace)" />
<xsl:with-param name="replace" select="$replace" />
<xsl:with-param name="by" select="$by" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
呼喚每個特殊字符(這裏例如& egrave;):
<xsl:variable name="newtext">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="$originaltext" />
<xsl:with-param name="replace" select="'&egrave;'" />
<xsl:with-param name="by" select="'è'" />
</xsl:call-template>
</xsl:variable>
是否有解決方案,我可以直接將&
替換爲&,例如,無需爲每個我希望存在的特殊字符調用替換模板?
我能想到的唯一改進就是不用切換到XSLT 2。0,將在您的樣式表中創建特殊字符的「表」,並循環遍歷它,爲前一次調用的輸出中的每個「行」調用'string-replace-all'。不過,涉及擴展功能的選項可能更好,例如http://exslt.org/dyn/functions/evaluate/index.html,具體取決於您使用的XSLT處理器。 – LarsH
我需要使用Firefox直接顯示帶有其轉換的XML,而無需特殊的預處理器。 –
好吧,既然Firefox是你的環境,爲什麼不讓你的樣式表輸出一些Javascript。在加載頁面後,JS代碼可以通過'&'替代'&'。我不確定它會起作用,但值得一試。 – LarsH