I have a template with 4 tabs, each tab has 3 properties (featureOneTitle, featureOneBody, featureOneUrl) each tab the word one increments to the appropriate value ie: Two, Three...
I am trying to make a macro using xslt which will accept a value (featureOneUrl, etc). This macro will then create a hyper link, I can't work out two things...
1) How to accept a paramater for a macro in xslt.
2) Why the XSLT below is not working.
[code][/code]
Error:
[code]System.OverflowException: Value was either too large or too small for an Int32.
at System.Convert.ToInt32(Double value)
at System.Double.System.IConvertible.ToInt32(IFormatProvider provider)
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 Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results)
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer, Boolean closeWriter)
at System.Xml.Xsl.XmlILCommand.Execute(IXPathNavigable contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter results)
at System.Xml.Xsl.XmlILCommand.Execute(IXPathNavigable contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, TextWriter results)
at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, TextWriter results)
at umbraco.presentation.webservices.codeEditorSave.SaveXslt(String fileName, String oldName, String fileContents, Boolean ignoreDebugging) in d:\inetpub\wwwroot\ccnet\Source\Umbraco 3.1\umbraco\presentation\umbraco\webservices\codeEditorSave.asmx.cs:line 124[/code]
where paramAlias the alias of the parameter you've defined for the macro
2/
[code][/code]
is not the same as
[code]
[/code]
(Mind the capitalization)
Error is due to the fact that when xslt are saved, they're checked against a node (top level node) which might or might not have that property defined! And even if that property exists, it doesn't have a value when saving the value. Solution is to surround the statement with an xsl:if statement as snippet below:
NiceUrl Macro
~Umbraco v4
I have a template with 4 tabs, each tab has 3 properties (featureOneTitle, featureOneBody, featureOneUrl) each tab the word one increments to the appropriate value ie: Two, Three...
I am trying to make a macro using xslt which will accept a value (featureOneUrl, etc). This macro will then create a hyper link, I can't work out two things...
1) How to accept a paramater for a macro in xslt.
2) Why the XSLT below is not working.
[code][/code]
Error:
[code]System.OverflowException: Value was either too large or too small for an Int32.
at System.Convert.ToInt32(Double value)
at System.Double.System.IConvertible.ToInt32(IFormatProvider provider)
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 Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results)
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer, Boolean closeWriter)
at System.Xml.Xsl.XmlILCommand.Execute(IXPathNavigable contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter results)
at System.Xml.Xsl.XmlILCommand.Execute(IXPathNavigable contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, TextWriter results)
at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, TextWriter results)
at umbraco.presentation.webservices.codeEditorSave.SaveXslt(String fileName, String oldName, String fileContents, Boolean ignoreDebugging) in d:\inetpub\wwwroot\ccnet\Source\Umbraco 3.1\umbraco\presentation\umbraco\webservices\codeEditorSave.asmx.cs:line 124[/code]
Hi,
1/ Accepting parameters in the xslt
where paramAlias the alias of the parameter you've defined for the macro
2/
[code][/code]
is not the same as
[code]
[/code]
(Mind the capitalization)
Error is due to the fact that when xslt are saved, they're checked against a node (top level node) which might or might not have that property defined! And even if that property exists, it doesn't have a value when saving the value. Solution is to surround the statement with an xsl:if statement as snippet below:
[code]
[/code]
Hope this helps.
Regards,
/Dirk
Thank you very much.
is working on a reply...