XSLT-преобразование источника Unicode - PullRequest
0 голосов
/ 01 августа 2009

В моем приложении я использую библиотеку 4Suite.org XSLT для выполнения преобразований исходного XML. Синтаксис такой:

from Ft.Xml.Xslt import Transform
transformed_xml = Transform(raw_xml, stylesheet)

, где raw_xml и stylesheet были определены в другом месте в моем приложении. raw_xml будет XML, полученным в результате чтения файлового дескриптора, открытого модулем кодеков, поэтому raw_xml будет Unicode.

Проблема в том, что функция Transform () требует, чтобы значение исходного xml (raw_xml в моем примере) было ascii. Это говорит об этом в pydoc, и моя собственная программа завершается с ошибкой в ​​том же духе, если я пытаюсь преобразовать Unicode.

Есть ли другой подход или есть другая библиотека Python, которая может выполнять XSLT-преобразование для источника Unicode? Или я что-то неправильно понимаю в преобразованиях XSLT?

Ответы [ 2 ]

2 голосов
/ 01 августа 2009

Я не уверен, Transform на самом деле нужно ascii - мне кажется, он должен поддерживать любую закодированную строку Python. Что произойдет, если вы вызовете Transform(raw_xml.encode('utf8'), stylesheet) (а затем расшифруете полученную строку в кодировке utf8 обратно в Unicode, когда закончите ее обработку, если вам нужен Unicode) - разве это не работает?

2 голосов
/ 01 августа 2009

Вам, вероятно, лучше использовать более современные и активно поддерживаемые lxml .

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