2016-10-20 43 views
0

我有從舊版Lotus Notes應用程序中提取的XML數據。 XML嵌入了二進制數據。我猜測,基於IBM Lotus Notes網站上的信息,它是以base64格式編碼的,但我不確定這一點。一些二進制數據似乎是圖像,而其中一些似乎是嵌入的MS Word文檔。我正在使用Saxon XSLT處理器。我如何使用XSLT解碼這個二進制數據?如何使用XSLT解碼嵌入到XML中的二進制數據?

的數據看起來大致是這樣的:

<objectref version='2' name='EXT12682' class='Word.Document.8' 
    displayformat='metafile' description='Microsoft Word Document' classid='{00020906-0000-0000-c000-000000000046}' 
    storageformat='structstorage'><picture height='289px' width='625px' scaledheight='3.0104in' 
     scaledwidth='6.5104in'><notesbitmap>illegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygook</notesbitmap></picture></objectref> 


<file hosttype='bytearraypage' 
    compression='none' flags='storedindoc' name='STG12172'> 
    <created><datetime dst='true'>20080924T171730,05-04</datetime></created> 
    <modified><datetime dst='true'>20080924T171730,05-04</datetime></modified><filedata>illegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygookillegiblegobbledygook</filedata></file> 
+0

Saxon的商業版本對處理base64編碼數據有一定的支持,請參閱http://saxonica.com/html/documentation/上記錄的函數'base64Binary-to-string/octets'。功能/撒克遜/。還有http://saxonica.com/html/documentation/functions/expath%2Dbinary/模塊。 –

+0

感謝您的信息...它看起來像我仍然需要一個額外的步驟來查看結果作爲圖像或Word文檔。 – b00kgrrl

回答

0

最近撒克遜(PE和EE)的版本包括其中包含您需要處理的二進制數據的一切EXPath二進制模塊(http://expath.org/spec/binary)的實現 - 除外當然是您想要操作的二進制數據的規範。如果你知道輸入結構是什麼,如果你知道你想要產生的輸出應該是什麼樣子,那麼二進制函數應該可以幫助你,但是我擔心你的問題你也不知道。

如果您認爲二進制數據是base64編碼的JPEG文件,那麼您實際上不需要EXPath二進制模塊 - EXPath文件模塊(也在Saxon PE和EE中實現)應該是足夠。見http://expath.org/spec/file#fn.write-binary

你可以這樣做:

file:write-binary("output.jpeg", xs:base64Binary(jpegBitMap)) 

二進制元素的內容寫入作爲外部文件,那麼你可以嘗試使用瞭解相關格式的應用程序打開該文件。 (請小心這些方法,因爲它們有副作用,不能很好地適用於XQuery或XSLT。例如,不要嘗試在變量初始值設定項中調用它們,如果變量是從未使用的。)

+0

謝謝!雖然我仍然對每個XML文件可以有多個嵌入式二進制對象的事實感到困惑。這是否意味着每個嵌入對象都應該寫入單獨的文件? – b00kgrrl

+0

我們不知道您要如何處理這些數據,因此我們如何才能知道? –