I am trying to edit a current XSLT. The functionality I want is when the value of "//code_no" ends with 01 I want to edit the current city location. Currently this functionality does not exist. I have tried using string and substring but it gives me an error saying ends with functionality does not exist. Please help
The value coming from the xml is
<code_no> 1870410001 </code_no>
in the xsl, I want to print this when the value ends with 01.
<td align="left" width="33%"><SPAN style="font-size: 12pt; font-family: Arial;"> <a> <b><u><xsl:value-of select="//city"/>, <xsl:value-of select="//state"/> </u></b></a></SPAN></td>
Include the attribute Method="text" on the xsl:output tag and include newlines in your literal content in the XSL at the appropriate points. If you prefer to keep the source code of your XSL tidy use the entity where you want a new line. Show activity on this post. if you write this in file e.g.
Definition and Usage. The <xsl:number> element is used to determine the integer position of the current node in the source. It is also used to format a number.
XSLT <xsl:text> The <xsl:text> element is used to write literal text to the output. Tip: This element may contain literal text, entity references, and #PCDATA.
The XSLT processor operates on two inputs: the XML document to transform, and the XSLT stylesheet that is used to apply transformations on the XML. Each of these two can actually be multiple inputs.
The XPath 1.0 equivalent of (the XPath 2.0) expression:
ends-with($s, $t)
is:
$t = substring($s, string-length($s) - string-length($t) +1)
You need just to substitute $s
and $t
in the last XPath expression with, respectively, the string to be tested, and the ending to be tested.
Here is a complete example:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="x|y"> <xsl:value-of select="name()"/> ends-with '_01': <xsl:value-of select= "'_01' = substring(., string-length() - 2)"/> ============= </xsl:template> </xsl:stylesheet>
when this transformation is applied on the following XML document (none was provided in the question!!!):
<t> <x>abcd_01</x> <y>abcd_11</y> </t>
the wanted, correct result is produced:
x ends-with '_01': true ============= y ends-with '_01': false =============
I used
contains($string, $part) and normalize-space(substring-after($string, $part)) = ''
Where
we are checking if $string ends with $part
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With