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

Popular posts from this blog

ASP.NET/SQL find the element ID and update database -

jquery - appear modal windows bottom -

c++ - Compiling static TagLib 1.6.3 libraries for Windows -