Question

How do you save translated XML to an actual file on disk? I am new to XML/XSLT and I am trying to figure that out. I can't seem to find any examples that work for me. For example, I just want to save the file to c:\temp\text.xls. How to I save it? Do I have to use java or .net or some other programming language/api? I was hoping to have the XSL just save the file.

Was it helpful?

Solution

The XSL can't do anything by itself. It's just a definition for transforming an XML file into something else. To do anything with it you need to run the XSL Transform in a program, or using a tool like XML Spy.

Update

Here's a simple example I wrote some years ago in VBScript:

Dim xml, xsl, htm, fso, flOut

Set xml = CreateObject("MSXML2.DOMDocument")
Set xsl = CreateObject("Msxml2.DOMDocument")
Set fso = CreateObject("Scripting.FileSystemObject")

xml.load WScript.Arguments(0)
xsl.load WScript.Arguments(1)
htm = xml.transformNode(xsl)

Set flOut = fso.CreateTextFile(WScript.Arguments(2))
flOut.Write htm
flOut.close

I called it xmlTrfm.vbs. Use it like this:

xmlTrfm.vbs [sourceFileName].xml [transformFileName].xsl [outputFileName].[ext]

The file extension for the output file name obviously depends on the format that the XSL transform produces, usually xml, html or txt, but can be almost anything.

OTHER TIPS

Almost every XSLT processor allows a transformation to be initiated from the command line. One of the arguments is the file where to save the result of the transformation.

Examples:

  1. Saxon 9.x: java net.sf.saxon.Transform -s:source -xsl:stylesheet -o:output

  2. MSXML6: msxsl.exe %xml% %xsl% -o %out% -u '6.0' -t %param[ name="value"]%

  3. XQSharp: xslt.exe -s %xml% -o %out% -r 1 -t %xsl% %param[ name="value"]%

  4. .NET 2.0+ (XslCompiledTransform): nxslt2.exe %xml% %xsl% -t -o %out%%param[ name="value"]%

  5. AltovaXML (XML-SPY): AltovaXML.exe -xslt2 %xsl% -in %xml% -out %out%%param[ name="value"]%

In 2. to 5. above %xml% is the path to the file containing the XML document, %xsl% is the path to the file containing the primary XSLT stylesheet, `%out% is the path to the file where the result of the transformation should be saved.

Yes, you can't save it from the XSLT - what languages can you use?

Perhaps (I'm speculating) your difficulty is that you are running the XSLT transformation in a browser? In that case you will have difficulties because browsers, for security reasons, don't allow writing to filestore in the normal way.

If that's not the case, please explain how you are running your XSLT transformation.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top