Subject: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>
Subject: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.
Subject: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
Subject: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?
Subject: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.
Subject: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.