# Salty XML Transformer
A crude but effective-enough way to use (or try to use) any XSLT sheet to transform any XML file or VUE concept map file.
<br>Note, Nov. 26, 2018. Found out earlier this month while building APSK GLMP-GTK that Salty XML Transformer still works fine with PHP 5.6.38 and Saxon/C v1.02 and v1.1.0, even though I hadn't changed Salty since April 2017!
No very important changes yet. Removed the version number.
<br>Note, April 11, 2017. Version 1.2.1. A small error was fixed.
Note, April 3, 2017. Version 1.2. Now it's possible to give Salty arguments to pass as parameters to XSLT.
<br>Note, March 28, 2017. Version 1.1. Found a crude workaround for the problem of Unicode characters like 🗁 getting messed up when transforming VUE maps. Now that seems to work nicely.
However, things still don't work so well with plain, non-VUE XML files, unless those XML files contain Unicode entities instead of actual Unicode characters. Not sure yet exactly what's going wrong or how to fix it.
<br>Named "Salty" because the name XSLT reminds me of salt, and because I didn't have the energy or patience to try to make something more perfect and less crude. ("Crude", "coarse", and "vulgar" are some of the less-frequently-used meanings of the word "salty".)
I also didn't feel like fiddling with Markdown, so this Readme also isn't as nicely-formatted as I would like.
<br>Can be run either from the command line, or on a web server, though this was not designed with security in mind, so I don't recommend using it on any web server connected to the internet.
<br>Works with PHP 5.6.13 and hopefully other versions.
Also, I made most of this in Lighthouse 64 Puppy Linux 6.02 Beta 2, and so far have made no effort to make sure it works properly with other GNU/Linuxes.
<br>Requires the XSLT processor Saxon/C:
<br>Here's my blog post about how to make Saxon/C into a PHP extension when using Lucid Puppy Linux 5.2.8 version 004. (I eventually also added some notes related to Lighthouse 64 Puppy Linux 6.02 Beta 2.)
<br>Also uses the standard GNU/Linux tool "sed".
<br>Some of the Saxon-related code is slightly modified code from the PHP demo scripts included with Saxon/C.
Command line arguments:
Arg 1: A path to an XML file or VUE map to be transformed.
Arg 2: A path to an XSLT sheet which will be used on the file pointed out by
<br>Optional Arg 3: Set to "y" or "yes" or "revuize" (all equivalent) to set
"should_convert_output_back_to_vue_format" to true.
Makes Salty run the included Salty-related Perl script "unrelocvuecomments"
(whose longer name is "Undo Moving a VUE Map's Top Comment Lines Into a CDATA
Section") on the XSLT output.
<br>Optional Arg 4: A path to the file where output should go.
Must be inside whatever path is in the Dest_Folder constant.
By default, that path is: "/root/Web-Server/Salty-XML-Transformer-Output/"
Relative paths are assumed to be in there. (Except if the path contains
dots that lead out of that folder.)
<br>Optional Arg 5: Set to "y" or "yes" or "mojifix" (all equivalent) to set
"should_try_to_convert_trashed_unicode_to_entities" to true.
Makes Salty run the included Salty-related Perl script
"somehow-fix-unicode-garbage-in-Salty-XML-Transformer-output" on the
(Moji is short for mojibake, "the name for incorrect, unreadable characters shown
when computer software fails to show text correctly.")
<br>All args beyond Arg 5 are assumed to be parameters that should be passed
into the XSLT sheet being used.
If a parameter's value should be interpreted as an Xpath statement,
put ":xpath" after the parameter's name.
<br>Everything else is assumed to be something other than an Xpath.
By default, Salty converts non-Xpath parameters to XdmValues using Saxon's
Getvars (when run in web mode)
"xml" = Arg 1 above
"xslt" = Arg 2 above
"revuize" = Arg 3 above
"dest" = Arg 4 above
"mojifix" = Arg 5 above
Any other name = Assumed to be a parameter for XSLT.