RTEフィールドに空の「href」属性を持つリンクが含まれている場合に「Xsl file could not be processed」レンダリング エラーが発生する


解説

ハイパーリンクを含むリッチ テキスト フィールドをレンダリングすると、以下のエラーで失敗する場合があります。

ERROR A rendering error occurred: Xsl file could not be processed (details: System.Xml.Xsl.XslTransformException: An error occurred during a call to extension function 'field'. See InnerException for a complete description of the error. ---> System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
   at System.String.Substring(Int32 startIndex, Int32 length)
   at Sitecore.Pipelines.RenderField.SetAnchorsPositionInLinks.CheckLinks(String text)
   at Sitecore.Pipelines.RenderField.SetAnchorsPositionInLinks.Process(RenderFieldArgs args)
   at (Object , Object )
   at Sitecore.Pipelines.PipelineMethod.Invoke(Object argument)
   at Sitecore.Pipelines.CoreProcessor.Invoke(Object argument)
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args)
   at Sitecore.Pipelines.CorePipeline.Run(String pipelineName, PipelineArgs args)
   at Sitecore.Web.UI.WebControls.FieldRenderer.RenderField()
   at Sitecore.Web.UI.WebControls.FieldRenderer.Render()
   at Sitecore.Xml.Xsl.XslHelper.field(String fieldName, XPathNodeIterator iterator, String parameters)
   --- End of inner exception stack trace ---
   at System.Xml.Xsl.Runtime.XmlExtensionFunction.Invoke(Object extObj, Object[] args)
   at System.Xml.Xsl.Runtime.XmlQueryContext.InvokeXsltLateBoundFunction(String name, String namespaceUri, IList`1[] args)
   at <xsl:template match="*">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current)
   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 Mvp.Xml.Common.Xsl.MvpXslTransform.TransformToWriter(XmlInput defaultDocument, XsltArgumentList xsltArgs, XmlWriter targetWriter)
   at Mvp.Xml.Common.Xsl.MvpXslTransform.Transform(XmlInput input, XsltArgumentList arguments, XmlOutput output)
   at Sitecore.Web.UI.WebControls.XslFile.DoRender(HtmlTextWriter output, Item item))

この問題は、リンクのhref属性に値がない場合に発生します。

<a href="">linktext</a>

解決策

この問題を解決するには、以下のオプションのいずれかを検討してください。