Специальные символы не могут отображаться в атрибуте XSL? - PullRequest
1 голос
/ 21 августа 2011

У меня есть шаблон XSL:

    <meta name="description" content="{$page-description}"/>

и переменная:

<xsl:variable name="page-description">
<xsl:choose>
    <xsl:when test="$current-page = 'home'">
            <xsl:text>Lots of umlauts äöü</xsl:text>
    </xsl:when>                             
    <xsl:otherwise>
           ...
            </xsl:otherwise>
     </xsl:choose>
</xsl:variable>

Однако кажется, что умлауты не разрешены в атрибутах XLS?

Потому что вместо того, что я действительно хочу, я получаю это:

Lots of umlauts &#xE4;&#xF6;&#xFC;

Как это можно исправить?

Ответы [ 2 ]

1 голос
/ 21 августа 2011

Невозможно воспроизвести это .Следующее преобразование:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vTest">Lots of umlauts äöü</xsl:variable>

 <xsl:template match="/">
   <meta name="description" content="{$vTest}"/>
 </xsl:template>
</xsl:stylesheet>

при запуске с любым из следующих процессоров XSLT : MSXML3, MSXML4, MSXML6, Saxon 6.1.4, Saxon9.1.7, AltovaXML (XML-SPY), .NET XslCompiledTransform, .NET XslTransform, производит точно такой же вывод :

<meta name="description" content="Lots of umlauts äöü"/>

Возможное решение :

  1. В вашей инструкции <xsl:output> не используйте никакое другое значение для атрибута encoding, кроме utf-8.Попробуйте: <xsl:output encoding="utf-8"/>

  2. В случае использования дополнительной сериализации (XmlWriter, TextWriter, ... и т. Д.) Результата, убедитесь, что кодировка, указанная для этого дополнительногоСериализация: utf-8

  3. Убедитесь, что инструмент, с которым вы просматриваете результаты, использует кодировку utf-8 и его шрифт по умолчанию правильно отображает специальные символы (например,шрифт с именем Arial Unicode MS имеет правильное представление для большинства символов Юникода).

0 голосов
/ 28 августа 2011

Оказалось, что эта проблема была связана с системой управления контентом, которую я использовал, то есть Symphony (кстати, настоятельно рекомендуется!).

Я решил это, изменив метод вывода с xml на html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...