xml - XSLT null Check -
i have incoming xml payload wanted check null element"ns4:payload" complex type can content data or null.i have given below xslt. how can null check complex type element. please let me know. tried without namespace prefic xslt working. how null check element if coming namespace prefix. please let me know incoming xml:
<ns4:eventinteractiontrackingrequest xmlns:ns2="http://example.com"> <ns4:basemessage> <uuid>sample</uuid> <exchangetype>test</exchangetype> <headerversion>1</headerversion> <username>test</username> </ns4:basemessage> <ns4:payload/> </ns4:eventinteractiontrackingrequest> xsl code: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:dp="http://www.datapower.com/extensions" xmlns:ns1="http://example.com" xmlns:xsl="http://www.w3.org/1999/xsl/transform" extension-element-prefixes="dp" exclude-result-prefixes="dp" extension-element-prefix="*" version="1.0"> <xsl:template match="/"> <xsl:choose> <xsl:when test="string-length(//payload)!=0"> <xsl:copy-of select="." /> </xsl:when> <xsl:otherwise> <xsl:message dp:priority="error">payload data not present.</xsl:message> <dp:reject>empty paylod </dp:reject> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
first, input show declares: xmlns:ns2="http://example.com"
- prefix used ns4
. cannot work.
assuming that's typo, next problem ignoring payload's namespace. since have declared namespace in stylesheet xmlns:ns1="http://example.com"
, need change test:
<xsl:when test="string-length(//payload)!=0">
to:
<xsl:when test="string-length(//ns1:payload)!=0">
or just:
<xsl:when test="string(//ns1:payload)">
or - since payload complex type - test for:
<xsl:when test="//ns1:payload/node()">
Comments
Post a Comment