Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Here you will find examples for most common testing issues that might be solved thanks to the XSLT transformations

Extraction of XML document packed in a field of other XML

If one the fields of the XML, for example <FieldWithData> contains in itself other XML as escaped text:

<Data>
	<FieldWithData>&lt;f1 a1=&quot;a1_val&quot;&gt;&lt;f2&gt;val2&lt;/f2&gt;&lt;f3&gt;val3&lt;/f3&gt;&lt;/f1&gt;</FieldWithData>	
</Data>

you can extract it using below XSLT before IFTT XML comparison:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>
 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
 </xsl:template>
 <xsl:template match="FieldWithData/text()">
	<xsl:value-of disable-output-escaping="yes" select="."/>
 </xsl:template>
</xsl:stylesheet>

Using this technique will allow you to compare content of <FieldWithData> as XML not as a one long value of a single field.

In case this XML is in addition stored in the CDATA, you can try to reuse the following XSLT mapping:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="FieldWithData">
<xsl:value-of select="//FieldWithData" disable-output-escaping="yes"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

XSLT for other encodings than UTF-8

In case your XML is encoded not in UTF-8 and you are missing some characters during output comparison in IFTT, you can use below simple XSLT that will remove encoding and allow XSLT engine to convert message to UTF-8. This is implicit XSLT engine conversion.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>
 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

Different order of XML nodes in a new solution

Different order of XML nodes in a new solution

  • No labels