xslt - Transform XML from CDATA using XSL -
i have xml document:
<ns0:getdataresponse xmlns:ns0="http://abc.com/"> <return> <wrapper> <data><![cdata[<?xml version="1.0" encoding="utf-8"?> <condic> <dictionary>bank</dictionary> <rows> <row> <bic>abkzkzkx</bic> <bcode>319</bcode> <name1>aa "a bank"</namekz> <name2>bb "b bank"</nameru> </row> <row> <bic>abnakzkx</bic> <bcode>922</bcode> <name1>cc "c bank"</namekz> <name2>dd "d bank"</nameru> </row> </rows> </condic>]]></data> </wrapper> </return> </ns0:getdataresponse> how can parse xsl each rows in cdata make kind of select:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:ns0="http://abc.com/"> <xsl:output method="html" /> <xsl:template match="text()|@*"/> <xsl:template match="ns0:rows"> <select name="bank" id="bank" class="input" style="width: 370px;"> <xsl:for-each select="row"> <xsl:sort select="name1"/> <option value="{bic}"><xsl:value-of select="name1" /></option> </xsl:for-each> </select>
as suggested in comment, post solution. example use xslt 3.0 saxon 9.5 (needs pe or ee version):
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:ns0="http://abc.com/" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math ns0" version="3.0"> <xsl:output method="html" indent="yes"/> <xsl:template match="text()|@*"/> <xsl:template match="ns0:getdataresponse"> <select name="bank" id="bank" class="input" style="width: 370px;"> <xsl:for-each select="parse-xml(return/wrapper/data)//row"> <xsl:sort select="name1"/> <option value="{bic}"> <xsl:value-of select="name1"/> </option> </xsl:for-each> </select> </xsl:template> </xsl:stylesheet> with input of
<ns0:getdataresponse xmlns:ns0="http://abc.com/"> <return> <wrapper> <data><![cdata[<?xml version="1.0" encoding="utf-8"?> <condic> <dictionary>bank</dictionary> <rows> <row> <bic>abkzkzkx</bic> <bcode>319</bcode> <name1>aa "a bank"</name1> <name2>bb "b bank"</name2> </row> <row> <bic>abnakzkx</bic> <bcode>922</bcode> <name1>cc "c bank"</name1> <name2>dd "d bank"</name2> </row> </rows> </condic>]]></data> </wrapper> </return> </ns0:getdataresponse> the result is
<select name="bank" id="bank" class="input" style="width: 370px;"> <option value="abkzkzkx">aa "a bank"</option> <option value="abnakzkx">cc "c bank"</option></select>
Comments
Post a Comment