XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Mary JohnsonSubject: Base 64 encoded data embedded in XML
Author: Mary Johnson
Date: 11 Nov 2005 10:52 AM
Question: Is there a way to automate the decoding of base 64 embedded data in XML?

Background: I have an XML file with some of the tags containing base 64 encoded data.

I can manually go in and extract the data and use a decoder to convert from base 64 to binary to get the actual .jpg file, but then need to modify the XML manually to reference the new filename.

I am wondering if there is some software out there that will let me automate this or if there are internal functions I can use to decode on the fly.

I am using Dreamweaver 8 that has advanced XML support, but do not even know if this is possible to do in an automated fashion without writing custom php (which I don't want to do).

The individual XML tag looks like this:

<BinaryData Encoding="Base64">/9j/4AAQSkZJRgABAQEAtAC0AAD/4RJIaHR0cDovL2 ... rest of data removed ...//2Q==</BinaryData>

Postnext
Ivan PedruzziSubject: Base 64 encoded data embedded in XML
Author: Ivan Pedruzzi
Date: 14 Nov 2005 11:30 AM
Hi Mary,

If you need to support both Mozilla and IE you have to generate a physical file for each images.

The attached example shows how to convert base64 text into binary and save on a file using the Saxon XSLT processor.


Hopes this helps
Ivan Pedruzzi
Stylus Studio Team


DocumentEmployeeWithPicture.xsl


DocumentEmployeeWithPicture.xml

Postnext
Mary JohnsonSubject: Base 64 encoded data embedded in XML
Author: Mary Johnson
Date: 14 Nov 2005 10:50 PM
I ran this code in my environment using Dreamweaver Cold Fusion and got the following error:

MM_XSLTransform error.
Transformation Error.
Transforming
java.lang.NoSuchMethodException: For extension function, could not find method java.lang.String.new([ExpressionContext,] ).

The file "Pedruzzi.jpg" gets created but is 0 size.

I think the error is in the following line:

<xsl:variable name="b64" select="b64:new(string(Photo))"/>

Postnext
Ivan PedruzziSubject: Base 64 encoded data embedded in XML
Author: Ivan Pedruzzi
Date: 15 Nov 2005 10:53 AM
The example i posted uses an extension fucntion only available with Saxon as stated.

Which XSLT processor Cold Fusion uses?

Does it support java extension function?

You can use the attached XSLT (xsl-property-test.xsl) to see the XSLT processor name and version.

I also attached a version that uses an open source base64 decoder/encoder that was able to run with different processors: XalanJ 2.5.2, Saxon 6.x and Saxon 8.6.

You will need unpuck base64.zip and configure your CLASSPATh to include the direcotory base64


Hope this helps
Ivan Pedruzzi
Stylus Studio Team


Documentxsl-property-test.xsl


Documentbase64.zip
Open Source base64 encoder/decoder

Postnext
Ivan PedruzziSubject: Base 64 encoded data embedded in XML
Author: Ivan Pedruzzi
Date: 15 Nov 2005 10:58 AM
Originally Posted: 15 Nov 2005 10:56 AM


DocumentEmployeeWithPicture(1).xsl

Postnext
Mary JohnsonSubject: Base 64 encoded data embedded in XML
Author: Mary Johnson
Date: 17 Nov 2005 04:53 PM
I ran your xsl-property-test.xsl using my local Cold Fusion server and found that the Vendor URL is http://xml.apache.org/xalan-j and the product version is Xalan Java 2.4.1. The environment on my shared web host server differs in that the product version is Xalan Java 2.5.1

I have installed the code and am getting the error:

Base64 (Unsupported major.minor version 49.0)

I am assuming this is because you gave me code compatible for XalanJ 2.5.2 and I am below that on both platforms.

How can you ever keep these things synchronized? Should I just try to find a compiled version for my Xalan Java 2.4.1?

Postnext
Ivan PedruzziSubject: Base 64 encoded data embedded in XML
Author: Ivan Pedruzzi
Date: 17 Nov 2005 05:30 PM
Nope, the error is because I compiled base64.java using JDK 1.5. and you are running Java 1.4.

Try the attached version

hope this helps
Ivan Pedruzzi
Stylus Studio Team


Unknownbase64(1).zip
compiled with JDK 1.4

Postnext
Mary JohnsonSubject: Base 64 encoded data embedded in XML
Author: Mary Johnson
Date: 19 Nov 2005 01:17 PM
Ivan, you are awesome! I couldn't have done this without you. Everything is working. I had a huge learning curve on this but your instructions were simple and complete. Thank you very much.

Postnext
Paul MedinaSubject: Base 64 encoded data embedded in XML
Author: Paul Medina
Date: 14 Feb 2007 12:51 AM
Hi Ivan,

I downloaded the open-source file and installed jdk 1.5. I was unable to get IE to convert the sample employee file using the style sheet. It errors out with Base64 does not contain any functions. I have added the directory Base64 to the classpath on my laptop. Any idea what I may be doing wrong?

The test files (xml and xsl) are in c:\dxl and the base64 files are in a subdirectory base64 to that directory. I'm a noob with all this, so any help you can provide would be great.

Thanks!

Posttop
Tony LavinioSubject: Base 64 encoded data embedded in XML
Author: Tony Lavinio
Date: 14 Feb 2007 04:57 PM
There are examples on how to do this with the Stylus Studio
built-in Base64 adapter on our web site.
See http://www.stylusstudio.com/binary_xml.html

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.