我正在尝试将符号翻译为其HTML代码,例如使用以下代码'
至’
:
<xsl:variable name="apos">'</xsl:variable>
<xsl:variable name="test">’</xsl:variable>
<xsl:value-of select='translate(title, $apos, $test)' />
这有效:
<xsl:variable name="test">'</xsl:variable>
但是有可能让第一个例子有效吗?
答案 0 :(得分:3)
’
是一个HTML实体,而XSLT是使用XML编写的,只定义了5个实体。请参阅XML / HTML entities上的维基百科页面。
您可以使用DOCTYPE添加HTNML实体,以便解析XSLT的XML解析器可以理解’
之类的内容,请参阅以下示例:
http://www.quackit.com/xml/tutorial/xml_creating_entities.cfm
答案 1 :(得分:1)
您可以在XSLT 1.0中使用递归:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="apos">'</xsl:variable>
<xsl:variable name="test">&rsquo;</xsl:variable>
<xsl:variable name="input">'sfdds'</xsl:variable>
<xsl:variable name="result">
<xsl:call-template name="replace">
<xsl:with-param name="input" select="$input"/>
<xsl:with-param name="value" select="$apos"/>
<xsl:with-param name="replacement" select="$test"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$result" disable-output-escaping="yes"/>
</xsl:template>
<xsl:template name="replace">
<xsl:param name="input"/>
<xsl:param name="value"/>
<xsl:param name="replacement"/>
<xsl:choose>
<xsl:when test="contains($input, $value)">
<xsl:value-of select="substring-before($input, $value)"/>
<xsl:value-of select="$replacement"/>
<xsl:call-template name="replace">
<xsl:with-param name="input" select="substring-after($input, $value)"/>
<xsl:with-param name="value" select="$value"/>
<xsl:with-param name="replacement" select="$replacement"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$input"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
输出:
’sfdds’