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 5 Current »

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 the content of <FieldWithData> as XML, not as 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

Suppose your XML is encoded not in UTF-8, and you are missing some characters during output comparison in IFTT. In that case, you can use the simple XSLT provided below, which will remove encoding and allow the XSLT engine to convert the 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