使用 xslt 消除重音字符

Acute accent character eliminate using xslt

我正在尝试用 xslt 1 中的简单单引号字符消除或替换尖音符字符。0.This 是我迄今为止尝试过的方法,其中 none 替换了该字符.我的翻译结构可能有什么问题?

<xsl:value-of select="translate(HeaderFields/Name,'#xb4','')"/>

<xsl:value-of select="translate(HeaderFields/Name,'0xb4','')"/>

<xsl:value-of select="translate(HeaderFields/Name,'´','\'')"/>

尝试:

<xsl:value-of select='translate(HeaderFields/Name,"&#xb4;","&apos;")'/>

注意双引号和单引号的交换 - 请参阅说明:https://www.w3.org/TR/1999/REC-xpath-19991116/#section-Introduction

您可以将重音表示为 '´'&#xb4;'#xb4''0xb4' 都不正确。 (你只是在猜测吗?)

表达单引号有点棘手。在 XSLT 2.0 中,您可以将其写为 '''',但这在 1.0 中不起作用。在 1.0 中,最好的方法是使用变量:

<xsl:variable name="apos">'</xsl:variable>
<xsl:value-of select="translate(HeaderFields/Name,'´',$apos)"/>

最后,您需要注意重音符可能不是独立的 Unicode 字符;它可能与它修饰的字符组合在一起,因此例如 á 可以表示为单个代码点 xE1。为了确保它是一个单独的字符,您需要将文本转换为分解的正常形式,这可以在 2.0 中使用 normalize-unicode() 函数完成,但这在 1.0 中不可用。