0

我已经创建了 .ascx 用户控件,并且正在尝试找到一种将其包含到 xslt 渲染中的方法。我怎样才能做到这一点?我正在为 Sitecore 做这件事。我想也许可以创建一个占位符,但不能在渲染中定义占位符。感谢您提供的任何帮助。

4

2 回答 2

1

不可能将 ASCX 文件包含到 xslt 文件中,因为: XSLT 将 XML 转换为 HTML 或 XML 或纯文本,但不能转换为 ASP.NET 页面。

您可以将 xslt 文件包含到 ascx 中,但不能将 ascx 包含到 xslt 文件中。最好的方法是将您的 xslt 文件更改为 ascx 文件,并使用占位符或直接将 . 我建议避免使用 XSLT。

它们看起来很容易使用,但重构代码真的很难。

于 2013-10-08T06:46:50.997 回答
1

好吧,不可能直接从 XSLT 文件调用用户控件 (.ascx)。但是,根据您想要实现的目标,您可以从 XSLT 文件调用 .net 方法,称为 XSLT 扩展方法。例如,您可能需要编写类似于下面的代码来调用自定义 .Net GetData() 方法。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:customObject="urn:yourNamespace">
    <new-data>
              <xsl:value-of select="customObject:GetData()"/>        
    </new-data>
...

当然类型需要注册后才能使用。类型注册可以在 web.config 中完成,也可以通过调用XSLTArgumentList类的AddExtensionObjectMethod来动态完成。

Sitecore 也提供 XSLT 扩展控件,与扩展方法不同,它不是 .net 功能。XSL 扩展控件是 XSL 呈现中对应于 .NET 类的 XML 元素。例如,XSL 扩展控件对应于 Sitecore.Web.UI.XslControls.Text .NET 类。它将在 XSLT 文件中使用如下内容:

XSL 扩展控件是 XSL 代码中的独立元素。

要注册自定义类型,请将以下内容添加到web.config 中的元素:

<extension mode="on" type="NamespaceName.ClassName, AssemblyName" namespace="http://www.w3.org/1999/XSL/Transform" singleInstance="true"/>

参考:http ://sdn.sitecore.net/upload/sitecore6/64/presentation_component_xsl_reference_sc62-64-a4.pdf

于 2013-10-15T04:07:33.810 回答