How can I encode the content of a template in base64, using XSLT 1.0?
Edit: using serialization mode, runing in PHP enviroment
It's like i have a template like this:
<xsl:template name="test">
<test
gender="male"
name1="TEST"
name2="TEST">
<sometags>
<tag></tag>
</sometags>
</test>
</xsl:template>
and I want the output to be like this:
<base64>PHRlc3QgDQoJCSAgZ2VuZGVyPSJtYWxlIiANCgkJICBuYW1lMT0iVEVTVCIgDQoJCSAgbmFtZTI9IlRFU1QiPg0KICAgICAgICAgIDxzb21ldGFncz4NCgkJCQk8dGFnPjwvdGFnPg0KCQkJPC9zb21ldGFncz4NCgkJPC90ZXN0Pg==</base64>
Mukhul Gandhi created a Base64 encoder that runs in XSLT 1.0. If you can switch to XSLT 2.0, you can create stylesheet functions to do the same.
However, because you seem to mean to encode nodes into strings, you should not create nodes, but strings instead:
Re-apply the result of your template using the
node-set
extension function (supported by (almost?) all XSLT 1.0 processors) and write something like this:Note: not tested, and you probably want to extend it to add indentation, processing of other nodes like processing instructions and comments, and in the case of attributes, to escape any quotes in the strings.
In XSLT 3.0 you can achieve the same using the
fn:serialize
function.