2009-07-31 57 views
0

在我的應用程序中,我使用4Suite.org XSLT library來執行源XML轉換。語法是這樣的:Unicode源代碼的XSLT轉換

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

其中raw_xmlstylesheet已經在我的應用程序別處定義。 raw_xml將是通過讀取使用編解碼器模塊打開的文件句柄產生的xml,因此raw_xml將是unicode。

問題是,Transform()函數需要source xml的值(​​在我的示例中爲raw_xml)爲ascii。它在pydoc中是這樣說的,如果我嘗試轉換unicode,我自己的程序會失敗並出現錯誤。

是否有不同的方法或是否有另一個python庫可以對unicode源執行XSLT轉換?或者,我是否誤解了有關XSLT轉換的內容?

回答

2

我不確定Transform實際需要ascii - 在我看來,它應該支持任何編碼的Python str。如果你打電話Transform(raw_xml.encode('utf8'), stylesheet)會發生什麼(如果你需要Unicode,當你完成處理的時候,然後將得到的utf8編碼的字符串解碼回Unicode) - 這不行嗎?

+0

這看起來確實如此。我現在正在測試它,但它看起來很有希望。謝謝! – Mike 2009-08-03 14:12:35

2

您可能更願意使用更現代且積極維護的lxml

+0

我會*愛*使用lxml,但我的應用程序已經分佈在一百多個網站,所以我沒有太多的靈活性來更換XML庫。它可以完成,但我現在要儘量避免。現在,如果我有機會更新並重構此代碼,那麼,我可能會切換到lxml以便易用,並且與etree兼容。 – Mike 2009-08-03 14:15:52