xml - How do I check State Code if it has four characters and then transform it to 2 character code? -
what trying check in xml document element
<driverslicensestate word="cdon">ontario</driverslicensestate>.
if state code found 4 characters , begins ‘cd’ display last 2 characters. in case (example) display <nc:jurisdictioncanadianprovincecode>on</nc:jurisdictioncanadianprovincecode>
i not sure how add logic this.
xml document
<integration xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:tsg="http://tsgweb.com" xmlns:ixml="http://tsgweb.com" xmlns:cmcodequeryhelper="urn:cmcodequeryhelper" packageid="ixml case notification test" messageid="67077793" xmlns=""> <party id="8265760" internalpartyid="392728694"> <partyname id="4614549" current="true" internalnameid="1612416995"> <nametype>standard</nametype> <namefirst>ismael</namefirst> <namelast>montemayor-lira</namelast> <formattedname>montemayor-lira, ismael</formattedname> </partyname> <driverslicense current="true"> <driverslicensenumber>321456782541a</driverslicensenumber> <driverslicensestate word="cdon">ontario</driverslicensestate> </driverslicense> </party> </integration> xslt
<xsl:template name="chargedetails"> <nc:identificationjurisdiction> <nc:jurisdictioncanadianprovincecode> <xsl:for-each select="/integration/party/driverslicense[@current='true']/driverslicensestate"> <xsl:if test="/integration/party/driverslicense[@current='true']/driverslicensestate[@word]"> <xsl:value-of select="substring(/integration/party/driverslicense[@current='true']/driverslicensestate/@word, 1, 2)"/> </xsl:if> </xsl:for-each> </nc:jurisdictioncanadianprovincecode> </nc:identificationjurisdiction> </xsl:template>
your code uses wrong xpath expressions, suppose. in addition, attribute @current written current in xml.
providing xpath expression in xsl:for-each ok, following code snippet should display desired result:
<xsl:template name="chargedetails"> <nc:identificationjurisdiction> <nc:jurisdictioncanadianprovincecode> <xsl:for-each select="/integration/party/driverslicense[@current='true']"> <xsl:if test="driverslicensestate[string-length(@word) = 4 , substring(@word,1,2) = 'cd']"> <xsl:value-of select="substring(driverslicensestate/@word, 3, 2)"/> </xsl:if> </xsl:for-each> </nc:jurisdictioncanadianprovincecode> </nc:identificationjurisdiction> </xsl:template> calling xsl:for-each inside destination element sounds bit strange. maybe want interchange them.
Comments
Post a Comment