哪些是 xsl 转换中重音字符最安全的方法?

Which are the safest ways to accented characters in xsl transformations?

我的老板告诉我要确定这一点,因为角色可能会得到一个奇怪的输出的可能性很小,比如 'solución' 输出 'soluci&3n'.

有些词需要强调,那是xsl中的原码,很简单:

<table:table-cell table:style-name="TablaIkus.FXI" office:value-type="string">
                    <text:p text:style-name="PIntBodyLeft">Fecha inicio cómputo intereses</text:p>
                </table:table-cell>

事实是,输出在最终的 .odt 文件中正确显示了单词:

但是,以防万一... 是否有转义重音符号的功能以避免出现奇怪的输出?

But, just in case... There is a function to escape accents to avoid a strange output?

XML 将几乎所有的 Unicode 作为其字符集。重音字符不需要特殊处理,在 XML 中通常如此,在 XSLT 中也不例外。因此,不,没有转义重音或重音字符的功能,需要none。

但是,您的问题掩盖了误解。正如我在评论中所写,XML 提供了多种语义上等效的方式来表示同一字符。这适用于您的 XML 输入文档、样式表文档和输出方法 "xml" 的结果文档。例如,如果文档编码支持它,那么字符 ó("LATIN SMALL LETTER O WITH ACUTE",如 Unicode 命名的那样)可以通过它在文档字符编码中的表示直接传达,但它也可以等效地是表示为两种形式之一的 XML 字符实体:&#xf3;&#243;.

如果 XSLT 处理器输出 XML 包含与输入中使用的字符不同的某些字符表示形式,则它不会犯任何错误。在某些情况下,它可能实际上需要这样做。如果它确实执行了这样的转换,那么它不会因此以任何方式改变文档的含义。听起来您想避免此类转换,但这不是您应该担心的问题。

但是,请确保您的输入和样式表文档在其 XML 声明中准确声明其字符编码。例如,

<?xml version="1.1" encoding="UTF-8"?>

如果您的文档没有 XML 声明或者如果它没有声明编码,请确保它们使用 XML 的默认编码 UTF-8 进行编码。向您的 XML 工具错误地表示编码确实是您文档中的字符可能被打乱的一种方式。

你是对的,重音字符仍然会出错。我们在基于 Web 的表单中的重音字符和电子邮件中的重音字符仍然存在问题。如果所有配置都正确,一切都可以正常工作,但您并不总是可以控制所有事情,并且有很多机会出错。

&#243; 这样的数字字符引用是防止不正确转码的一种方法,但它们存在无法通过 XSLT 转换(或许多其他 XML 处理操作)的问题。在 XSLT 代码中(就此而言,在 Javascript 中)我已经开始使用像

这样的结构

<xsl:variable name="nbsp" select="codepoints-to-string(160)"/>