xml - set size of image with xsl -
i have xml contains img tag
<xml> <img src="/path/to/file.jpg" orginalwidth="150" /> </xml> i want have:
<img src="/paht/to/file.jpg" size=size /> where size minimum of orginalsize , 100px
this transformation:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:param name="pmaxsize" select="100"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="@orginalwidth"> <xsl:attribute name="size"> <xsl:value-of select=".*not(. > $pmaxsize) + $pmaxsize*(. > $pmaxsize)"/> <xsl:text>px</xsl:text> </xsl:attribute> </xsl:template> </xsl:stylesheet> when performed on provided xml document:
<xml> <img src="/path/to/file.jpg" orginalwidth="150" /> </xml> produces wanted result:
<xml> <img src="/path/to/file.jpg" size="100px"/> </xml> when applied on following xml document:
<xml> <img src="/path/to/file.jpg" orginalwidth="99" /> </xml> the result again wanted , correct one:
<xml> <img src="/path/to/file.jpg" size="99px"/> </xml> explanation:
in xpath 1.0 boolean value, when used number converted true() 1 , false() 0.
therefore, expression:
.*not(. > $pmaxsize) + $pmaxsize*(. > $pmaxsize) evaluates . if . less or equal $pmaxsize , $pmaxsize otherwize.
. value of current node interpreted number.
Comments
Post a Comment