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

问题描述:

我的老板告诉我要确定,因为角色可能会得到一个奇怪的输出,比如'solución'输出'soluci & 3n'。哪些是xsl转换中重音字符最安全的方法?

有些话需要被重音,这是在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文件中的一句话:

enter image description here

但是,万一...... 有逃脱的口音,以避免一个奇怪的输出的功能?

+0

我写这篇文章的评论,试图得到更新,并出现在最新的问题,“我不知道如果这是要工作' – jvillegas

+0

你不清楚你在问什么。XML提供了多个在每个字符语义等价的表示。你问关于在源文档中使用哪种表示?关于在样式表文档中使用哪些表示?可能关于如何影响哪些表现形式出现在结果文件中? –

+0

嗨,谢谢你的回应。好吧,我不是英国本地人,我试图以最好的方式提出问题,我谈论所有的口音áàéèíìóòúù,与之相同这些重音字符以大写字母显示,并且是在.odt文档中显示输出的最佳方式,以显示完全相同的“áàéèíìóòúù”,避免可能出现的问题。 – jvillegas

但是,以防万一...... 有一个函数来避免重音以避免奇怪的输出?

XML需要基本上所有Unicode作为其字符集。重音字符不需要特殊处理,无论是在XML中,还是在XSLT中。因此,不,没有函数可以转义重音符号或重音符号,并且不需要。

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

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

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

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

如果您的文档不承担XML声明,或者如果它没有声明编码,然后可以肯定,他们正在使用XML的默认编码,UTF-8编码。歪曲XML工具的编码确实是文档中的字符可能被扰乱的一种方式。

你说得对,重音字符仍然可能出错。我们仍然在基于网络的表单中使用重音字符,并且在电子邮件中使用重音字符。如果所有配置都正确,这一切都能正常工作,但是你并不总是能够控制所有事情,并且有很多机会出现问题。像&#243;

数字字符引用是反对不正确的转码一对一防守,但他们有他们不通过XSLT转换(或许多其他的XML处理操作)生存的问题。在XSLT代码(和在Javascript这个问题)我已经采取了使用结构,如

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