Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Sorry guys, I misled you. The thing is that the SOAP response is partially escaped: </p> <pre><code> &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt; &lt;soap:Body&gt; &lt;GetCurrentExchangeRatesResponse xmlns="http://www.mnb.hu/webservices/"&gt; &lt;GetCurrentExchangeRatesResult&gt;&amp;lt;MNBCurrentExchangeRates&amp;gt;&amp;lt;Day date="2013-12-04"&amp;gt;&amp;lt;Rate curr="AUD" unit="1"&amp;gt;200,46&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="BGN" unit="1"&amp;gt;154,44&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="BRL" unit="1"&amp;gt;93,56&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="CAD" unit="1"&amp;gt;208,25&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="CHF" unit="1"&amp;gt;245,79&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="CNY" unit="1"&amp;gt;36,49&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="CZK" unit="1"&amp;gt;11,02&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="DKK" unit="1"&amp;gt;40,49&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="EUR" unit="1"&amp;gt;302,05&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="GBP" unit="1"&amp;gt;363,71&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="HKD" unit="1"&amp;gt;28,67&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="HRK" unit="1"&amp;gt;39,53&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="IDR" unit="100"&amp;gt;1,85&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="ILS" unit="1"&amp;gt;63,13&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="INR" unit="1"&amp;gt;3,57&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="ISK" unit="1"&amp;gt;1,86&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="JPY" unit="100"&amp;gt;216,66&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="KRW" unit="100"&amp;gt;20,94&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="LTL" unit="1"&amp;gt;87,5&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="LVL" unit="1"&amp;gt;429,71&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="MXN" unit="1"&amp;gt;16,89&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="MYR" unit="1"&amp;gt;68,9&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="NOK" unit="1"&amp;gt;36,35&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="NZD" unit="1"&amp;gt;181,92&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="PHP" unit="1"&amp;gt;5,07&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="PLN" unit="1"&amp;gt;71,9&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="RON" unit="1"&amp;gt;67,62&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="RSD" unit="1"&amp;gt;2,63&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="RUB" unit="1"&amp;gt;6,68&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="SEK" unit="1"&amp;gt;34,08&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="SGD" unit="1"&amp;gt;177,05&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="THB" unit="1"&amp;gt;6,89&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="TRY" unit="1"&amp;gt;108,51&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="UAH" unit="1"&amp;gt;26,96&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="USD" unit="1"&amp;gt;222,29&amp;lt;/Rate&amp;gt;&amp;lt;Rate curr="ZAR" unit="1"&amp;gt;21,4&amp;lt;/Rate&amp;gt;&amp;lt;/Day&amp;gt;&amp;lt;/MNBCurrentExchangeRates&amp;gt;&lt;/GetCurrentExchangeRatesResult&gt; &lt;/GetCurrentExchangeRatesResponse&gt; &lt;/soap:Body&gt; &lt;/soap:Envelope&gt; </code></pre> <p>I exported the XML from Visual Studio and it automaticaly replaced &lt; and &gt;. But the web service is really treating contents of GetCurrentExchangeRatesResult as string. </p> <p>I spend almost whole day doing this. </p> <p><strong>Thanks everyone who helped me solve this problem.</strong> </p> <p>Final XSLT that worked for me - require exsl:node-set function (in case someone would need it):</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl" xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="http://www.mnb.hu/webservices/"&gt; &lt;xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/&gt; &lt;xsl:template match="soap:Envelope/soap:Body/ws:GetCurrentExchangeRatesResponse/ws:GetCurrentExchangeRatesResult"&gt; &lt;xsl:element name="kurzovni_listek"&gt; &lt;xsl:variable name="details" select="."/&gt; &lt;xsl:variable name="parsedXml_"&gt; &lt;xsl:call-template name="parseXml"&gt; &lt;xsl:with-param name="text" select="$details"/&gt; &lt;/xsl:call-template&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="parsedXml" select="exsl:node-set($parsedXml_)"/&gt; &lt;xsl:attribute name="banka"&gt;&lt;xsl:text&gt;MNB&lt;/xsl:text&gt;&lt;/xsl:attribute&gt; &lt;xsl:attribute name="datum"&gt; &lt;xsl:value-of select="$parsedXml/MNBCurrentExchangeRates/Day/@date"/&gt; &lt;/xsl:attribute&gt; &lt;xsl:for-each select="$parsedXml/MNBCurrentExchangeRates/Day/Rate"&gt; &lt;xsl:element name="kurz"&gt; &lt;xsl:attribute name="mena"&gt; &lt;xsl:value-of select="@curr"/&gt; &lt;/xsl:attribute&gt; &lt;xsl:attribute name="nasobek"&gt; &lt;xsl:value-of select="@unit"/&gt; &lt;/xsl:attribute&gt; &lt;xsl:attribute name="hodnota"&gt; &lt;xsl:value-of select="translate(., ',', '.')"/&gt; &lt;/xsl:attribute&gt; &lt;/xsl:element&gt; &lt;/xsl:for-each&gt; &lt;/xsl:element&gt; &lt;/xsl:template&gt; &lt;xsl:template name="parseXml"&gt; &lt;xsl:param name="text"/&gt; &lt;xsl:choose&gt; &lt;xsl:when test="contains($text, '&amp;gt;')"&gt; &lt;xsl:variable name="topLevelTag"&gt; &lt;xsl:call-template name="getTopLevelTag"&gt; &lt;xsl:with-param name="text" select="$text"/&gt; &lt;/xsl:call-template&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="openingTag"&gt; &lt;xsl:value-of select="$topLevelTag"/&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="tagName"&gt; &lt;xsl:call-template name="getTopLevelTagName"&gt; &lt;xsl:with-param name="text" select="$text"/&gt; &lt;/xsl:call-template&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="closingTag"&gt; &lt;xsl:value-of select="concat('&amp;lt;/',$tagName,'&amp;gt;')"/&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="firstNode"&gt; &lt;xsl:if test="not(contains($topLevelTag,'/&amp;gt;'))"&gt; &lt;xsl:value-of select="substring-before(substring-after($text,$openingTag),$closingTag)"/&gt; &lt;/xsl:if&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="afterFirstNode"&gt; &lt;xsl:choose&gt; &lt;xsl:when test="not(contains($topLevelTag,'/&amp;gt;'))"&gt; &lt;xsl:value-of select="substring-after($text,concat($firstNode,$closingTag))"/&gt; &lt;/xsl:when&gt; &lt;xsl:otherwise&gt; &lt;xsl:value-of select="substring-after($text,$topLevelTag)"/&gt; &lt;/xsl:otherwise&gt; &lt;/xsl:choose&gt; &lt;/xsl:variable&gt; &lt;xsl:element name="{$tagName}"&gt; &lt;xsl:call-template name="createAttributes"&gt; &lt;xsl:with-param name="text" select="$topLevelTag"/&gt; &lt;/xsl:call-template&gt; &lt;xsl:call-template name="parseXml"&gt; &lt;xsl:with-param name="text" select="$firstNode"/&gt; &lt;/xsl:call-template&gt; &lt;/xsl:element&gt; &lt;xsl:call-template name="parseXml"&gt; &lt;xsl:with-param name="text" select="$afterFirstNode"/&gt; &lt;/xsl:call-template&gt; &lt;/xsl:when&gt; &lt;xsl:otherwise&gt; &lt;xsl:value-of select="$text"/&gt; &lt;/xsl:otherwise&gt; &lt;/xsl:choose&gt; &lt;/xsl:template&gt; &lt;xsl:template name="getTopLevelTagName"&gt; &lt;xsl:param name="text"/&gt; &lt;xsl:choose&gt; &lt;xsl:when test="contains($text, '&amp;gt;')"&gt; &lt;xsl:variable name="tagWithAttributesWithoutEnd"&gt; &lt;xsl:value-of select="substring-before($text, '&amp;gt;')"/&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="tagWithAttributesWithoutBegining"&gt; &lt;xsl:value-of select="substring-after($tagWithAttributesWithoutEnd, '&amp;lt;')"/&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="tagName"&gt; &lt;xsl:choose&gt; &lt;xsl:when test="contains($tagWithAttributesWithoutBegining,' ')"&gt; &lt;xsl:value-of select="substring-before($tagWithAttributesWithoutBegining, ' ')"/&gt; &lt;/xsl:when&gt; &lt;xsl:otherwise&gt; &lt;xsl:value-of select="$tagWithAttributesWithoutBegining"/&gt; &lt;/xsl:otherwise&gt; &lt;/xsl:choose&gt; &lt;/xsl:variable&gt; &lt;xsl:value-of select="$tagName"/&gt; &lt;/xsl:when&gt; &lt;/xsl:choose&gt; &lt;/xsl:template&gt; &lt;xsl:template name="getTopLevelTag"&gt; &lt;xsl:param name="text"/&gt; &lt;xsl:choose&gt; &lt;xsl:when test="contains($text, '&amp;gt;')"&gt; &lt;xsl:variable name="tagWithAttributesWithoutEnd"&gt; &lt;xsl:value-of select="substring-before($text, '&amp;gt;')"/&gt; &lt;/xsl:variable&gt; &lt;xsl:value-of select="concat($tagWithAttributesWithoutEnd,'&amp;gt;')"/&gt; &lt;/xsl:when&gt; &lt;/xsl:choose&gt; &lt;/xsl:template&gt; &lt;xsl:template name="createAttributes"&gt; &lt;xsl:param name="text"/&gt; &lt;xsl:choose&gt; &lt;xsl:when test="contains($text, '=&amp;quot;')"&gt; &lt;xsl:variable name="attributeName"&gt; &lt;xsl:value-of select="substring-before(substring-after($text,' '),'=&amp;quot;')"/&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="attributeValue"&gt; &lt;xsl:value-of select="substring-before(substring-after($text,concat($attributeName,'=&amp;quot;')),'&amp;quot;')"/&gt; &lt;/xsl:variable&gt; &lt;xsl:attribute name="{$attributeName}"&gt;&lt;xsl:value-of select="$attributeValue"/&gt;&lt;/xsl:attribute&gt; &lt;xsl:call-template name="createAttributes"&gt; &lt;xsl:with-param name="text" select="substring-after($text,concat($attributeName,'=&amp;quot;',$attributeValue,'&amp;quot;'))"/&gt; &lt;/xsl:call-template&gt; &lt;/xsl:when&gt; &lt;/xsl:choose&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload