I'm just developing our first website using version 7 and loving it so far, however I seem to be having a slight challenge with regard one of the XSLT's that I have used previously. Basically it is a list that incorporates images taken from media and selected per page. The code below was taken from a version 4 site and works fine however when I try to incorporate it into our ver7 site it falls over when saving.
This is the code I am attempting to use, please note that the ID product has been updated to reflect my ID in the ver 7 site...
Thanks for the advise. I have just changed the code as suggested and I am getting the same error as before, I have copied the error below:
System.OverflowException: Value was either too large or too small for an Int32. at System.Convert.ToInt32(Double value) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Xml.Xsl.Runtime.XmlQueryRuntime.ChangeTypeXsltArgument(XmlQueryType xmlType, Object value, Type destinationType) at System.Xml.Xsl.Runtime.XmlQueryContext.InvokeXsltLateBoundFunction(String name, String namespaceUri, IList`1[] args) at(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) at Root(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer) at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, TextWriter results) at umbraco.macro.GetXsltTransformResult(XmlDocument macroXml, XslCompiledTransform xslt, Dictionary`2 parameters) at umbraco.presentation.umbraco.developer.Xslt.xsltVisualize.visualizeDo_Click(Object sender, EventArgs e)
I would be really interested to understand why the original code worked on a different website and not on this one, it may also help other fellow XSLT newbies.
Could you plase mark this as solved, so others can see which code snippet that works. You have a green tick under the name of a author on each comment? That is the mark solution button so should be clicked only on the correct solution.
Referencing Media Items in XLST's - not working
Hi guys,
I'm just developing our first website using version 7 and loving it so far, however I seem to be having a slight challenge with regard one of the XSLT's that I have used previously. Basically it is a list that incorporates images taken from media and selected per page. The code below was taken from a version 4 site and works fine however when I try to incorporate it into our ver7 site it falls over when saving.
This is the code I am attempting to use, please note that the ID product has been updated to reflect my ID in the ver 7 site...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:umbraco.contour="urn:umbraco.contour" xmlns:tagsLib="urn:tagsLib" xmlns:BlogLibrary="urn:BlogLibrary"
exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets umbraco.contour tagsLib BlogLibrary ">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<xsl:template match="productImage">
<img src="{.}" />
</xsl:template>
<xsl:template match="/">
<!-- The fun starts here -->
<xsl:for-each select="$currentPage/ProductCategoryList [@isDoc and string(umbracoNaviHide) != '1']">
<xsl:sort select="@updateDate" order="descending" />
<div class="newspagearticlehold">
<div class="portfoliolist">
<div class="portleft">
<h2> <a href="{umbraco.library:NiceUrl(@id)}"><xsl:value-of select="@nodeName"/></a></h2>
<div class="portfoliotagsprolist">
<ul>
<li>Client Name: <span class="space"><xsl:value-of select="clientName"/></span></li>
<li>Nature of Project: <span class="space"><xsl:value-of select="natureOfTheProject"/></span></li>
</ul>
</div><!--portfoliotags-->
<a href="{umbraco.library:NiceUrl(@id)}"><span class="bigredbutton">READ MORE</span></a>
</div>
<div class="portfolio
image">
<a href="{umbraco.library:NiceUrl(@id)}"><xsl:variable name="media" select="umbraco.library:GetMedia(productImage, 0)"/>
<xsl:if test="$media">
<xsl:variable name="url" select="$media/umbracoFile"/>
<xsl:variable name="width" select="$media/umbracoWidth"/>
<xsl:variable name="height" select="$media/umbracoHeight"/>
<img src="{$url}" width="width" height="height"/>
</xsl:if>
</a>
</div>
</div>
</div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Cheers for your help guys.
Hi Brian,
I have just looked at your code, and one thing I notice is the way you call the GetMedia() in your XSLT.
Try to change:
To this:
I hope this will work for you.
/Dennis
Hi Dennis,
Thanks for the advise. I have just changed the code as suggested and I am getting the same error as before, I have copied the error below:
System.OverflowException: Value was either too large or too small for an Int32. at System.Convert.ToInt32(Double value) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Xml.Xsl.Runtime.XmlQueryRuntime.ChangeTypeXsltArgument(XmlQueryType xmlType, Object value, Type destinationType) at System.Xml.Xsl.Runtime.XmlQueryContext.InvokeXsltLateBoundFunction(String name, String namespaceUri, IList`1[] args) at(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) at Root(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer) at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, TextWriter results) at umbraco.macro.GetXsltTransformResult(XmlDocument macroXml, XslCompiledTransform xslt, Dictionary`2 parameters) at umbraco.presentation.umbraco.developer.Xslt.xsltVisualize.visualizeDo_Click(Object sender, EventArgs e)
To confirm, my code now reads as per below:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:umbraco.contour="urn:umbraco.contour" xmlns:tagsLib="urn:tagsLib" xmlns:BlogLibrary="urn:BlogLibrary"
exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets umbraco.contour tagsLib BlogLibrary ">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<xsl:template match="productImage">
<img src="{.}" />
</xsl:template>
<xsl:template match="/">
<!-- The fun starts here -->
<xsl:for-each select="$currentPage/ProductCategoryList [@isDoc and string(umbracoNaviHide) != '1']">
<xsl:sort select="@updateDate" order="descending" />
<div class="newspagearticlehold">
<div class="portfoliolist">
<div class="portleft">
<h2> <a href="{umbraco.library:NiceUrl(@id)}"><xsl:value-of select="@nodeName"/></a></h2>
<div class="portfoliotagsprolist">
<ul>
<li>Client Name: <span class="space"><xsl:value-of select="clientName"/></span></li>
<li>Nature of Project: <span class="space"><xsl:value-of select="natureOfTheProject"/></span></li>
</ul>
</div><!--portfoliotags-->
<a href="{umbraco.library:NiceUrl(@id)}"><span class="bigredbutton">READ MORE</span></a>
</div>
<div class="portfolioimage">
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:variable name="media" select="umbraco.library:GetMedia(./productImage, 0)"/>
<xsl:if test="./productImage !=''">
<xsl:variable name="url" select="$media/umbracoFile"/>
<xsl:variable name="width" select="$media/umbracoWidth"/>
<xsl:variable name="height" select="$media/umbracoHeight"/>
<img src="{$url}" width="{$width}" height="{$height}"/>
</xsl:if>
</a>
</div>
</div>
</div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Hi Brian,
Okay then try to change this line:
To this and see if it goes better this time.
Hope this helps,
/Dennis
Dennis, you are a good man! that worked fine :)
I would be really interested to understand why the original code worked on a different website and not on this one, it may also help other fellow XSLT newbies.
Cheers
Bri
Hi Brian,
That is great to hear.
Could you plase mark this as solved, so others can see which code snippet that works. You have a green tick under the name of a author on each comment? That is the mark solution button so should be clicked only on the correct solution.
/Dennis
is working on a reply...