翻译文本时遇到问题!
<text>This is a non breaking -</text>
<text>
<span style="">
<span style="">Testtext</span>
</span>
‑
<span style="">
<span style=""> some other text</span>
</span>
</text>
这是我从ck编辑器获得的.xml文件,在跨度之间我有一个不间断的连字符,但arial无法在我的.pdf文件中显示这个不间断的连字符。我不允许更改.pdf的字体,所以我想将非断开连字符翻译成'普通'连字符。
<xsl:template match="text">
<fo:block>
<xsl:choose>
<xsl:when test="not(*) and contains(text(), '‑')">
<xsl:value-of select="translate(text(), '‑' , '-')"/>
</xsl:when>
<xsl:otherwise>
<xsl:if test="contains(text(), '‑')"> <!-- Here is my problem -->
<xsl:value-of select="translate(text(), '‑' , '-')"/>
<xsl:apply-templates />
</xsl:if>
<xsl:if test="not(contains(text(), '‑'))">
<xsl:apply-templates/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:template>
现在我的问题是,在if
之后发表评论here is my problem
,当我在输出之前不应用模板时:
This is a non breaking - //thats ok
-Testtext# some other text //thats not
但如果我认为他们是<xsl:value-of select=....
不起作用。
它应该是这样的:
This is a non breaking -
Testtext- some other text
答案 0 :(得分:1)
为避免按text()
选择多个项目的序列(我认为这会导致此处出现故障),您可以尝试直接在文本节点上应用translate函数,如下所示:
<xsl:template match="text//text()[contains(.,'‑')]">
<xsl:value-of select="translate(., '‑' , '-')"/>
</xsl:template>