help needed with XSL Transformation

Hi,

I have a xml like this

< xml version="1.0" >
< xml-stylesheet type="text/xsl" href="TestImage.xsl" >
<Look> <gif>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</gif>
</Look>

under gif tag i placed (binary) image contents, in my xsl look like

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">
<msxsl:script language="c#" implements-prefix="ext">

public string decodePicture(XPathNodeIterator bindata)
{
if (bindata.MoveNext())
{
using (System.IO.FileStream fs =
System.IO.File.Create("Test.gif"))
{
byte[] data = Convert.FromBase64String(bindata.Current.Value);
fs.Write(data, 0, data.Length);
}
return fs.Name;
}
else
return "";
}
</msxsl:script>
<xsl:template match="Look">
<img
src="{ext:decodePicture(gif)}"/>
</xsl:template>
</xsl:stylesheet>

Is it the correct way to retrieve the image back from xml file please share ur ideas

Thanks in advance

Reply me

Regards



Answer this question

help needed with XSL Transformation

  • Nichole158860

    i got the solution,i am using DocBuilder.exe for conversion of xml file in to doc file. in my local system image is coming in the doc file if image is referenced in xml file. suppose when i try to open it in other system it is not opening what is the reason. In normal word appln it is working. What logic i need to use
  • entertainment-cms.com

    How do you run this XSLT

    If you want IE to perform the transformation you'd need to change your msxsl:script block. IE uses MSXML.dll to execute XSLT and it doesn't support C# language.

    You can use JScript instead.



  • ferran

    No that code is not working. First of all i want to display one image if it works then i will try to embed more image on to the xml file. Please correct the error or suggest me some way to do this

    Reply me

    Thanks & Regards

    Saravanan


  • manikaagarwal

    The following errors were reported for the original stylesheet you posted:

    test.xsl(4,29) : error : Prefix 'ext' is not defined.
    test.xsl(16,22) : error CS0103: The name 'fs' does not exist in the current context
    test.xsl(23,2) : error : Prefix 'ext' is not defined.

    I had to make some cosmetic changes, after that the stylesheet worked fine against the XML file you provided:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:ext="urn:my-scripts">

    <msxsl:script language="c#" implements-prefix="ext">

    if (bindata.MoveNext()) {

    using (System.IO.FileStream fs = System.IO.File.Create("Test.gif")) {

    byte[] data = Convert.FromBase64String(bindata.Current.Value);

    fs.Write(data, 0, data.Length);

    return fs.Name;

    }

    }

    return "";

    </msxsl:script>

    <xsl:template match="Look">

    <img src="{ext:decodePicture(gif)}"/>

    </xsl:template>

    </xsl:stylesheet>

    Output:

    < xml version="1.0" encoding="utf-8" ><img src="C:\Test\Test.gif" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:ext="urn:my-scripts" />

    Test.gif file is generated in the current directory.

    Thanks,
    Anton


  • Jim Hughes

    What is DocBuilder.exe < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    Does it use XslTransform or XslCompiledTransform

    If it doesn't you should ask this question to somebody who produces DocBuilder or XSLT processor used by DocBuilder.

    If it doesn't run under .NET framework how you expect it to compile msxsl:script and especially C# scripts



  • TechGeek1234

    This approach may work for you, but please be aware of some implications:

    * Security. Does the input XML file come from a trusted source If not, you may wish to impose some restrictions on the maximum number of image files and their sizes.

    * Name clashing. You may wish to use the System.IO.Path.GetTempFileName method to ensure uniqueness of file names.

    * Clean up. At what moment will the created files be deleted

    An alternative approach is using the MIME format (like Save As “Web Page, complete” in Internet Explorer does) to save images in the same .MHT file as the main HTML document.

    Hope it helps,
    Anton


  • Mans

    Hi,

    It is giving the error,

    The XML page cannot be displayed

    Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.

  • Andrew Ham

    Assuming that code works I think your biggest problem would be if there were multiple gif's in the same file. Each one would overwrite it so you would only see one image.

  • help needed with XSL Transformation