2013-06-17 3 views
0

У меня есть xsl-файл, который преобразует xml-файл в другой, с другим xml-форматом. XSL-файл начинается с:XSL-преобразование дает мне неправильное кодирование

 ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 

И тогда выход начинается с:

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

А остальные из всех элементов, которые будут преобразованы, как много линий, как:

 <xsl:element name="tns:corporateName" > 
      <xsl:value-of select="@CorpOrgname"/> 
     </xsl:element> 

Все выглядит хорошо, за исключением того, что полученный XML-файл имеет этот тег в строке 1:

<?xml version="1.0" encoding="Windows-1252"? 

Я не могу понять, откуда эта кодировка. Когда я отлаживаю файл локально, результатом является utf-8, но не тогда, когда это приложение использует его.

Есть ли способ заставить его больше установить его как utf-8? Потому что это спрос. Принимающая система представляет собой некоторую Unix-систему.

У меня есть пример исходного файла. Тот, который я преобразую, и который находится в формате utf-8 (во время того, что блокнот ++ говорит в любом случае).

Я что-то пропустил здесь, есть ли другой способ установить результат: s кодировка, чем синтаксическая кодировка = "utf-8"?

+0

Как вы выполняете преобразование, какой XSLT-процессор вы используете? –

+0

Ну, приложение, которое использует конечный пользователь, имеет старую технику (Centura), и один вызывает класс com-visible класса (regasm) .net, который принимает исходный xml-файл в качестве аргумента в вызове, как путь к нему. Затем .net-приложение использует эту информацию, просто чтобы преобразовать ее с помощью xsl и сохранить ее. –

ответ

0

Посмотрите, как выполняется преобразование. Возможно, вывод отправляется в дерево DOM и затем сериализуется сериализатором DOM, а не XSLT-сериализатором - в этом случае кодировка, запрошенная в таблице стилей, будет проигнорирована.

+0

Привет. Вы правы на цели. Я поговорил с командой, которая отвечала за то, чтобы взять файл в свой код для дальнейшего лечения. И когда мы посмотрели на код, мы увидели, что он написан жестко закодированным с помощью «System.Text.Encoding.GetEncoding (1252)». Спасибо, что поставили меня на путь. –