Tridion 将XSLT TBB中的tcmse:PublishBinary与XSLT中介器一起使用时出错

Tridion 将XSLT TBB中的tcmse:PublishBinary与XSLT中介器一起使用时出错,tridion,tridion-2011,tridion2009,Tridion,Tridion 2011,Tridion2009,我正在SDL Tridion 2011 SP1中处理XSLT TBB。我正在使用从Tridion站点下载的XSLT中介 我创建了一个TBB来检索图像,如下所示: 我得到的错误是 [CDATA[Unable to retrieve rendered data from Component Presentation.]]> </tcm:Line> <tcm:Line ErrorCode="80040000" Cause="true"> <![CDA

我正在SDL Tridion 2011 SP1中处理XSLT TBB。我正在使用从Tridion站点下载的XSLT中介

我创建了一个TBB来检索图像,如下所示:


我得到的错误是

  [CDATA[Unable to retrieve rendered data from Component Presentation.]]>
</tcm:Line>
<tcm:Line ErrorCode="80040000" Cause="true">
    <![CDATA[
     Cannot find a script or an extension object associated with namespace
     'http://www.tridion.com/ContentManager/5.1/TcmScriptAssistant'.]]
[CDATA[无法从组件演示文稿检索渲染数据。]]>
我知道这个问题是由于
'http://www.tridion.com/ContentManager/5.1/TcmScriptAssistant"

有人能提出克服它所需的修改吗

我是否需要更改TBB或组件模板中的任何内容


谢谢。

tcmse:PublishBinary不是由XSLT中介实现的。这是默认XSLT模板引擎的功能,而不是中介引擎

要使用XSLT中介发布二进制文件,请执行以下操作:


然后确保使用默认的完成操作,或者至少使用“从HTML提取二进制文件”和“在包中发布二进制文件”TBB


(取自)

tcmse:PublishBinary不是由XSLT中介实现的。这是默认XSLT模板引擎的功能,而不是中介引擎

要使用XSLT中介发布二进制文件,请执行以下操作:


然后确保使用默认的完成操作,或者至少使用“从HTML提取二进制文件”和“在包中发布二进制文件”TBB


(摘自)

XSLT中介允许您向XSLT扩展对象添加新方法,您可以在XSLT中介包中提供的“XSLT模板助手”类中找到它

要使用它,您需要添加“http://www.sdltridion.com/ps/XSLTHelper“XSLT模板中的命名空间,如xmlns:ext=”http://www.sdltridion.com/ps/XSLTHelper“

PublishBinary方法的示例如下所示

公共字符串PublishBinary(字符串tcmUri)
{
组件mComponent=新组件(新TcmUri(TcmUri),会话);
二进制=engine.PublishingContext.RenderItem.AddBinary(mComponent);
返回binary.Url;
}
公共字符串PublishBinary(字符串tcmUri,字符串sgTcmUri)
{
组件mComponent=新组件(新TcmUri(TcmUri),会话);
StructureGroup sg=新结构组(新TcmUri(sgTcmUri),会话);
二进制=engine.PublishingContext.RenderItem.AddBinary(mComponent,sg);
返回binary.Url;
}
你可以像这样使用这些方法


XSLT中介允许您向XSLT扩展对象添加新方法,您可以在XSLT中介包中提供的“XSLT模板助手”类中找到它

要使用它,您需要添加“http://www.sdltridion.com/ps/XSLTHelper“XSLT模板中的命名空间,如xmlns:ext=”http://www.sdltridion.com/ps/XSLTHelper“

PublishBinary方法的示例如下所示

公共字符串PublishBinary(字符串tcmUri)
{
组件mComponent=新组件(新TcmUri(TcmUri),会话);
二进制=engine.PublishingContext.RenderItem.AddBinary(mComponent);
返回binary.Url;
}
公共字符串PublishBinary(字符串tcmUri,字符串sgTcmUri)
{
组件mComponent=新组件(新TcmUri(TcmUri),会话);
StructureGroup sg=新结构组(新TcmUri(sgTcmUri),会话);
二进制=engine.PublishingContext.RenderItem.AddBinary(mComponent,sg);
返回binary.Url;
}
你可以像这样使用这些方法



谢谢您的回答。如果可能,还可以提供RenderComponentPresentation方法的代码。一个小小的疑问。我现在只需要在XSLT TBB中添加提到的名称空间。是的,您只需要添加提到的名称空间。请注意,在我的代码示例中,我使用的是引擎、包和会话对象,因为XSLT中介是开源的,您可能需要对其进行一些修改,以便将这些属性添加到帮助器中。谢谢您的回答。如果可能,还可以提供RenderComponentPresentation方法的代码。一个小小的疑问。我现在只需要在XSLT TBB中添加提到的名称空间。是的,您只需要添加提到的名称空间。请注意,在我的代码示例中,我使用的是引擎、包和会话对象,因为XSLT中介是开源的,您可能需要稍微修改它,以便将这些属性添加到帮助器中。