xsl-list
[Top] [All Lists]

[xsl] Using saxon:parse on processing instructions

2017-12-18 14:18:17
Hello and thanks in advance for the help. I'm scratching my head on trying
to convert a string of serialized xml in a processing instruction back into
XML.

I'm restricted to XSLT 2.0 and am using Saxon 9.1. When I treat the simply
copy and past the xml into the stylesheet everything works (see variable
$s2), but when breaking the string out of the processing instruction the
elements remain serialized:

input:

<?xml version="1.0"?>
<root xmlns:bcl="http://bcl";>
<?pi a="&lt;bcl:e&gt;Test&lt;/bcl:e&gt;" ?>
</root>

stylesheet:

<?xml version='1.0'?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:bcl="http://bcl";
xmlns:saxon="http://saxon.sf.net/";>

<xsl:template match="root">
<test>
<xsl:apply-templates/>
</test>
</xsl:template>

<xsl:template match="processing-instruction('pi')">
<xsl:variable name="s1">&lt;root xmlns:bcl="http://bcl"&gt;<xsl:value-of
select="replace(., '.*a=(.)(.+)?\1.*', '$2')"/>&lt;/root&gt;</xsl:variable>
<xsl:variable name="s2">&lt;root xmlns:bcl="http://bcl
"&gt;&lt;bcl:e&gt;Test&lt;/bcl:e&gt;&lt;/root&gt;</xsl:variable>
<!-- Not Expected: -->
<xsl:copy-of select="saxon:parse($s1)"/>
<!-- Expected: -->
<xsl:copy-of select="saxon:parse($s2)"/>
</xsl:template>

</xsl:stylesheet>


output:

<?xml version='1.0' ?>
<test xmlns:bcl="http://bcl"; xmlns:saxon="http://saxon.sf.net/";>
<root>&lt;bcl:e&gt;Test&lt;/bcl:e&gt;</root>
<root><bcl:e>Test</bcl:e></root>
</test>



Any help or suggestion would be much appreciated.

Regards,

Spencer
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>